I have been a Java Fanboy since its early days. It seemed so elegant and clean compared to good old Perl. I considered PHP a toy language for script kiddies, avoided it as much as possible and addressed problems with my golden hammer JVM instead. My conclusions here may not be news for everybody.
A few months ago, Sandra came up with the idea to try selling individually configured skirts. We decided to dive into the ecommerce experience. The technical part was mine.
Our Ecommerce Requirements
The big blocks of requirements were
- Shop Functionality
- Visual Appeal
- Content Management
Which components from the JVM ecosystem would you pick and how would you glue them together ?
Nothing even slightly – really.
Just looking at Content Management, there is a whole lot of Open Source components at your disposal
- JSR Portals based on ideas such as ‚content aggregation‘
- Content driven page composition frameworks such as Spring Surf
- Full blown Web Content Management Systems such as Magnolia
- Alfresco Platform
- Plugin CMSs like Weceem
All of them introduced more questions than solutions for me. Some of them even failed to deliver answers where I really expected them (e.g. SEO and Content Marketing). Given the size of the JVM ecosystem, I think this is quite amazing and proving there is something seriously going wrong.
Besides, I am no HTML5 expert so I wanted decent HTML page templates. I realized that the product configurator would definitely require a fair amount of coding. I wanted the bulk of the shop ready out of the box – ditto SEO and the social stuff.
If I was forced to implement on the JVM, I most likely would have chosen Grails because of its easy mix and match plugin nature. And because you get to business quickly.
WordPress and PHP Awesomeness
I had some WordPress experience from setting up this blog – mostly with basic administration and configuration. Its plugin model is somewhat similar to Grails – add plugins according to your taste. The vast majority of requirements got reasonably addressed by just installing plugins. The programming model gives developers a lot of freedom – and with great power comes great responsibility. A consequence of this is that chances of conflicts get more likely the more plugins you install.
I knew that I would have to learn the PHP language and tooling in order to implement the configurable product functionality working in WooFramework context. As it turned out, it was needed even more to fix conflict situations – and some bugs in third party code. But even though I was a newbie and PHP not a beautiful hipster language, development was a pleasure ! No compilation, no redeployments, no restarts and no staleness- or caching troubles. Edit in place and test right away. It felt like taking the red pill. I would trade type safety for these features in
web development at any time. PHP focused on doing one thing – web applications. And it succeeded – for good reason. Simplicity. According to Forbes, every sixth Website is powered by WordPress. I am fairly sure the other „smaller“ PHP based systems such as Drupal or Joomla still rank fairly well compared to every JVM based Web Content Management System.
Lessons may have been learned and we have various „high productivity“ web frameworks such as Grails or Play on the JVM today, these are still pretty much focused on applications rather than content. Unfortunately, a large share of websites is focused around content.
Looking at the Web Content Management aspect, JVM based options tend to feel oversized, complex and their development process horrible. With some of them, it seems presentation or marketing is not addressed at all.
The battle for public content driven websites is lost for the JVM. Nevertheless, I still like it a lot. It simply is the best VM out there and there are still a lot of use cases where it out outshines php and other competition.