Thursday 24 April 2014

Overview of Java releases

This illustration highlights the changes that were introduced with each major Java release.

 
Here is a more detailed break down of the changes.

JDK 1.0 (1996)

  • Initial release

JDK 1.1 (1997)

  • Inner classes added
  • Java Beans introduced
  • RMI (Remote Method Invocation) added
  • Initial (Windows) JIT compiler
  • Reflection introduced - to reflect upon Class methods and fields
  • Object serialization for sending objects over the network
  • AWT (Abstract Window Toolkit) retooling for GUI enhancements
  • JDBC (Java Database Connectivity) to enable connectivity and SQL query support
  • Security enhancements - digital signatures, key signatures, access control lists

J2SE 1.2 (1998)

A slight re-branding was made from JDK to J2SE to properly distinguish from J2EE and J2ME.
  • Collections framework added
  • Keyword 'strictfp' added
  • Real JIT compiler is included with JVM
  • Swing API is integrated into core classes
  • Java IDL (Interface description language) for CORBA interoperability
  • Java plug-in added for Java applet support in web browsers

J2SE 1.3 (2000)

  • HotSpot JVM included - encompassing JIT compilation and adaptive optimization to further improve performance
  • Synthetic proxy classes - classes generated at runtime that are not in source code
  • Java Naming and Directory Interface (JNDI) included in core libraries
  • Java Platform Debugger Architecture (JPDA)
  • RMI compatibility with CORBA
  • JavaSound API

J2SE 1.4 (2002)

  • JAXP (Java API for XML Processing) added; an XML parser and XSLT processor
  • Regular expressions modeled after Perl
  • Chained exceptions introduced
  • IPv6 support added
  • NIO (New I/O) introduced for intensive I/O operations
  • Java Web Start
  • Preferences API
  • Logging API

J2SE 5.0 (2004)

  • Generics added
  • Annotations added
  • Auto-boxing/unboxing added
  • Enumerations - type safe, ordered list of values
  • Varargs
  • Enhanced for-each loop
  • Static imports
  • Scanner class: parses data from input streams and buffers
  • Concurrency utilities
    • Executor framework for invoking, scheduling and executing tasks
    • Concurrent collections: concurrent implementations of Map, List, and Queue
    • Atomic variable classes for atomically manipulating single variables 
    • Synchronizers: semaphores, mutexes, barriers, latches, and exchangers

Java SE 6 (2006)

Going forward, Sun renamed the library to Java SE.
  • JVM improvements: synchronization and compiler performance optimisations, garbage collection algorithms, and start-up performance
  • GUI improvements
  • Pluggable annotations allowing custom annotation processors
  • JAXB v2.0 (XML Binding) and addition of StAX parser (pull streaming XML with write capability)
  • JDBC v4.0 support
  • JAX-WS (XML Web Services)
  • Java Compiler API
  • Scripting language support

Java SE 7 (2011)

  • Strings in switch
  • try-with-resources Statement for automatic close of resource
  • Shorthand diamond operator <> for inferring generic type
  • @SafeVarargs annotation for disabling compiler warning when vararg is a non-refiable
  • Binary integer literals
  • Underscores in numeric literals

Java SE 8 (2014)


  • Lambda expressions (closures): an anonymous function that you can use to create delegates or expression tree types
  • New Date and Time API
  • Type annotations
  • Repeating annotations
  • Nashorn - lightweight high-performance JavaScript runtime



Read more at:
http://en.wikipedia.org/wiki/Java_version_history

5 comments: