Professional Documents
Culture Documents
History
James Gosling initiated the Java language project in June 1991 for use in one of his
many set-top box projects.[9] The language, initially called Oak after an oak tree that
stood outside Gosling's office, also went by the name Green and ended up later
renamed as Java, from a list of random words.[10] Gosling aimed to implement a virtual
machine and a language that had a familiar C/C++ style of notation. [11]
Sun released the first public implementation as Java 1.0 in 1995. It promised "Write
Once, Run Anywhere" (WORA), providing no-cost run-times on popular platforms. Fairly
secure and featuring configurable security, it allowed network- and file-access
restrictions. Major web browsers soon incorporated the ability to run Java applets within
web pages, and Java quickly became popular. With the advent of Java 2 (released
initially as J2SE 1.2 in December 1998), new versions had multiple configurations built
for different types of platforms. For example, J2EE targeted enterprise applications and
the greatly stripped-down version J2ME for mobile applications. J2SE designated the
Standard Edition. In 2006, for marketing purposes, Sun renamed new J2 versions
as Java EE, Java ME, and Java SE, respectively.
In 1997, Sun Microsystems approached the ISO/IEC JTC1 standards body and later
the Ecma International to formalize Java, but it soon withdrew from the process. [12] Java
remains a de facto standard, controlled through the Java Community Process.[13] At one
time, Sun made most of its Java implementations available without charge, despite
their proprietary software status. Sun generated revenue from Java through the selling
of licenses for specialized products such as the Java Enterprise System. Sun
distinguishes between its Software Development Kit (SDK) and Runtime Environment
(JRE) (a subset of the SDK); the primary distinction involves the JRE's lack of the
compiler, utility programs, and header files.
On November 13, 2006, Sun released much of Java as open source software under the
terms of the GNU General Public License (GPL). On May 8, 2007, Sun finished the
process, making all of Java's core code available under free software/open-source
distribution terms, aside from a small portion of code to which Sun did not hold the
copyright.[14]Sun's vice-president Rich Green has said that Sun's ideal role with regards
to Java is as an "evangelist."[15]
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.
VERSION OF JAVA
1995: Version 1.0 of the Java Development Kit (JDK) was released for free by Sun.
o 8 packages with 212 classes
o Netscape 2.0-4.0 included Java 1.0.
o Microsoft and other companies licensed Java.
1997: Version 1.1:
o 23 packages - 504 classes
o Improvements include better event handling, inner classes, improved JVM.
o Microsoft developed its own 1.1. compatible Java Virtual Machine for the
Internet Explorer.
o Many browsers in use are still compatible only with 1.1.
o Swing packages of greatly improved graphics became available during this time
but not included with the core language.
1999: Version 1.2, also called the Java 2 Platform
o 59 packages - 1520 classes
o Code and tools distributed as The Software Development Kit (SDK)
o Java Foundation Classes (JFC), based on Swing, for improved graphics and user
interfaces, now included with the core language.
o Collections API included support for various lists, sets, and hash maps.
2000: Version 1.3:
o 76 packages - 1842 classes
o Performance enhancements including the Hotspot virtual machine.
2002: Version 1.4:
o 135 packages - 2991 classes
o Improved IO, XML support, etc.
2004: Version 5.0 (previously numbered 1.5):
o 165 packages, over 3000 classes
o Faster startup and smaller memory footprint
o Metadata
o Formatted output
o Generics
o 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.
Other Editions of Java
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:
Micro Java
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 volatile
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 RAM.
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.