In response to Neil Chaudhuri on TheServerSide.com: “I would love to hear your thoughts on this topic. How can I convince my management not to abandon Java?” Well, here are my thoughts.
“Too many frameworks”
While Java does have too many frameworks, your organization can consider the following broadest enterprise frameworks that consolidate Web and Persistence frameworks within for simplicity, etc.:
1. Open source lightweight Spring Framework which includes Spring MVC and Spring JDBC (Also works well with Hibernate or iBatis persistence frameworks). Furthermore, Spring can be extended to support dynamic Java scripting languages like Groovy, BeanShell, JRuby and more.
2. Emerging open source lightweight JBoss Seam, a Java EE 5 centric enterprise framework, that consists of JSF and EJB 3 (or Hibernate) frameworks.
“Too many IDEs… all with weaknesses”
There are lots of IDEs, too. But sticking to open source, there’s Eclipse, NetBeans, and IntelliJ. If you want to go with the one best IDE/general Java framework that supports both Sun standards and open source projects, go with Eclipse. Eclipse supports Sun’s Java standards while at the same time extending/embracing open source Java plug-ins and features which includes such open source projects as Apache Ant (build tool), Jboss Eclipse IDE, Spring IDE for Eclipse, and much more.
“Too many infrastructure component possibilities”
Again, if it’s just a simple Web application, go with Apache Tomcat, by far the most widely used Web app server in deployment in Java. It’s essentially the standard.
Now, if it’s a more complex, transaction-based Java application, deploy using one of the following:
1. Apache Geronimo is an an open source lightweight J2EE/Java EE 5/Spring compliant Web application server that integrates Apache Tomcat already. While it’s relatively new, IBM has already adopted it as part of their WebSphere Community Edition. And if you use Spring, you’re probably better off going with Geronimo.
2. JBoss J2EE Web app server is the original open source J2EE deployment tool, and is now becoming more and more widely used. If you develop using JBoss Seam, then this app server may be the best.
I don’t agree with Neil’s thoughts on this. Open Source energy is what has saved and innovated Java. While it may seem fragmented, there are clearly enough leaders in innovation and corporate vendor community backing to make open source the key asset that Java has over .NET.
It’s really Open Source Java vs. Shared/Closed Source .NET. That’s it - plain and simple. Now, there are open source .NET options popping up, but these are still quite nascent.
“Manifestation of agile methodologies within tools”
Eclipse integrates tools such as Apache Ant (and maybe even Maven) build tool, JUnit testing, and more quite well.
So, if you want to make things as simple and efficient as possible in Java, here is my recommendation:
Use Eclipse IDE (both Spring and JBoss have Eclipse IDE plug-ins) along with Apache Ant, Apache log4j, and JUnit in conjunction with one of the following two enterprise Java path choices:
1. Spring Framework and Apache Geronimo (with Tomcat)
2. JBoss Seam Framework and JBoss J2EE app server (JEMS) (with Tomcat)
Now, the interesting issue of debate of late has not necessarily been Java vs. .NET; instead, it’s becoming Java vs. Ruby on Rails or PHP or other LAMP-based programming language/platform. The vendors such as IBM/Zend and even Oracle and BEA have realized this, and are now supporting PHP for example in their products as noted at JavaOne for example.
Look closely: enterprise LAMP stacks from Zend and others are starting to becoming reality. Are they viable? What does this mean for Java?