The Story of JEE modules

× "Is a" and "Has a" relation "Has a" relation Arrays as in memory Two Dimensional Arrays Exception Handling Variable, Object & Reference Multi-threading Website Design / Development Story of JEE modules
× JAVA, JEE, SQL: Online Private Tutoring Project based Training Concept based Training Basic Java:           $180 Advanced Java:     $300
(Threads,Sockets,JDBC,GUI)
Advanced Java:     $300
(with games projects like
PcMan, PingPong, TicTacToe)
Author: Bharat Chhajer

Histroy of JEE Versions

Web profile

SpecificationJEE 6JEE 7JEE 8
Servlet3.03.14.0
JSP2.22.32.3
EL2.23.03.0
JSTL1.21.21.2
JSF2.02.22.3
RESTful JAX-RS1.12.02.1
WebSocketn/a1.01.1
JSON-Pn/a1.01.1
Annotations1.11.21.3
EJB3.13.23.2
JTA1.11.21.2
JPA2.02.12.2
Bean Validation1.01.12.0
Managed Beans1.01.01.0
Interceptors1.11.21.2
Contexts and Dependency Injection1.01.12.0

To understand versions of modules in JEE:

If you are having trouble understanding or getting control over various version of JEE and Technologies in it, read on... So, "Tomcat 4 supports Servlet 2.3, JSP 1.2". Meaning ? Many of us come across such questions. Here are some more:

These are some of the questions that i am trying to answere. If you have any of the above questions or questions related to VERSIONS IN JEE, go on...

The begining...

Diagram expalins versions of various JEE technologies

During the very early period of JEE, JSP and Servlets were the only JEE technologies. So, if we knew the version of Servlet and JSP in a certain version of JEE, it was enough. But later EL, JSTL or JSF were also added to JEE. There is a twist in the naming of JEE itself. Initially JEE was called J2EE. Hence the versions were called J2EE 1.1, J2EE 1.2. But when J2EE 1.3 came out, it was rather named JEE3. Then, what would have been called J2EE 1.4 was named JEE4. Then JEE5, JEE6 and so on...

James Gosling’s work on a Web Server in Java in 1994/1995 became the foundation for servlets. A larger project emerged in 1996 with Pavani Diwanji as lead engineer and with many other key members. From this project came Sun’s Java Web Server product. Things started to move quickly in 1999. The servlet expert group, with James Davidson as lead, delivered the Servlet 2.1 specification in January 1999 and the Servlet 2.2 specification in December 1999, while the JSP group, with Larry Cable and Eduardo Pelegri-Llopart as leads, delivered JSP 1.0 in June 1999 and JSP 1.1 in December 1999.

History of JEE:

Note: JPE (Java Professional Edition) project announced in May 1998 at Sun Microsystems.

Ver Rel Date
Servlet 1.1Jan 1999
JSP 1.0Jun 1999
JEE2 (J2EE 1.2)12 Dec 1999Servlet 2.2 JSP 1.1
JEE3 (J2EE 1.3)24 Sep 2001Servlet 2.3 JSP 1.2
JEE4 (J2EE 1.4)11 Nov 2003Servlet 2.4 JSP 2.0
JEE511 May 2006Servlet 2.5 JSP 2.1 JSTL 1.2 JSF 1.2
JEE6 10 Dec 2009 Servlet 3.0 JSP 2.2 JSTL 1.2 JS 2.0 EL 2.2
JEE7 12 Jun 2013 Servlet 3.1 JSP 2.3 JSTL 1.2 JSF ;2.2 EL 3.0

Conclusion:

So, during the very early period of JEE, JSP and Servlets were the only technologies that were part of it. And from a certain version of JEE, other technologies like JSTL, JSF, EL were added.

So when were the other technologies added ? Here goes the story... JEE started with Servlets and then JSP was added. EL and JSTL came up later to make the JSP code less complicated so that it be easy to maintain. But they both existed as independent libraries and were not included in the JEE releases. During software development, they had to be separately added to the project in the IDE and to the TOMCAT. ( I have used TOMCAT through out this article as a Web/Application Server).

JEE and TOMCAT:

Lets only look at servlet and JSP versions in JEE as it compares to in TOMCAT.

JEE Version TOMCAT Version
JEE3 support Servlet 2.3 and JSP 1.2 Tomcat 4 support the same (Servlet 2.3 and JSP 1.2)
JEE4 support Servlet 2.4 and JSP 2.0 Tomcat 5 support the same
JEE5 support Servlet 2.5, JSP 2.1, JSTL 1.2, JSF 1.2 Tomcat 6 support Servlet 2.5, JSP 2.1 only. No JSTL. No JSF
JEE6 support Servlet 3.0, JSP 2.2, EL 2.2, JSTL 1.2, JSF 2.0 Tomcat 7 support Servlet 3.0, JSP 2.2, EL 2.2 as well

Note that When JSTL and JSF were added to JEE5 onwards, they were NOT supported by respective TOMCATs. So JEE development projects using tomcat had to include them separately as libraries. This was not the case with EL. When EL was added to JEE6 onwards, it was supported by contemparary Tomcat release, unlike JSTL and JSF.

History of TOMCAT:

Tomcat Version Supports
Tomcat 4 Servlet 2.3, JSP 1.2
Tomcat 5 Servlet 2.4, JSP 2.0
Tomcat 6 Servlet 2.5, JSP 2.1
Tomcat 7 Servlet 3.0, JSP 2.2, EL 2.2

We shall now come to the individual story of EL, JSTL and JSF. So, how and when they sepeartely grew and when did they join the JEE releases.

The EL and JSTL story:

EL and JSTL came into being to make JSP code less complicated and hence easy to maintain. They made possible writting JSPs without scriplets. EL and JSTL were used in JSF as well. JSF was growing seperately. The EL was differently supported in JSP and in JSF. Meaning some concepts were different in EL used with JSP as compared to EL used with JSF. JEE5(one with JSP 2.1) created a "unified EL". Both JSP and JSF now supported the same "unified EL". With the next release of JEE (JEE6), EL became part of JEE as EL 2.2. So, was EL not part of JEE before JEE6 ? No, it was, but not a versioned delcared part like EL 2.2 was.

The JSP Story:

JSP 1.1 introduced a method of extending JSP tags, called "tag libraries". These libraries allow addition of tags similar to jsp tags like jsp:include or jsp:forward, with different prefixes other than jsp: and with additional features. With this MVC frameworks like Struts began to evolve. JSP 1.2 improved support for "tag libraries". After JSP 1.2 release, JSTL came into being. JSTL 1.0 was released separtely. EL began with JSTL 1.0. So, JSTL 1.0 requires a JSP container that supports JSP 1.2.

JSP 2.0(JEE4) introduced EL in JSP as well and ability to define custom tags with JSP syntax instead of Java syntax. After JSP 2.0 release, JSTL 1.1 was released. JSTL 1.1 requires a JSP container that supports JSP 2.0. Now having technologies like EL, JSTL and "custom tag library" it become possible to write JSP pages without knowing Java (without scriplets. Scriptlets require Java).

JSP 2.1(JEE5) created unified EL (Union of EL by JSP 2.0 and EL by JSF 1.0. Note that JSF was growing seperately and using a different EL). The primary new feature of JSP 2.1 was to create unified EL. JSP 2.1 is part of JEE5. With unified EL in place, JSTL 1.2 and JSF 1.2 also became part of JEE5.

EL 2.2 became part of next version of JEE, JEE6(one with JSP 2.2).

EL story:

EL started with JSTL 1.0, not with JSP as one might be inclined to think. JSTL grew separately before joining JEE5. JSTL 1.0, which had EL support was released in 21 Jun 2002. During this time JSP 1.2(JEE3), which had NO EL support was in market. But the next version of JSP, JSP 2.0(JEE4) added EL support. JSF too had its own version of EL. EL was differently supported in JSP and JSF. JSP 2.1(JEE5) created unified EL (Union of EL by JSP 2.0 and JSF 1.0). The primary new feature of JSP 2.1 was to create unified EL. With unified EL in place, JSTL 1.2 and JSF 1.2 were added to JEE5. EL 2.2 became a declared part of JEE6 release. Meaning, EL was part of JEE before JEE6 but it had no version number.

JSTL story:

JSP 1.1 introduces a method of extending JSP tags, called "tag libraries". These libraries allow addition of tags similar to jsp:include or jsp:forward, but with different prefixes other than jsp: and with additional features. So a standard tag library called JSTL, "JSP Stadard Tag Library" was born.

JSTL Ver Rel Date
JSTL 1.0 (Std 1.0) 21 Jun 2002 requires a JSP container (like Tomcat 4) that supports JSP 1.2 spec.
JSTL 1.1 (Std 1.1) 30 Jan 2004 requires a JSP container (like Tomcat 5) that supports JSP 2.0 spec.
JSTL 1.2 2006 with JEE5

JSF story is straight forward:

JSF Version Released in
JSF 1.0 11 Mar 2004
JSF 1.1 27 May 2004
JSF 1.2 11 May 2006 with JEE 5.
JSF 2.0 10 Dec 2009 with JEE 6. It uses Facelets.
JSF 2.1 22 Oct 2010
JSF 2.2 said to release by end of 2012

So, the story of stories is coming to an end here for now, for me. So, this was a story of Stories Of SERVLET VERSIONS, JSP VERSIONS, EL VERSIONS, JSTL VERSIONS, JSF VERSIONS.

Where do we need to ensure correct versions of component technologies like JSTL, JSF, EL etc... ? There are two places, where the versions of various component libraries should be correct. Project(in IDE) and Web/Application Server (like TOMCAT, WSDL, JBOSS etc..). For compile time, ensure the versions of libraries in your project. This will fix errors you get at compile time due to improper version of libraries. When deploying or running a web application, the version of technologies supported or added as libraries to Application Server or Web Container matters. So things like "Tomcat 7 supports Servlet 3.0, JSP 2.2, EL 2.2" do matter.

Reference:

www2. sys-con.com/itsg/virtualcd/java/archives/0807/roth2/index.html
jamesgdriscoll .wordpress.com/2010/02/09/servlet-history/
raibledesigns .com/rd/entry/the_history_of_jsp
en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition

Author: Bharat Chhajer