23 August 2018

Java EE component versions overview (updated)

The table below lists the components in latest versions of the Java Enterprise Edition.
Many of the Java EE projects live on github.
After Java EE8, Java EE is moving to the EE4J project (Eclipse Enterprise For Java) aka Jakarta.

  • I put the most important changes in red.
  • Components with a [version number] between brackets are  proposed for removal in a future release.
  • An x indicates a technology is removed from the specification
    • JSR's are shown as hyperlinked numbers.
    • SE indicates that an API was moved to the standard edition 
      • eventually followed with the version number
      • Java SE version history is in a separate post 
      • These API's will be removed from Java SE again with Java 11
    • Web technologies are in a separate post
    • EJB history is in a separate post
    • I added some application servers at the bottom of the table. 
    Technologies151
    J2EE 1.4

    2003
    244
    Java EE5

    2006
    316
    Java EE6

    2009
    342
    Java EE7

    4/2013
    366
    Java EE8
    Java SE59 1.4176 5270 6336 7337 8
    EJB153 2.1220 3.0318 3.1345 3.2
    Servlet/JSP2.42.53.03.14.0
    EE Management77 1.0



    JMS 914 1.1

    343 2.0368 2.1
    JTA 9071.01.1
    1.2
    JavaMail 9191.31.41.51.6
    Connector (JCA)112 1.51.5322 1.61.7
    Java Activation Framework (JAF) 9251.01.1SE:1.1.1
    Web Services 1091.11.21.3
    1.4
    Web Services Metadata 181
    2.0SESE:2.1
    JAX-WS (SOAP) 101 JAX-RPC 1.1 224 2.0SE:2.0SE:2.2
    JAX-RS (REST)

    311 1.1
    339 2.0370 2.1
    JAXB 222
    2.0SE:2.2
    JSON-P  353 1.03741.1
    JSON-B 367
     1.0
    JAXR (UDDI Registry)1.0
    [1.0]x
    SOAP w attachments (SAAJ) 671.21.3SE
    StAX 173
    1.0SE
    JMX1.2SESE
    container authorisation (JACC) 1151.01.11.41.5
    container authentication (JASPIC) 196

    1.01.1
    Security 375



    1.0
    Common annotations 250
    1.01.11.21.3
    Java Persistence (JPA)
    1.0317 2.0338 2.12.2
    Bean Validation

    303 1.0349 1.1380 2.0
    Managed Beans

    1.0
    Interceptors
    1.01.11.2
    CDI for Java EE

    299 1.0346 1.1365 2.0
    DI for Java 330

    1.0
    Concurrency utilities 236


    1.0
    State management 350


    1.0
    Batch  352


    1.01.1
    Servers
    Sun JSAS89.1
    Glassfish23 (12/09)4 (5/13)5 (9/17)
    JBoss / WildFly457 (7/11)8 (2/14)12 (2/18)
    IBM Websphere678 (6/11)9 (10/17)
    Oracle Weblogic91012.1.1
    (12/11)
    12.2.1 (11/15)
    Apache Geronimo123 (7/12)-
    Apache Tommee+

    1.5 (9/12)7 (3/16)
    • J2EE 1.3(2001) introduced
      • Message Driven  Beans
      • Local interfaces
    • Profiles are a subset of the spec.
      • Java EE Web profile (only profile currently defined)
        • contents
          • java SE
          • web technologies, JTA, common annotations, JPA, validation, managed beans, interceptors, CDI, DI
          • EJB Lite
            • Stateless, Stateful, and Singleton session beans
              • asynchronous session beans (EJB 3.2)
            • only local EJB interfaces or no interfaces
            • interceptors
            • security
            • transactions
            • non persistent timer only (EJB 3.2)
            • No Message Driven beans and remote invocation.
          • JAX-RS (Java EE7)
        • implemented by
          • Resin 4
          • Apache TomEE 

        2 comments:

        1. Jazzie, thanks for the comment. Removed publicity link in it though - Jan

          Jazzie Casas said...

          Java and to some degree .Net are the main choices because they have been consistently pegged as the “safe” choice to go with for mid-level project managers in the corporate world. No one was ever fired for choosing Java or Microsoft.

          However, there are many large distributed applications these days that run primarily with technologies like Python, PHP, et al. Even companies like Google and Yahoo are heavily invested in these technologies. Java may be the main choice for enterprise development now, but it’s days are numbered as the only stalwart option to go with.

          Let’s face it, many of these so called “enterprise applications” could easily have been written much faster and with less overhead using technologies like Python, PHP, et al.

          ReplyDelete
        2. I would even say more: many of these so called "enterprise applications" could easily have been written much faster and with less overhead using technologies like Python, PHP, Java et al.
          The point of Java Enterprise Editition is not the language/API's but separation and independence of architectural layers (interface, application logic, business logic, data layer, back end).
          This architectural structure, pays off during maintenance and when evolving portions to new implementations.
          This requires a bit more effort, I agree, still Java EE6 manages to do this in a pretty simple way. Here's a little example.

          But, If your focus is on fast development, by all means go for a lighter architecture. You might also want to look at RAD environments like GRAILS.

          ReplyDelete