The JDK full name Java Development Kit is a set of software development tools for the Java http://www.aliyun.com/zixun/aggregation/7155.html "> developers, including JRE (Java Runtime Environnement), as well as Java, Jar, Javac, JAVAP, Javah, Javaws and other tools. Since Sun company released on December 11, 2006 JDK6 to Oracle company released on July 28, 2011 JDK7, lasted as long as 5 years, during the period experienced many big and small events. So first of all, let's review the ups and downs of JDK7 development history.
January 2009, Sun began to develop JDK7 Milestone 1.
At the Devoxx 2009 conference in November 2009, Sun announced the inclusion of closure features in JDK7 and postponed the release date of JDK7 to the end of 2010.
Oracle acquires Sun in April 2010.
In September 2010, Mark Reinhold announced at the JavaOne convention that JDK7 would chop off the new features of the LAMBDA, Jigsaw and Coin, and release it in 2011, with the remainder of the new features being released with JDK8 at the end of 2012.
In October 2010, IBM announced that it would join OpenJDK to develop the JDK together with Oracle. Since then, Apple and SAP have joined the OpenJDK community.
July 28, 2011, Oracle officially released JDK7 and designated OPENJDK7 as a reference implementation.
September 19, 2011, IBM officially released IBM JDK7.
After a series of events such as the postponement of the release, Sun being acquired, the deletion of new features, and the postponement of the release, JDK7 finally came to us, so JDK7 what important new features are there? This series of articles will be presented to the reader individually.
JSR292: Support for dynamic type language (invokedynamic)
Figure 1. Project icon--a helicopter designed by Leonardo da Vinci
The emergence of more and more dynamic languages based on JVMs in recent years has brought new requirements and challenges to the JVM. In fact, the scripting language on the Jsr223:java platform is already supported in JDK6, and scripting languages such as JavaScript are executed on the JVM via a scripting language engine. However, since the design of the JVM itself was originally intended for the static type language of Java, the scripting language, whether it was an interpretation execution, a virtual type at compile time, or the use of a reflection mechanism, would have a significant impact on the efficiency of execution.
The implementation of JSR292 adds a invokedynamic byte code instruction to support the dynamic type language, which makes it unnecessary to determine the signature of the method, i.e. the type of the method parameter and the return type, when compiling the source code into bytecode. When the runtime executes the invokedynamic instruction, the JVM uses the new dynamic link mechanism method Handles to find the real way.
With invokedynamic, the execution speed of the dynamic type language on the JVM is greatly improved, and the detailed implementation details and examples will be described in detail in future series articles.