views:

85

answers:

2

Dealing with Java - which the option you prefer in the most cases - reference impl. of some technology or another one, provided by any other vendor?

Some examples - there is Glassfish server, which is basically official reference implementation of the JEE. However, i really seldom see people use that. Jboss, some free Apache projects related (like Apache ActiveMQ for JMS), WebLogic, WebSphere...

Does someone have any own rules (except pure cost :) ), what is more preferrable?

I do see 2 opposite points here:

1) RI is getting new features and new versions of specs more quicker.

2) 3-d party vendors solutions are often more "completed" and end-programmer oriented, like any additional usable features/utilities included (which are not part of the specification).

+1  A: 

Some more points:

3) integration with other tools is often better for 3rd party (e.g. apache http server and tomcat servlet container)

4) The RI contains all features, 3rd party often the widely useful ones only. The software is less complex and sometimes more handy and has better performance.

5) The RI is leading edge. For a production server an more aged implementation when no need of the latst feature is needed (most JEE applications work on a Tomcat 5.5 - 2.4 servlet container - i beleave)

Arne Burmeister
that is also what was hovering in my mind. 3-d party stuff seems more preferrable..
Zorkus
+1  A: 

There's really no "rule" here regarding "Reference Implementation" vs. another implementation - you take the requirements / preferences / money that you have and you compare it to the functionality / cost of each available option.

For a long time Tomcat was the servlet spec RI. And for a long time the EJB RI was a joke - no one actually used it. And there was no "reference implementation" for J2EE as a whole.

The reason most people use other servers is because for a long time Weblogic and Websphere were the only (realistic) implementations, so projects / people that started with J2EE are going to be more comfortable with them. JBoss was the first successful open-source J2EE app server - so people that preferred open source (or just wanted a free app server) were pretty limited to this option - and again - these people will prefer what they know.

However, currently GlassFish is pretty much comparable to other open source / commercial JEE app servers. And it uses Tomcat for it's servlet engine - and is pretty modular so you can take out parts you don't need.

Another thing influencing this was the developer migration away from "heavyweight" J2EE specs and toward "light weight" open source solutions such as Hibernate and Spring (once they were available) and running in only a servlet container (usually Tomcat) without a full-blown app server.

Nate
Isn't hibernate an embedded jboss (for example) persistence provider?They are not mutually exclusive things...
Zorkus
It's confusing - Hibernate is a standalone ORM project. But it's used internally in a lot of things. It's also a "3rd party vendor" JPA implementation (I believe the JPA RI is TopLink). And I think that JBoss is currently using Hibernate to back it's EJB3 implementation. But JBoss didn't start out using Hibernate for their persistence - they were one of the first open source EJB vendors and they coded their own EJB 2.1 implementation. And there's a difference between programming directly to Hibernate (or Hibernate JPA) in your web app, and using it through EJB3...
Nate