eWEEK content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.
1Oracle 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.
2Project 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.
3Project 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.
4InvokeDynamic
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.
5Fork/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.
6NIO.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.
7XRender Pipeline for Java 2D
8Gervill Sound Synthesizer
9Upgraded Class-Loader Architecture
10SDP (Sockets Direct Protocol)
This feature provides implementation-specific support for reliable, high-performance network streams over Infiniband connections on Solaris and Linux.