The Java Compiler API, which is more commonly known as JSR 199, permits programmers to compile source code within an application itself. Meanwhile, the java.awt.Desktop API offers integration with third-party applications, including Microsoft Word, Mozilla Thunderbird and Internet Explorer. The Java Platform Debugger Architecture, or JPDA, from JDK 1.5 now has the capability to detect deadlocks and trace their origins. It can also attach itself to an operational Java virtual machine to perform diagnostic testing.
Oracle Corporation released JDK 1.6 in 2006 as an upgrade from Java 1.5, which was released in 2004. Codenamed Mustang and primarily known as Java Platform Standard Edition 6 or Java SE 6, JDK 1.6, it brought with it a plethora of improvements, including but not limited to faster performance, better security patches, upgraded Java libraries, the introduction of several new modules and many improvements to the graphical user interface.
JDK 1.6 introduced scripting for the Java platform API via JSR 233. It allows Java applications to invoke script engines at runtime through a "service discovery" mechanism. This permits developers to include scripts from Groovy, Python and Ruby in their applications. It also grants developers the power to instantiate classes directly from a script. The benefit to this is that repetitive tasks can be automated for users, thus making their lives easier.
An improved version of the JMX Monitoring API allows programmers to trigger specified events when certain MBean object attributes pass beyond a particular value. The Hotspot JVM includes hooks for monitoring JVM activities, including but not limited to class loading, garbage collection and threads. The JVM allows scripts to be run even when the heap is full. JDK 1.6 also features a stack trace that enhances the detection of memory leaks and fatal errors.
One of the most notable benefits of JDK 1.6 is the incorporation of JDBC 4.0, which is short for the Java Database Connectivity API, version 4.0. A new DriverManager class handles the loading and registration of all JDBC drivers, which means developers need not use the "Class.forName()" function to manually register them. In addition, SQL query strings may now be specified using a simple Annotation keyword, meaning developers don't have to search extensively through different files for the appropriate code and database query.