JSP and Beyond

a pragmatic primer on building web-based solutions with Java technologies

Acronyms Abound!

One of the initial things that I found to be extremely frustrating when trying to build Java web-based solutions was getting my head around all of the different acronyms for the components used to run the applications.  Part of the trouble seems to stem from Sun’s marketing department deciding it might be fun to switch things around fairly frequently.

The list below details each acronym and what it is used for.  A summary table lies below the list and can be used for quick reference.

JDK (formerly the Software Development Kit)
Produced by Sun Microsystems the Java Development Kit (JDK) provides the nuts and bolts for Java software development minus an Integrated Development Environment (IDE) and web application server.  It contains tools that allow compilation of Java code, running and debugging of Java code.

The Java Runtime Environment (JRE) consists of the barebones components to run Java applications. It contains a Java Virtual Machine (JVM), core classes and supporting files.  It does not contain components for application development like the JDK.

Java 2 Platform Enterprise Edition is a suite of tools that help developers create connections to enterprise data and systems.  Specifically, Enterprise JavaBeans (EJBs), JavaServer Pages (JSPs) and Java Servlets can be used to access the data through tools like JDBC, JNDI, JTA, JMS, Java Mail and CORBA.  For our purposes we will only be covering a fraction the J2EE platform abilities, specifically focusing on JSPs, the presentation layer of the J2EE technology stack.

Java EE
As the J2EE platform has evolved Sun Microsystems has added additional functionality.  Some of the new features that Java EE added are support for Java Server Faces, enhanced web services capabilities and better ways to interact with Java code brokering database access.  This highlights the Java community’s evolution based on the common needs that are continually identified by organizations looking for easier ways to develop software.

Think of Java 2 Platform, Standard Edition (J2SE) as JDK plus.  It includes a wide range of components like Swing (a user interface library) for application development on desktops and servers and for deployment in embedded environments.

The Java 2 Platform Micro Edition enables PDAs, TV set top boxes, ovens, printers, cell phones and other devices to run Java applications.  Just as JVMs are specific to a particular platform each device that is J2ME-capable needs a specific “profile” for J2ME code to work on it based on a device’s particular capabilities.

The Java Virtual Machine is the heart of the Java applications.  It provides an abstraction layer on top of the operating system that is capable of running Java applications.  This makes it platform independent, allowing Java code to run on Windows, UNIX, Linux and any platform that a JVM has been developed for.  At a nuts and bolts level the JVM is able to consume compiled Java code (bytecode) into machine language where it can be run on a particular platform.  This is Java’s claim to fame and gives way to the expression “write once, run anywhere”.