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  
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.