hi friend, I have created the project using the JDK 1.4. Now I want to use JDK 1.6 version in my project. for this what steps are required.Means I want to know the what changes is require in code to get a JDK 1.6 feature.Basically I am talking about the features that is added in JDK 1.6. If any one list out that changes it is very helpful.

Thanks in advance..............................

+1  A: 

What's new in JDK 6?

+1  A: 

There are so many changes added in 6.0. However all your 1.4 code will smoothly. For further reference about the version please see the following link


Hope it helps.

Except, if you use `Enum` as a class name :)
J-16 SDiZ
Enum as a class name was a indeed a problem in AXIS 1.3 or 1.4
@J-16 SDiZ - `Enum` as a class name shouldn't be a problem, it's the use of `enum` as field or method name or inside a package name.
+4  A: 

To my opinion, the four most prominent enhancements since Java 1.4.2 are

  • Generics
  • enums
  • enhanced for-loop and
  • Annotations

There are a lot of additional classes and API enhancements, but if you want to 'upgrade' your code, I'd suggest to start your refactoring with using generics and replacing standard for loops by enhanced for loops. Both can be done without major code changes, clean up the code (you can delete a lot of lines of code) and improve readability. And using generics might reveal some hidden bugs ;)

+6  A: 

Better to see differences between 1.4 and 1.5 and then between 1.5 and 1.6. You can check new features in each version on official web site, but below is a little chronology ...

JDK 1.0 (january 23, 1996) oak

  • Initial release

JDK 1.1 (february 19, 1997)

  • Retooling of the AWT event model
  • Inner classes added to the language
  • JavaBeans
  • JDBC
  • RMI

J2SE 1.2 (December 8, 1998) playground This and subsequent releases through J2SE 5.0 were rebranded retrospectively Java 2 & 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).

  • Strictfp keyword
  • Reflection
  • Swing api integration into the core classes
  • JVM equipped with a jit compiler
  • Java plug-in
  • Java IDL
  • An IDL implementation for corba interoperability
  • Collections Framework

J2SE 1.3 (may 8, 2000) kestrel

  • Hotspot jvm included
  • JavaSound
  • JNDI included in core libraries
  • Java platform debugger architecture (jpda)
  • RMI was modified to support optional compatibility with corba

J2SE 1.4 (february 6, 2002) merlin

  • assert keyword
  • Regular expressions
  • Exception chaining (allows an exception to encapsulate original lower-level exception)
  • Internet protocol version 6 (IPV6) support
  • Non-blocking nio (new input/output)
  • Logging API
  • Image i/o api for reading and writing images in formats like jpeg and png
  • Integrated XML parser and XSLT processor (JAXP)
  • Integrated security and cryptography extensions (JCE, JSSE, JAAS)
  • Java web start

J2SE 5.0 (september 30, 2004) tiger [originally numbered 1.5]

  • Generics: provides compile-time (static) type safety for collections and eliminates the need for most typecasts (type conversion).
  • 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.
  • Autoboxing/unboxing: automatic conversions between primitive types (such as int) and primitive wrapper classes (such as integer).
  • 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).
  • Swing: new skinnable look and feel, called synth.
  • Var args: 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 classesfix the previously broken semantics of the java memory model, which defines how threads interact through memory.
  • Automatic stub generation for rmi objects.
  • Static imports concurrency utilities in package java.util.concurrent.
  • Scanner class for parsing data from various input streams and buffers.
  • Assertions
  • StringBuilder class (in java.lang package)
  • Annotations

Java SE 6 (december 11, 2006) mustang sun replaced the name "J2SE" with java se and dropped the ".0" from the version number. Beta versions were released in february and june 2006, leading up to a final release that occurred on december 11, 2006. The current revision is update 20.

  • Support for older win9x versions dropped.
  • Scripting lang support: Generic API for integration with scripting languages, & built-in mozilla javascript rhino integration
  • Dramatic performance improvements for the core platform, and swing.
  • Improved web service support through JAX-WS JDBC 4.0 support
  • Java compiler API: an API allowing a java program to select and invoke a java compiler programmatically.
  • Upgrade of JAXB to version 2.0: including integration of a stax parser.
  • Support for pluggable annotations
  • Many GUI improvements, such as integration of swingworker in the API, table sorting and filtering, and true swing double-buffering (eliminating the gray-area effect).

Java se 6 update 10 A major enhancement in terms of end-user usability.

  • Java Deployment Toolkit, a set of javascript functions to ease the deployment of applets and java web start applications.
  • Java Kernel, a small installer including only the most commonly used jre classes. Enhanced updater.
  • Enhanced versioning and pack200 support: server-side support is no longer required.
  • Java quick starter, to improve cold start-up time.
  • Improved performance of java2D graphics primitives on windows, using direct3D and hardware acceleration.
  • A new Swing look and feel called NIMBUS and based on synth.
  • Next-generation java plug-in: applets now run in a separate process and support many features of web start applications.

Java se 6 update 12 This release includes the highly anticipated 64-bit java plug-in (for 64-bit browsers only), windows server 2008 support, and performance improvements of java and JAVAFX applications.


You can check in wikipedia till latest update.

Note that this can be found here: http://en.wikipedia.org/wiki/Java_version_history. (I'd preferred a simple link to wikipedia instead of a copy'n'paste)

The important details on 1.5 extensions are covered in these slides which provides also code examples.

+2  A: 

I have created the project using the JDK 1.4. Now I want to use JDK 1.6 version in my project. For this what steps are required.

Actually, there is (almost) nothing that you need to start to make a JDK 1.4 application run using JDK 1.6. In nearly all cases, you simply need to recompile the code with the JDK 1.6 compiler and run it in a JDK 1.6 JVM. The only problems you are likely to encounter are:

  • If your code uses "enum" as an identifier, you will need to change it to something else. enum is a keyword starting in Java 1.5.

  • If your code directly depends on Sun proprietary / internal classes, you may need to deal with unannounced API changes.

  • You might find the certain official API classes or methods have been marked as deprecated.

  • There are a small number of changes in API implementations / behaviors with each release that may impact your application. These are typically highlighted in the document on upgrading.

Once you have got your application working on Java 1.6, you can then think about whether and when to start using the Java 1.5 language extensions, and the new / enhanced APIs in the class libraries.

Stephen C

There is a big difference in behaviour for volatile keyword in 1.5 - more along the lines of C# away from C++ behaviour. But it only makes the code safer. So no code changes.