Open Source CMS Solutions Based on Java?
namityadav asks: "I've been looking for an open source Content Management System (CMS) which is widely used / supported, and has features like web-logging, online communities, RSS feeds, forums, polls, calendars, website searching, and so on. The most obvious choices are Drupal (I've played with it in the past) and Joomla, however both of them are PHP based. Since I am a Java developer, I wanted to find something based on Java. To my surprise, I could find some very weak Java based alternatives to Drupal, like MMBase, OpenCMS and Magnolia. Why is it that there are so many PHP based open source CMS which are hugely successful (Drupal is used by The Onion, Spread Firefox, and more), but there is not even one comparable solution based on Java?"
I'm pretty sure he's talking about java on the server, delivering (x)html+css+javascript to browsers.
"Piter, too, is dead."
This is server side Java... it has nothing to do with applets and you can't "turn it off in your browser". I can't believe you have a UID that low and still don't know the difference between applets and server side Java. You most likely use websites running server side Java everyday (Google, Gmail, Ebay just to name a few).
Seriously, who uses applets for anything anymore?
There are a few out there. Alfresco http://www.alfresco.com/ looks the most interesting.
I agree though, doing a CMS in PHP is such a kludge, it would be good if there were some good solid java alternatives that could match the ease of use of something like Joomla or Drupal. Something using of the of popular frameworks such as Tapestry would be good as well.
As for hosting, there are plenty of VPS services out there that are quite cheap and host server based java applications just fine.
Obviously one would check http://www.opencms.org/
OpenCms is based on Java and XML technology. Therefore it fits perfectly into almost any existing modern IT infrastructure. OpenCms runs in a "full open source" environment (e.g. Linux, Apache, Tomcat, MySQL) as well as on commercial components (e.g. Windows NT, IIS, BEA Weblogic, Oracle DB).
or you can check other Open Source CMS on wikipedia. Comparison of content management system
Not an answer to the OP, but a helpful link to everyone
http://www.opensourcecms.com/
They have online demos of 40+ open source cms's. A nice way to try a few out before installing a cms yourself.
web hosts may provide poor support, but claiming its hard to get tomcat and apache to work together is BS.
setting up tomcat and apache is dead simple.
$> sudo yum install tomcat5 tomcat5-webapps tomcat5-admin-webapps httpd
add proxy mapping for httpd -> tomcat on the ajp protocol in httpd.conf:
[ ProxyPass / ajp://localhost:8009 with httpd 2.2,
mod_jk for earlier httpd ]
add a html file to $TOMCAT_HOME/webapps/ROOT/, name it blah.jsp
browse to your http://webserver/blah.jsp
there ya go, your very first jsp page, set up in minutes.
first time i needed to get this going ( talking tomcat 3.x here, 6+ years ago? ) took less than an hour to google and implement. the bits and pieces have improved over time, and as the above should attest, it isnt rocket scientry these days.
setting up for a production system is only slightly more involved, and typically has more to do with the application itself than the container ( tomcat ), or the java runtime. most off-the-shelf java webapps ( see jira, confluence, wildfire) will have the step-by-step for the particulars of setting up the environment for the specific needs of the application deployment. say.. dont a lot of php apps also require tweaks to the environment? apache and or php.ini? and how many shared hosts allow you to set safe_mode?
developing a full blown cms? well, if the above is beyond you, then you should probably give up on php as well.
the real issue here is that there are very few hosting services who are in the market for java hosting. perhaps the demand isnt there? perhaps most shops deploying java webapps run it all in-house or manage their own hosted environments? java has been my bread and butter for years now, and never once have the customer ( or the company i've worked for) deployed to a managed host. always in house, providing both internal and external access.
one of the things about a php hosted environment is that the provider can lock your app down so it only runs as a low-privilleged user in a shared space ( http server with virtual hosts ). they can build a reasonable server for a grand or so, and charge N clients for shared access to it for bugger all. note here the key is 'shared environment'. the 'dedicated' packages that give you root shell access you are free to install and run whatever you like, in which case, see the above quick steps to setting up tomcat/apache.
applications written in java are typically more complex than php, but then again, they are more likely to perform more complex operations ( see banking & finance industries... and the lack of php therein ).
that said, you can make a java app as complex as you like, with all sorts of crazy requirements of the container, but that doesnt mean you have to. ( same goes for php y'know! )
I have not had a chance to use it past the online demo*, but you might want to check out Apache Lenya
* A contract webmonkey proposed switching to Lenya halfway through a project. As much as I like F/OSS, I decided I'd rather have his existing VB/ASP mess working "on time" (only months late) rather than a nifty Lenya setup ready sometime after I would be fired for still not having delivered the new website...
Here's my guide:
1) Go to http://tomcat.apache.org/download-55.cgi and select your distribution. I assume you are running Windows, so download binary installer.
2) Run installer and click 'Next' until finished.
3) There's no step 3).
You can get Tomcat up and running in minutes and writing JSP pages is very similar to PHP.
Comment removed based on user account deletion
Ok, I know I'm being trolled by a self-styled fanboy, but what things exactly?
No it has not. PHP is still fundamentally the same language it was all the way back in 2002.
And if you're going to argue about versions of PHP, might I also point out that PHP has broken forward compatibility twice . Version 4.4 changed the behaviour of references in an incompatible way, and PHP 5.0 makes many more changes to the core language. This places shared hosting providers in a very difficult position and many simply choose to run the old version 4.3, for which most PHP code was written for.
There are plenty of good open source CMS systems in Java.
At the bank I work at we use OpenCMS.
Magnolia Community Edition is probably better.
Apache Lenya is another CMS written by a well known group but I can't vouch for it
JBoss Nukes is poorly documented but written by JBoss so should be good.
foo mane padme hum
I have trouble defending Java here, but I think PHP is actually worse. I don't know how, but it is.
The only reason for writing anything in PHP is because "worse is better". You write in PHP because everyone thinks (server side software == PHP), and every hosting provider has it... Everyone seems to think PHP is the P in LAMP...
But really, everything "good" that PHP has promotes bad design. Embedding in HTML: Bad design, please separate code from content. Variables don't have to be declared? Great, now you can spend three hours hunting down a typo in a variable. Really, can you name anything that PHP has that Java doesn't that is actually a good thing?
I'd prefer perl/python/ruby, and Java used to be the worst programming language I'd ever used. But PHP is even worse -- a lot worse.
And by the way, Java is a lot higher-level than PHP, for a lot longer. Java was object-oriented from the beginning, and this was sort of tacked on to PHP...
The one reason I use PHP is Drupal. Drupal manages to implement all kinds of ridiculously good design practices which technically aren't supported by the language. It does object-oriented programming without dealing with PHP objects, so it can run on older versions of PHP. It even does some things you'd expect to require LISP...
I've learned to give up the language holy wars unless I'm prepared to start from scratch. I don't like that Linux is written in C, but if I do kernel hacking, it's C. I don't like that Drupal is in PHP, but if I want to mess with a CMS, I use PHP. When I'm writing from scratch, at least for now, I use Perl, but that's just because it's the best that I know reasonably well.
Don't thank God, thank a doctor!