Application Development: Oracle and Java 7: The Top 10 Developer Features

 
 
By Darryl K. Taft  |  Posted 2011-07-27
 
 
 

Oracle and Java 7: The Top 10 Developer Features

-Project Coin: Diamond OperatorProject Coin is also known as Java Specification Request 334: Small language enhancements. It consists of a set of small language changes to simplify common, day-to-day Java programming tasks: Strings in switch statements, try-with-resources statements, improved type inference for generic instance creation ("diamond"), simplified varargs method invocation, better integral literals, and improved exception handling (multi-catch). The Diamond Operator reduces Java's verbosity surrounding generics by having the compiler infer parameter types for constructors of generic classes, says Dustin Marx.

Oracle and Java 7: The Top 10 Developer Features

Project Coin: Try-With-Resources

According to Arul Dhesiaseelan, Try-with-resources (originally known as Automatic Resource Management) is a Project Coin proposal that made its way into recent JDK 7 builds. Traditionally, developers had to manually terminate any resources (files, database connections, etc.) they use in applications. It could be difficult keeping track, and not doing so could lead to problems such as resource leaks that could lead to application failures that are hard to debug and triage. Java 7 will now natively support managing resources.

Project Coin: Try-With-Resources

Project Coin: Strings in Switch

In the JDK 7 release, developers can use a String object in the expression of a switch statement. The switch statement compares the String object in its expression with the expressions associated with each case label as if it were using the String.equals method. Because of this, the comparison of String objects in switch statements is case-sensitive. The Java compiler generates more efficient byte code from switch statements that use String objects than from chained if-then-else statements.

Project Coin: Strings in Switch

InvokeDynamic

Also known as JSR 292: Support for dynamically typed languages, InvokeDynamic adds extensions to the JVM (Java Virtual Machine), Java language and Java SE (Java Standard Edition) API to support the implementation of dynamically typed languages at performance levels near to that of the Java language itself. This effort is related to the Da Vinci Machine Project, which attempts to create a multi-language renaissance for the Java Virtual Machine architecture.

InvokeDynamic

Fork/Join Framework

Also known as JSR-166y Concurrency and Collections updates, this is a lightweight fork/join framework with flexible and reusable synchronization barriers, transfer queues, concurrent linked double-ended queues, and thread-local pseudo-random-number generators. Fork/Join is a Java framework for supporting a style of parallel programming in which problems are solved by splitting them into subtasks that are solved in parallel, waiting for them to complete, and then composing the results. Fork/Join parallelism is among the simplest and most effective design techniques for obtaining good parallel performance. Fork/join algorithms are parallel versions of familiar divide−and−conquer algorithms.

Fork/Join Framework

NIO.2 Filesystem API

Also known as More New I/O APIs for the Java Platform, this project's mission is to implement the (New) New I/O APIs being defined by JSR 203 as well as related work in the JDK. The Java I/O File API initially was not written to be extended. Many of the methods were created without exceptions, so they failed to throw I/O exceptions, frustrating developers. Applications often failed during file deletion, with developers asking why no useful error message had been generated. The rename method was inconsistent across volumes and file systems, methods for gaining simultaneous metadata about files were inefficient, and developers wanted greater access to metadata such as file permissions, as well as more efficient file copy support and file change notification. Developers wanted the ability to develop their own file system implementations. The Java NIO.2 packages address these and other needs.

NIO.2 Filesystem API

XRender Pipeline for Java 2D

The XRender pipeline for Java 2D is a new Java2D graphics pipeline based upon the X11 XRender extension, which provides access to much of the functionality of modern GPUs. The project goal is to create a new Java2D graphics pipeline based on the X11 XRender extension.

XRender Pipeline for Java 2D

Gervill Sound Synthesizer

Gervill is a software sound synthesizer that was created for the open-source JDK Audio Synthesis Engine Project. The goal of the JDK is to create a new open-source JDK software midi synthesizer implementation.

Gervill Sound Synthesizer

Upgraded Class-Loader Architecture

The upgraded class-loader architecture features modifications to the ClassLoader API and implementation to avoid deadlocks in non-hierarchical class-loader topologies.

Upgraded Class-Loader Architecture

SDP (Sockets Direct Protocol)

This feature provides implementation-specific support for reliable, high-performance network streams over Infiniband connections on Solaris and Linux.

SDP (Sockets Direct Protocol)

Rocket Fuel