javajakarta-eeimplementationspecificationsvendors

Java - Reference implementations vs 3d party vendor provided ones


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 Java EE. 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).


Solution

  • 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 latest feature is needed (most "Java EE" applications work on a Tomcat 5.5 - 2.4 servlet container - i beleave)

    UPDATE: for Java EE 6 and upcoming 7 the picture changes. There are also full standard open source implementations (like TomEE for Java EE6) and with glassfish there seems to come a useable RI for Java EE 7, the only one for early adopters.