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 4, Geronimo 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 3, Codehaus+ | |
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 1, Weld 1, CanDI, 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.
