Breaking News

Your Java is not My Java – A Paradox of Choice!

TechnoparkToday.com : In the late 1990s, If someone says that he is good at “Core Java”, for all practical purpose, it was synonymous with I don’t do Enterprise Java Beans (EJB). Technologies like Servelets, JSP and JEE were new and it was a twin problem of execution overload (for systems) and a cognitive overload (for developers) to learn EJB ( thus, JEE, then known as J2EE)

After couple of revisions, people liked the JEE stack, with EJB as the Component model. They were mostly worried about the repetitive code which is mandatory to be written for making a Java class, an EJB compliant,to be in a position to execute within the context of a JEE Server (Container). Since Java was a “quasi” open technology standard (JSRs), there were multiple vendors who offered JEE compliant servers. They were Sun (acquired by Oracle),IBM,BEA (acquired by Oracle),Oracle,JBOSS (later acquired by Redhat) etc.

Bolt from the blue, Rod Johnson, an Australian Programmer,came up with Spring. Her stepped back a bit and understood that by leveraging Java Reflection API, Hibernate and some design principles, he can emulate what EJB does, very fast. He called his framework a light weight one, as opposed to heavy duty plumbing mandated by the EJB proper. He even wrote a book titled,”J2EE development without EJB” on the very topic. Spring embodied lot of good design ideas and idioms which has made it the most popular abstraction to program on the Java Platform.

Spring made “Persistent Ignorant Domain Driven Design”, a mainstream topic. You focus on your business logic and create your Plain Old Java Objects (POJOs) according to your need. Persistence will be taken care by the Spring ORM package,if you follow some conventions. Spring ORM can interface with Hibernate, iBatis, JDO etc. They made Dependency Injection and Dependency Inversion, popular among the developers. For every Java API, there is a Spring abstraction available and I consider Spring as a meta platform.

Soon, the Java mainstream caught up with Spring by re-architecting EJB,to use POJO and a Spring like Container Model. They created something called Context Dependency Injection (CDI – @Inject) to emulate what Spring’s dependency injection. Now, it is mandatory to have a Dependency Injection container to be called a JEE compliant server.

As result of this technology evolution based on a series of specifications ( JSR – Java Specification Request) , Java platform is today fragmented into at least five different Stack offerings.

They are at

Oracle/Sun Stack – After the acquisition of Sun and BEA, Oracle has got WebLogic and Glassfish as JEE server. They do have OBPM (Oracle Business Process Manager) and OSB (Oracle Service Bus) as well, on top of the implementation of EJB 3.x stack implementation.Among large enterprises, Oracle installations are widely available. Oracle Database and Oracle’s JEE servers are a powerful combination.

IBM stack – IBM has heavily invested in Java, from the Eclipse days. In fact,the namesake Eclipse was an attempt to “eclipse the Sun”. IBM do have IBM Websphere Application Server, IBM Websphere Message Bus, Websphere Message Broker, IBM Service Bus and related offerings like ILOG Jrules,Jviews etc.

JBOSS stack – In the Vendor supported Open Source stack, JBOSS is the most popular JEE Application server out there. Theier primary programming model is based on JBOSS seam, where JSF is the view layer, EJB 3.x components and JPA/Hibernate for persistence. There is support for JAX-WS, JAX-RS etc.

Apache stack – Apache stack is based on Tomcat, as a web server and Geronimo.as an Application server. They do have Apache Wicket, UI programming tool kit. Mostly used by the Open Source projects. The other attractions are Lucene, Tika,Mahout,Poi,Hadoop,Hive, Pig etc. Most people use Spring meta platform along with Apache tomcat as well.

Spring stack – Spring provides it’s own abstraction for everything Java and can work anywhere.It is the most popular stack out there. The advantage is that it can work even on a Web server and do provide Application server like functionality using Spring REST and Spring JaxWS etc. Spring do have Webflow to write navigation style applications as well.

Even though there are considerable semantic matches between these offerings, to gain expertise in all of them is nearly impossible. So, next time, when you say Java, tell them the Stacks which you are comfortable with!

Be careful when you sign up for an engagement in Java. If it is Oracle/IBM, try to get development tools and play with them before signing it up. JBOSS is also a formidable stack with it’s own features and quirks. Apache Geronimo is mostly used by small enterprises or Open source projects.Spring framework does not care how it is run, as long as the programmer can initialize Spring from some context.

When there are options to choose, you have got problems. Which one to choose and on what basis will trigger a series of steps which can get your into Analysis/Paralysis loop. Beware, Your Java is not others Java. In fact, everyone can tell, “Your Java is not my Java”.

Author:Praseed Pai has been working in the IT/Engineering Software Industry for more than two decades and has presented seminars/workshops in more than two hundred technical events. His areas of interests are Programming Languages, Computer Graphics Programming, Native Code Programming, Embedded Systems and Enterprise Computing.
       

Check Also

One stop solution for Technology legal requirements

As demand is exponentially growing for application of Cyber Laws in the field of Information …