The Java platform is one of the most widely used platforms for application development in the world. The platform is so popular that there are several different flavors of Java that can be used for developing applications that run on different mediums. From development of desktop, mobile, or web applications and hardware operating systems, Java can be utilized for development of just about any solution. As such, Java has become a very popular platform for development of web and enterprise applications, offering web services, reliability, security, and much more.
Java Enterprise Edition was originally released in 1999 as Java 2 Platform, Enterprise Edition (J2EE). Although several enterprise frameworks were available for development of reliable and secure applications on the Java platform, it made sense to standardize some solutions in order to minimize customization and help provide standards around Java Enterprise development to make it more prevalent in the industry. The platform originally included a terse number of specifications for standardization, including Java Servlet, JavaServer Pages, RMI, Java Database Connectivity (JDBC), Java Message Service API (JMS), Java Transaction API (JTA), and Enterprise JavaBeans. Early development of J2EE applications had a large learning curve, and it was cumbersome because it required lots of XML configuration. Even with these setbacks, it became popular among larger organizations and companies due to the prevalence of Java and its well-known security benefits. In 2001, J2EE 1.3 was released, adding more specifications to the platform, including the JavaServer Pages Standard Tag Library (JSTL), and Java Authentication and Authorization Service (JAAS). Other specifications, such as Java Servlet, also gained enhancements under the J2EE 1.3 release, making evolutionary enhancements to the platform. The release of J2EE 1.4 in 2003 marked a major milestone for Java Enterprise, as many new specifications were added to the platform, providing standards for even more Java technologies. The release of J2EE 1.4 marked the first iteration of Web Services for J2EE 1.1, JavaServer Faces (JSF), and Java APIs for XML solutions such as JAXP, JAXR, and more. Although the release of J2EE 1.4 included many specifications, it was still deemed as “difficult to learn,” “cumbersome,” and “not productive”.
Over the next few years, J2EE was re-worked in an attempt to make it easier to learn and utilize for the construction of modern web applications. Although XML is an excellent means for configuration, it can be cumbersome and difficult to manage, so configuration was a big item that was being addressed for the next release. Technologies such as Enterprise JavaBeans (EJB) included some redundant characteristics, making EJB coding time-consuming and difficult to manage, so an overhaul of EJB was also in order. In May of 2006, Java EE 5 was released, leaving the J2EE acronym behind, and changing to simply Java EE instead. The Java EE 5 platform was significantly easier to use and maintain because features such as annotations were introduced, cutting down the amount of XML configuration significantly, as configuration could now be injected via annotations. EJBs were made easier to develop, and Java Persistence API (JPA) became a marketable technology for object-relational mapping. Java Enterprise Edition has since become a widely adopted and mature platform for enterprise development. Java EE 6 was released in 2009, making configuration and APIs even easier, and adding more specifications to the platform. Specifications such as Contexts and Dependency Injection and Bean Validation were introduced, vastly changing the landscape of the platform and streamlining development. Java EE 7 (released in 2013) continued to strengthen and modernize the platform, adding the WebSockets and JSON-P specifications. In the Java EE 7 release, specifications such as JSF and EJB were also enhanced, adding even more features to increase productivity and functionality and allowing them to work better for more modern web solutions.