Codename '''Tiger'''.
(Originally numbered 1.5, which is still used as the internal version number. [http://java.sun.com/j2se/1.5.0/docs/relnotes/version-5.0.html]) Developed under [http://www.jcp.org/en/jsr/detail?id=176 JSR 176], Tiger added a number of significant new language features: [http://www.sun.com/smi/Press/sunflash/2004-09/sunflash.20040930.1.html press release] [http://java.sun.com/j2se/1.5/docs/relnotes/features.html full list of changes]
*; [[Generic programming|Generics]] —: providesProvides compile-time (static) [[type safety]] for collections and eliminates the need for most [[typecasting (programming)|typecasts]]. (Specified by [http://www.jcp.org/en/jsr/detail?id=14 JSR 14].)
*; [[Metadata (computing)|Metadata]] — alsoAlso called [[Java annotation|annotation]]s, 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 [http://www.jcp.org/en/jsr/detail?id=175 JSR 175].)
*; [[Autoboxing]]/unboxing —: automaticAutomatic conversions between [[primitive type]]s (such as <code>int</code>) and [[primitive wrapper class]]es (such as {{Javadoc:SE|java/lang|Integer}}). (Specified by [http://www.jcp.org/en/jsr/detail?id=201 JSR 201].)
*; [[Enumeration (programming)|Enumerations]] —: theThe <code>enum</code> keyword creates a [[type safety|typesafe]], ordered list of values (such as <code>Day.MONDAY</code>, <code>Day.TUESDAY</code>, etc.). Previously this could only be achieved by non-typesafe constant integers or manually constructed classes (typesafe enum pattern). (Specified by [http://www.jcp.org/en/jsr/detail?id=201 JSR 201].)
*; [[Variadic function|Varargs]] —: theThe last parameter of a method can now be declared using a type name followed by three dots (e.g. <code>void drawtext(String... lines)</code>). 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 <code>for</code> [[program loop|loop]] —: theThe <code>for</code> loop syntax is extended with special syntax for iterating over each member of either an array or any {{Javadoc:SE|java/lang|Iterable}}, such as the standard {{Javadoc:SE|java/util|Collection}} classes, using a construct of the form:
<!-- The table below indents the code example and following text by 16 pixels -->
Codename '''Mustang'''.
This was developed under [http://www.jcp.org/en/jsr/detail?id=270 JSR 270]. During the development phase, new builds including enhancements and bug fixes were released approximately weekly. Beta versions were released in February and June 2006 and are available at [http://java.sun.com/javase/6/ http://java.sun.com/javase/6/]. The final release occurred on [[December 11]], [[2006]].
=== Release nomenclature ===
As of this version, Sun replaced the name "J2SE" with '''Java SE''' and dropped the ".0" from the version number.[http://www.java.com/en/about/brand/naming.jsp] Internal numbering for developers remains 1.6.0. [http://java.sun.com/javase/6/webnotes/version-6.html]
|