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 don't think he was talking about running the Java application in the browser, but more in terms of servlets.
And to answer that question, look at the target market of Java. Java is not intended for mom'n'pop websites, or for novice web builders, nor bloggers. Hosting support isn't widespread and is quite expensive. PHP hosts are a dime-a-dozen.
If you can afford large scale Java hosting, you likely are developing your application from scratch using your own development team.
I think the reason you don't see many Open Source Java CMS tools is due to fairly weak Java support with most Web hosting providers. Take a look at the available webhosts, and very few over support for Servlets/JSP. I would think, on average, the most common user of a CMS system would be someone wanting to setup a small to medium website that won't require too much customization outside of the standard package. Of course, the systems available are powerful (Drupal, Plone, Joomla, Nuke), but for the most part the people using them don't need the majority of the powerful customization tools. These are also the same people who would be using Web hosting packages, and not setting up their own servers. Therefore, you have to write it in a language that is almost universally supported by web hosting providers, like PHP.
Of course you're right, but creating a system like Drupal or Joomla yourself is not exactly a small undertaking. These systems have huge user bases and hundreds of tools built to make it easy to setup a site thats perfect for your needs. To write it yourself, you would have to implement a lost of features and security just as a start, and that's not even mentioning the robust search engine optimization, templating engines and page caching.
>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?"
Maybe because Java offers no advantage over writing a system in PHP, which obviously is up to the task based on the successful projects you mention?
Seriously, why would you want to use Java when you don't have to? It's like asking why there is no web browser written in assembly language. Higher level languages get the job done with minimal aggravation and perform well enough that they're not the bottleneck.
PHP was tailor-made for this sort of thing, Java...wasn't.
If moderation could change anything, it would be illegal.
I can't believe you have a UID that low and still don't know the difference between applets and server side Java.
Having a low UID isn't evidence of tech knowlege.
Maggie Leber CCP, SCJP, SCWCD
-=Maggie Leber=-
I write PHP code for a living, and that's exactly my problem with PHP: It doesn't work. At least, not very well.
http://outcampaign.org/
I'll bet the fact that Java has only just become free software, is the reason there are not many Java based free software CMS's
Join the Free Software Foundation
I am a Java developer and I have worked for a commercial CMS vendor. Essentially, the low end of the market is dominated by php for obvious reasons: it's easy to get started and basically any hosting will do since it will run php out of the box. Also that stuff is pretty good: I'm perfectly happy with wordpress for my low end needs.
On the other hand with Java there are no cheap hosting solutions. Basically it requires a a dedicated server solution which will set you back 50-100 $ per month minimum. There are shared hosting facilities but they are still more expensive and don't really give you enough control. People with low end needs won't even consider that as an option, and they shouldn't.
However, there's also such a thing as the high end of the market. Basically php is just one of the many options there and as far as I can see it far from dominates that market. A lot of interesting things are happening in the Java enterprise scene: there is standardization of content repositories (JSR 170) with several commercial and OSS implementations available; there is the portlet standard, which is basically the backbone of many commercial portal servers; there are lots of options for implementing web UI stuff; there is adoption of the cool rails stuff with both groovy and jruby on rails being worked on; etc. Essentially Java is one gigantic toolkit for building web applications now.
Bottom line is that if you are expecting to spend a few thousand dollars on hosting (yearly) and have a budget of say 20K+ for building the web site, you are in the high end of the market. You will want some guarantees about your site not collapsing when a few million people decide to drop by; you'll probably have some old content to migrate and some non trivial functionality that you'd like to have. Chances are that you'll end up using Java. Or rather, chances are that you decide not to reinvent the wheel and use the services of some professional CMS companies.
Jilles
(This is gonna hose my karma, but it's something I feel strongly about so damn the torpedoes, full speed ahead! )
:P
There is a major benefit that Java brings to the table versus PHP and that is security. My inside voice says that the only way to secure a PHP webapp is to delete it. My outside voice says that if you've just got to have a particular PHP package, then fine - that particular PHP package you can have, along with an SSL cert, a site-wide ACL and off-machine logging so that *WHEN* the app gets hacked, you know who to go after.
Some folks don't think that PHP has anything intrinsically wrong with it, that PHP is just trying hard to be an incredibly helpful language, that it's not a bad language - it's just drawn that way. I don't think so. It's got a history of stuff like: "Oh, you provided some URL parameters? Allow me to convert those into variables automagically!" (Yes, yes - this has since been changed but it was around for a long, long time and is still available if you set the proper config variable) "You want to talk to a database? Please, feed me a string and I'll do whatever you want me to do. In fact, if you give me several things to do, I'll do them all!" (Hooray for SQL injection) And on it goes.
I'm sure a case could be made that schlock code written in any language can be abused - but in the typical Java (or Perl, or Ruby, or Python, or some other non-PHP language of your choice) framework you've got to work a lot harder to create exploitable things. PHP is entirely too damn easy to be bitten by unforeseen circumstances - witness the same vulnerabilities being lovingly replicated over and over and over in lots of different projects.
In closing, yes it takes more up-front effort to bang out a simple CRUD app in Java versus what the average tutorial or manual would tell you to do in PHP. But the Java version isn't vulnerable while the PHP version is and will require a net greater expenditure of effort to understand and fix the problem. And that's not talking about the energy burned up by the poor shmucks running the code and having to clean up and rebuild after the app gets owned. (No, I'm not still bitter phpBB, Gallery, Wordpress and PHP-Nuke. Not at all. I don't even miss my data anymore. Nor do I regret having to deal with my account being used to attack other machines. Not one bit.)
James