Walking through the Java EE 6 implementation maze

I’ve been asked so many times “what are the implementations of such or such specification in Java EE 6 ?” or “what is the reference implementation of such a spec ?“. Because I always forget some (and to be honest, sometimes I don’t even know if a spec has several implementations of not), I’m writing this post to help me (and you) to remember.

So here is a non-exhaustive list of the several Java EE 6 implementations (please leave a comment to add anything to this list) :

Specification Version JSR Prunned Reference implementation Other implementations
Java EE 6.0 316 GlassFish V3 JEUS 7, Websphere 8, Geronimo 3*, Weblogic 12g
Web Profile 1.0 316 GlassFish V3 JBoss 6, JBoss 7*, Resin 4Geronimo 3*, Siwpass 1, Weblogic 12g, TomEE*
Managed Beans 1.0 316
JAX-RPC 1.1 101 Yes
JAX-WS 2.2 224 Metro Axis 2, CXF 2,
JAXB 2.2 2.2 222 Glassfish JAXB 2.2
JAXM 1.0 67 Glassfish SAAJ 1.3
StaX 1.0 173 Sjsxp 1 Woodstox 3Codehaus+
Web Services 1.2 109
Web Services Metadata 1.1 181
JAX-RS 1.1 311 Jersey 1.x Wink*, CXF 2, Resteasy 2, Restlet 2,
JAXR 1.1 93  Yes Scout 1,
JSF 2.0 314 Mojara 2 MyFaces 2,
JSP 2.2 245 GlassFish JSP 2.2 Tomcat 7,
Debugging Support 1.0 45
JSTL 1.2 52 Glassfish JSTL 1.2
Servlet 3.0 315 GlassFish 3 Tomcat 7, Jetty 8,
Expression Language 2.2 245 GlassFish EL 2.2 JUEL 2,
EJB 3.1 318 Entity Beans CMP GlassFish 3 OpenEJB 3.1,
Interceptors 1.1 318
JAF 1.1 925 GlassFish JAF 1
JavaMail 1.4 919 Kenai Project+ GNU Java Mail, Geronimo JavaMail,
JCA 1.6 322
JMS 1.1 914 Open MQ 4 ActiveMQ 5, SonicMQ, HornetQ 2, Websphere MQ, Joram,
JPA 2.0 317 EclipseLink 2 OpenJPA 2, Hibernate 3.5,
JTA 1.1 907 Atomikos, BTM, JBoss Transaction, SimpleJTA, JOTM,
JACC 1.1 115
Bean Validation 1.0 303 Hibernate Validator 4 Apache Bean Validation*
CDI 1.0 299 Weld 1 OpenWebBeans 1, CanDI,
Dependency Injection 1.0 330 Guice 3+ OpenWebBeans 1Weld 1CanDI, Spring 3,
Common Annotations 1.1 250
Application Deployment 1.2 88 Yes
Management 1.1 77
JASPIC 1.0 196

(*) not final yet at the time of writing this article  (+) not sure about that

Yes, it’s a maze and sometimes it’s difficult to walk through it… but hey, that’s also the strengh of being standard, portable and avoiding vendor locking. I will never say that an application is 100% portable through implementations (if you hear someone telling you this, don’t trust him/her), but it can get close to 100% in many cases. That’s also the difference between standard and defacto-standard (check the definition of De Facto).

And because I get lost in this maze, please help me in finding my way out. If I’ve missed something and I’m mistaken, please use the comments to improve this maze and give me your suggestions.

Comments
9 Responses to “Walking through the Java EE 6 implementation maze”
  1. Nice idea ! For now I can remember of a Geronimo implementation of JavaMail spec : http://geronimo.apache.org/maven/javamail/1.7/index.html .

  2. Yannis Bres says:

    Hi !
    RichFaces (http://www.jboss.org/richfaces), ICEFaces (http://www.icefaces.org/) and OpenFaces (http://openfaces.org/) are other JSF2 frameworks (for better or worse…). And there are more in the wild !

    • agoncal says:

      RichFaces, ICEFaces and so on do not implement JSF, they are component libraries (they bring you extra components, they rely on the spec, they do not implement the spec)

      • Brendan Healey says:

        As well as being a component library ADF Faces is a 3rd JSF implementation which is different to Mojarra. Apparently this uses a longer lifecyle with 2 additional phases, extra scopes etc…

  3. maxou480 says:

    You already mentioned Tomcat 7.x for Servlet 3.0, you can add to JSP 2.2 :
    http://tomcat.apache.org/whichversion.html

    And WebSpere 8 for the following specs (not exhaustive, but it it’s a good start) :
    JavaServlet 3.0, JSP2.2, EJB 3.1, JP1 2.0, JMS 1.1, JAXB 2.2, JAXRPC 1.1, JAX-WS2.2, SOAP 1.2
    http://publib.boulder.ibm.com/infocenter/wasinfo/v8r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/rovr_specs.html

    • agoncal says:

      Webpshere 8, Weblogic 12g, GlassFish 3, JBoss 7… they all implement the entire Java EE 6 spec, so it’s normal that Webpshere lists them on their web page. What I’m looking for is all these “standalone” implementations that you can use outside the original application server. For example, what is the JPA 2.0 implementation in WAS 8 ? If it’s an IBM one, what’s its name and, more important, can I download it and use it outside WAS 8. It’s interssting to see that WAS 8 uses Apache MyFaces as the JSF 2 implementation.

  4. Akram says:

    Very interresting and useful!
    Would be nice also to add previous versions of the APIs: for example JSF 1.0, 1.1 or others

  5. benoit says:

    For JSR 318 about Interceptors, an early release of Spring-CDI module :
    http://niklasschlimm.blogspot.com/2011/08/jsr-299-cdi-interceptors-for-spring.html

  6. Ryadh Khsib says:

    Thanks!
    Just a small correction, JACC version is 1.4.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 6,112 other followers

%d bloggers like this: