|Specification||JEE 6||JEE 7||JEE 8|
|Contexts and Dependency Injection||1.0||1.1||2.0|
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...
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 Goslings 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 Suns 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.
Note: JPE (Java Professional Edition) project announced in May 1998 at Sun Microsystems.
|Servlet 1.1||Jan 1999|
|JSP 1.0||Jun 1999|
|JEE2 (J2EE 1.2)||12 Dec 1999||Servlet 2.2 JSP 1.1|
|JEE3 (J2EE 1.3)||24 Sep 2001||Servlet 2.3 JSP 1.2|
|JEE4 (J2EE 1.4)||11 Nov 2003||Servlet 2.4 JSP 2.0|
|JEE5||11 May 2006||Servlet 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|
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).
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.
|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.
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.
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 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.
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 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.