Since its introduction, Sun has released a new version of the Java
language every two years or so. These new versions brought enhancements,
new capabilities and fixes to bugs. Until recently, the versions
were numbered 1.x, where x reached up till 4. (Intermediate revisions
were labeled with a third number - 1.x.y - as in 1.4.2.) The newest
version, however, is called Java 5.0 rather than Java 1.5.
Below is a timeline of the different versions of the basic, or
Standard Edition (SE), of Java along with some of the new
features that each one introduced. This edition contains the core
language packages (the name for code libraries in Java) and is aimed
for desktop programming.
- 1995: Version
1.0 of the Java Development Kit (JDK) was released
for free by Sun.
- 8 packages with 212 classes
- Netscape 2.0-4.0 included Java 1.0.
- Microsoft and other companies licensed
- 23 packages - 504 classes
- Improvements include better event handling, inner classes,
- Microsoft developed its own 1.1. compatible Java Virtual
Machine for the Internet Explorer.
- Many browsers in use are still compatible only with 1.1.
- Swing packages of greatly improved graphics became
available during this time but not included with the core
- 1999: Version
1.2, also called the Java 2 Platform
- 59 packages - 1520 classes
- Code and tools distributed as The Software Development Kit
- Java Foundation Classes (JFC), based on Swing, for improved
graphics and user interfaces, now included with the core language.
- Collections API included support for various lists, sets,
and hash maps.
- 2000: Version
- 76 packages - 1842 classes
- Performance enhancements including the Hotspot virtual
- 135 packages
- 2991 classes
- Improved IO,
XML support, etc.
- 2004: Version
5.0 (previously numbered 1.5):
- 165 packages, over 3000 classes
- Faster startup and smaller memory footprint
- Formatted output
- Improved multithreading features
We discuss Java 5.0 further
in this chapter and examine individual features in later chapters
like those listed above. See the Code
Compatiblity page for a discussion of issues related to dealing
with codes, compilers, and JVMs from different versions.
In the late 1990s, Sun split off two other more specialized
branches, or editions, of Java. One is aimed at small, embedded
applications and the other for large scale middleware applications:
Embedded systems such as cell phones and device controllers typically
offer reduced resources as compared to desktop PCs. This means
substantially less disk space or no disk at all, and less of other
types of nonvolatile memory. It also usually means a smaller display
or perhaps no display at all.
For such systems Sun offers slimmed down versions of Java.
- JavaCard - extremely limited
Java for systems with only 16kb nonvolatile memory and 512 bytes
- EmbeddedJava - based on
Java 1.1 for 32 bit system with about 512kb each for ROM and
RAM. Individual packages, classes and even methods in the core
language can be thrown out to make room.
- PersonalJava - based on
Java 1.1.8 for larger systems with 2MB ROM and more than 1MB
- Java 2 Platform, Micro Edition (J2ME)
- based on the Java 2 Platform, J2ME replaces the Java 1.1 based
systems (EmbeddedJava and PersonalJava but not JavaCard). The
developer will choose from different configurations to suit
the capacity of a given system.
See Chapter 24: Embedded Java
for further discussion of the J2ME.
J2EE - Java 2 Platform, Enterprise
With the Java 2 Platform came a separate version with enhanced
resources targeted at enterprise applications. The
Java 2 Enterprise Edition now provides a wide array of tools
for building middleware software such as for database access applications,
online storefronts, and other services.
All of these editions and version numbers can be a bit confusing
for newcomers. Also, terms change such as Java Development Kit
becoming Software Development Kit. For this course, however,
you can just use the latest version - Java 5.0 - and not worry about
all these historical issues.
Note that we use the terms Java 1.x, SDK 1.x, and J2SE 1.x interchangeably
and similarly, for Java 5.0, SDK 5.0, and J2SE 5.0. This course
was originally developed with Java 1.4.2 but we have now converted
the codes to Java 5.0.
We also will occasionally refer simply to the "platform"
to indicate the whole Java progamming environment provided by the
compiler, JVM, and the various other tools available for working
with the language.
References and Web Resources
Latest update: Oct.9.2004