Thursday, May 01, 2008

Follow-up to recent Java post...

Note to myself - Don't publish a blog post which is likely to get broad feedback before going on holiday :)

My recent post "Java is losing the battle for the modern Web. Can the JVM  save the vendors?" has made its way through the blogosphere and I have received an overwhelming amount of both positive feedback and criticism. It also spawned some interesting threads on several forums including on one of the most popular Java community sites, TheServerSide.com, on entwickler.com, one of Germany's most popular developers sites (lucky I speak German) and on a large amount of blogs.

As I can't answer all the feedback I received I do want to at least clarify a few points.

Foremost, it is important to understand that this was not a general attack against Java as a language. There are many benefits to Java and many tasks which I would use Java for. Also despite me being primarily a C/C++ developer at heart a lot of PHP 5's object model was inspired by Java as it is significantly cleaner and more elegant than what you find in C++ (*duck*). However, I do also have experience in writing J2EE applications including managing teams of Java developers on large scale projects with the good and the bad. Am I the best Java developer on the block? No. But I do think I have spent enough time with J2EE (oops, sorry, Java EE) and with customers who are significantly invested in Java to have a good idea of its advantages and disadvantages.

Without reiterating what I said in my previous post the blog post by Coach Wei, CTO of Nexaweb really sums it up. Like it or not, agree or not, dynamic languages on the LAMP stack in all of its permutations have captured the modern Web for many reasons which I already mentioned in my previous post.

In addition, we are seeing a large number of our prospects choose PHP due to huge cost savings and availability of resources (both in house and application development firms), with the understanding that LAMP-based architectures are proven and deployed both on some of the most scalable Web sites (e.g. Facebook & Yahoo!) and in mission-critical Enterprise environments (Fiat pushes 5 billion Euro through a PHP application every year).

So if this is a proven paradigm, with a huge community, why are the large Java vendors so focused at the JVM as opposed to embracing hybrid applications with LAMP and Java side-by-side, e.g. LAMP for the Web application and Java for the back-end transaction management, service bus, etc...? As I mentioned I don't believe the answer is as much the good of the customer as it's a matter of control. The investments some of the vendors have made in deploying and managing to the JVM are significant.  Their sales reps would be frustrated if dozens of their products which significantly increased the Java EE deal size would now not be relevant to the LAMP-side of the house. So at the end of the day I believe it ends up being a financial decision for the vendors and not what would most benefit the customer.In my previous post I pointed out why I think ports of the popular dynamic languages to the JVM will not deliver the same result as supporting the native versions and joining those communities.

P.S. answers to some of the feedback which repeated itself:

- Some readers understood that I was saying that multi-cores only benefit PHP and not Java. My comment was misunderstood.In the past, the Java vendors believed that the lack of multi-threading support in dynamic languages would not enable them to take advantage of technologies such as hyper-threading. My point was that now that the industry is primarily investing in multi-core technologies (because unfortunately they can't figure out how to make CPUs any faster) this disadvantage goes away. I realize that Java can also take full advantage of multi-core technologies.

- I got feedback that the stability advantages of the LAMP stack are only relevant if you have bad developers. Not only do I believe that appealing to less experienced developers is a huge advantage (which Microsoft has also traditionally enjoyed) but I don't subscribe to the notion that experienced developers don't screw up. There are many experienced Java EE developers who open threads in the app server when they aren't supposed to because it's the most sane way of achieving a task, have a synchronization blunder, or have forgotten to release a reference to some data. Developers are not perfect beasts and never will be so my point was that the LAMP architecture does protect you from many of these issues as a result of its shared nothing architecture.

- I was asked when Eclipse would be written in PHP. Again I am not opposed to Java on all fronts but mainly feel it's got a low ROI when it comes to modern Web applications. At Zend we use Java for our Zend Studio product line, and in general, the reason why PHP has been so successful is because we only focus on doing one thing - powering Web applications.

On Monday I'll be giving a talk regarding PHP and Rich Internet Applications at CommunityOne. Feel free to catch me after my session...

Andi