VERSIONS OF JAVA
JDK 1.0 (January 23, 1996).
Codename Oak as initial release.The first stable version was the JDK 1.0.2. is called "Java1".
Drawback in versions of Java and the JDK up to 1.0.1, you could use private and protected together to create yet another form of protection that would restrict access to methods or variables solely to subclasses of a given class.
JDK 1.1 (February 19, 1997).
An extensive retooling of the AWT event model.
Inner classes added to the language.
Reflection which supported Introspection only, no modification at runtime was possible.
J2SE 1.2 (December 8, 1998).
Codename Playground : This end subsequent releases through J2SE 5.0 were rebranded retrospectively Java 2 and the version name J2SE (Java 2 Platform, Standard Edition) replaced JDK to distinguish the base platform from J2EE (Java 2 Platform, Enterprise Edition) and J2ME(Java 2 Platform, Micro Edition).
The Swing graphical API was integrated into the core classes.
Sun's JVM was equipped with a JIT compiler for the first time.
Java IDL, an IDL implementation for CORBA interoperability.
J2SE 1.3 (May 8, 2000)
Codename "Kestrel": HotSpot JVM included (the HotSpot JVM was first released in April, 1999 for the J2SE 1.2 JVM).
RMI was modified to support optional compatibility with CORBA.
Java Naming and Directory Interface (JNDI) included in core libraries (previously available as an extension).
Java Platform Debugger Architecture (JPDA).
Synthetic proxy classes.
J2SE 1.4 (February 6, 2002).
Codename "Merlin": This was the first release of the Java platform developed under the Java Community Process as JSR 59.
Assert keyword (Specified in JSR 41).
Regular expressions modeled after Perl regular expressions.
Exception chaining allows an exception to encapsulate original lower-level exception.
Internet Protocol version 6 (IPv6) support
Non-blocking IO (named NIO) (New Input/Output) (Specified in JSR 51).
logging API (Specified in JSR 47).
Image I/O API for reading and writing images in formats like JPEG and PNG.
Integrated XML parser and XSLT processor (JAXP) (Specified in JSR 5 and JSR 63).
Integrated security and cryptography extensions (JCE, JSSE, JAAS).
Java Web Start included (Java Web Start was first released in March, 2001 for J2SE 1.3) (Specified in JSR 56).
Preferences API (java.util.prefs).
J2SE 5.0 (September 30, 2004).
Codename "Tiger": J2SE 5.0 entered its end-of-life on April 8, 2008 and is no longer supported by Sun
Generics: Provides compile-time (static) type safety for collections and eliminates the need for most typecasts (type conversion). (Specified by JSR 14).
Metadata: Also called annotations; allows language constructs such as classes and methods to be tagged with additional data, which can then be processed by metadata-aware utilities. (Specified by JSR 175).
Autoboxing/unboxing: Automatic conversions between primitive types (such as int) and primitive wrapper classes (such as Integer). (Specified by JSR 201).
Enumerations: The enum keyword creates a typesafe, ordered list of values (such as Day.MONDAY, Day.TUESDAY, etc.). Previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern). (Specified by JSR 201).
Varargs: The last parameter of a method can now be declared using a type name followed by three dots (e.g. void drawtext(String... lines)). In the calling code any number of parameters of that type can be used and they are then placed in an array to be passed to the method, or alternatively the calling code can pass an array of that type.
Enhanced for each loop: The for loop syntax is extended with special syntax for iterating over each member of either an array or any Iterable, such as the standard Collection classes,.
Fix the previously broken semantics of the Java Memory Model, which defines how threads interact through memory.