There's been a lot of discussion in the blog community lately about the lack of a good Content Management System (CMS) platform written in Java. The most popular opinion is that the PHP CMS platforms are superior to anything available in Java. A relative new-comer to this space which warrants consideration for anyone needing a CMS is the
JetNuke project. JetNuke is a near-complete Java port of the popular PHP CMS
PHPNuke. JetNuke's author is Andrea Mazzolini. JetNuke is licensed under the GPL open source license.
Some of the features you get with JetNuke out of the box include multilingual support, separation of logic, data, and style, 7 predefined styles or themes, and graphical web-based administration. JetNuke runs on Tomcat 4.x or later, JDK 1.4.x or later, and MySql 4 or later.
The architecture of the pages is divided into modules and blocks. A module defines content for the main part of the page. The module content is located in the center of a page. Blocks provide content for the left and right columns of the page. The module can be thought of as providing the main functionality of a page, while the blocks provide access to other features of your site. The blocks are viewable on all the pages of your site. Typically, only one module is viewable on each page.
Predefined modules include news/articles, forum, private messages, administration, link and download directory, surveys, statistics, member list, sections, faq, encyclopedia, reviews, and statistics.
Predefined blocks include modules, login, admin, advertising, RSS feed, content, online users, http referers, search, survey, and top 10 links.
Static blocks can easily be created through the web interface, or by editing configuration files. Dynamic blocks are created by specifiying them in an xml file and extending a block interface to create the dynamic Java backend. Again, for a developer the process is very simple. There is a similar interface and configuration for creating custom modules. The presentation of both blocks and modules is specified using the
Jakarta Velocity Template Language. This makes customizing and extending the CMS very simple.
The overall presentation them of a JetNuke site is customizable as well. A theme is defined in a set of 4 velocity template files. The theme can also specify a CSS stylesheet, and any included images.
Instead of writing the CMS from scratch, and trying to be the best at everything that goes into a CMS, many of the key functionalities of JetNuke are provided by other highly rated open source projects. The Jakarta Velocity project has already been mentioned as one project that JetNuke relies on.
JetNuke uses
FCKEditor to edit HTML content. The FCKEditor is another very nice open source project. It features include text formatting, cut-paste, undo, link creation, image insertion, table creation and editing, and auto html clean-up of text pasted from Word. The editor makes editing HTML content simple for any web user.
Forums are provided by integration with the
JForum project. JForum is yet another open source project. Likewise, the news aggregation functionality is supported by yet another open source component, that being the
Informa project. Informa supports aggregation of RSS, RDF, and Atom feeds.
Internationalization is provided out-of-the-box for English, Italian, Spanish, Portuguese, French, and Farsi.
Its is very easy to get the CMS up and running immediatly after downloading it. Even the database is built for you automatically on first start-up. All the configuration is in very simple XML files. There are no large bloated configuration files like you might find in similar efforts at creating a CMS.
The site is administered using a very nice graphical administration page for configuring all aspects of the site.
Personally, I have not used this CMS for any live project, beyond evaluation, but after having evaulated it from a user and developer perspective, I would not be afraid to recommend JetNuke for future CMS projects. I believe this project certainly belongs on your short list of CMS's to evaluate. I believe this CMS would make a great platform for your small company intranet site, hobby site, group/club site, family site, etc.
Until next time,
Tim