Java: A general term for the Java programming language and Java platform launched by Sun Microsystems in May 1995. Java is an object-oriented programming language that can write cross-platform application software. It was developed in the early 1990s by James Gosling, who was working in Sun Microsystems at the time. It was originally named Oak. With the rapid development of the Internet, Java has gradually become an important network programming language.
It has been nineteen years since the first version of Java was born. Time passes by, and it passes in a flash. 19 years have passed in the blink of an eye. In the timeline shown in the figure below, we see that JDK has developed to version 1.8. In these 19 years, countless Java-related products, technologies and standards have been born. Now let’s enter the time tunnel and start from the era when the Java language was nurtured, and review the development trajectory and historical changes of Java.
In April 1991, the Green Project, led by Dr. James Gosling, was launched, aiming to develop a program architecture that can run on a variety of consumer electronics products such as set-top boxes, refrigerators, radios, etc. The product of this project is the predecessor of the Java language: Oak (Oak). Oak was not successful in the consumer goods market at that time, but with the rise of the Internet trend in 1995, Oak quickly found the market position that suits its development and transformed into a Java language.
On May 23, 1995, the Oak language was renamed Java and the Java 1.0 version was officially released at the SunWorld Conference. Java language first put forward the slogan "Write Once, Run Anywhere".
On January 23, 1996, JDK 1.0 was released, and the Java language had its first official version of the running environment. JDK 1.0 provides a purely interpreted execution Java virtual machine implementation (Sun Classic VM). Representative technologies of JDK version 1.0 include: Java virtual machines, AWT, etc.
In April 1996, 10 of the most important operating system suppliers announced that they would embed Java technology in their products. In September of the same year, about 83,000 web pages were produced using Java technology. At the end of May 1996, Sun held its first JavaOne Conference in San Francisco, USA. Since then, JavaOne has become an annual technical event for millions of Java language developers around the world.
On February 19, 1997, Sun released JDK 1.1. Some of the most basic support points of Java technology (such as JDBC, etc.) were released in JDK 1.1 version. The technical representatives of JDK 1.1 version include: JAR file format, JDBC, JavaBeans, and RMI. Java syntax has also developed to a certain extent, such as Inner Class and Reflection appearing at this time.
Until April 8, 1999, JDK 1.1 released a total of nine versions: 1.1.0 to 1.1.8. Since 1.1.4, each JDK version has its own name (project code), namely: JDK 1.1.4 - Sparkler (gem), JDK 1.1.5 - Pumpkin (pumpkin), JDK 1.1.6 - Abigail (Abigail, female name), JDK 1.1.7 - Brutus (Brutu, Roman politician and general) and JDK 1.1.8 Chelsea (Chelsea, city name).
On December 4, 1998, JDK ushered in a milestone version of JDK 1.2, with the project code name Playground. In this version, Sun splits the Java technology system into three directions, namely J2SE (Java 2 Platform, Standard Edition), J2EE (Java 2 Platform, Enterprise Edition) for enterprise-level development, and J2ME (Java 2 Platform, Micro Edition) for mobile terminals such as mobile phones. There are many representative technologies that appear in this version, such as EJB, Java Plug-in, Java IDL, Swing, etc. In this version, the Java virtual machine has built-in JIT (Just In Time) compiler for the first time (3 virtual machines coexist in JDK 1.2, Classic VM, HotSpot VM and Exact VM, among which Exact VM only appeared on the Solaris platform; the latter two virtual machines have built-in JIT compilers, and the Classic VM brought in the previous version can only use the JIT compiler in the form of plug-ins). At the language and API level, Java adds strictfp keywords and a series of Collections collection classes that are very commonly used in Java encoding.
In March and July 1999, two small versions, JDK 1.2.1 and JDK 1.2.2, were released respectively.
On April 27, 1999, the HotSpot virtual machine was released. HotSpot was originally developed by a small company called "Longview Technologies". Due to the outstanding performance of HotSpot, the company was acquired by Sun in 1997. The HotSpot virtual machine was released as an additional program to JDK 1.2, and later it became the default virtual machine for JDK 1.3 and all versions of Sun JDK.
On May 8, 2000, JDK 1.3, whose project code is Kestrel, was released. The improvements of JDK 1.3 compared to JDK 1.2 are mainly reflected in some class libraries (such as mathematical operations and the new Timer API, etc.). The JNDI service has been provided as a platform-level service since JDK 1.3 (JNDI was just an extension before), using CORBA IIOP to implement RMI communication protocols, etc. This version also makes a lot of improvements to Java 2D, provides a large number of new Java 2D APIs, and adds a new JavaSound class library. JDK 1.3 has a revised version of JDK 1.3.1, with the project code name Ladybird, and was released on May 17, 2001.
Since JDK 1.3, Sun has maintained a habit of releasing a major version of JDK about every two years, named after animals, and the various revisions released during the period are named by insects.
On February 13, 2002, JDK 1.4 was released, with the project code name Merlin (Grey Back Falcon). JDK 1.4 is a version of Java that has truly matured. Famous companies such as Compaq, Fujitsu, SAS, Symbian, and IBM have participated and even realized their own independent JDK 1.4. Even more than ten years later, there are still many mainstream applications (Spring, Hibernate, Struts, etc.) that can run directly on JDK 1.4, or continue to release versions that can run on JDK 1.4. JDK 1.4 also released many new technical features, such as regular expressions, exception chains, NIO, log classes, parsers and XSLT converters.
JDK 1.4 has two subsequent revisions:
JDK 1.4.1, the project codename Grasshopper, released on September 16, 2002
The project codenamed Mantis JDK 1.4.2 released on June 26, 2003.
Around 2002, an incident that had no direct relationship with Java, but in fact had a great impact on the development of Java, was released by Microsoft's .NET work. This technology platform, which is very similar to Java in both technical implementation and target users, has brought a lot of discussion, comparison and competition to Java. The huge debate between the .NET platform and the Java platform has continued so far.
On September 30, 2004, JDK 1.5 was released, with the project code name Tiger. Since JDK 1.2, Java's transformation at the syntax level has been very small, and JDK 1.5 has made great improvements in the ease of use of Java syntax. For example, syntax features such as automatic boxing, generics, dynamic annotations, enumerations, variable length parameters, and traversal loops (foreach loops) are all added in JDK 1.5. At the virtual machine and API level, this version improves Java's memory model (JMM), provides java.util.concurrent concurrency package, etc. In addition, JDK 1.5 is the last JDK version that officially declares that it can support the Windows 9x platform.
On December 11, 2006, JDK 1.6 was released, with the project code name Mustang (Mustang). In this version, Sun ended the naming methods of J2EE, J2SE, and J2ME that have been around for 8 years since JDK 1.2, and enabled the naming methods of Java SE 6, Java EE 6, and Java ME 6. Improvements to JDK 1.6 include: providing dynamic language support (implemented through the built-in Mozilla Java Rhino engine), providing compilation API and mini HTTP server API, etc. At the same time, this version has made a lot of improvements to the Java virtual machine, including locking and synchronization, garbage collection, class loading and other algorithms.
At the JavaOne Conference on November 13, 2006, Sun announced that it would finally open source Java, and in the following year, various parts of the JDK were successively disclosed under the GPL v2 (GNU General Public License v2) protocol, and established an OpenJDK organization to independently manage these source codes. In addition to a very small amount of property rights code (Encumbered Code, which mostly Sun itself has no permission to open source processing), OpenJDK includes almost all the codes of Sun JDK. The quality manager of OpenJDK once said that in JDK 1.7, the codes of Sun JDK and OpenJDK are basically the same except for the copyright annotations of the code file headers, so OpenJDK 7 and Sun JDK 1.7 are essentially products developed by the same set of code bases.
After the release of JDK 1.6, due to the increase in code complexity, JDK open source, development of JavaFX, economic crisis and Sun acquisition, Sun spent a lot of resources on things other than JDK development, and the update of JDK did not maintain the development speed of releasing a major version for another two years. JDK 1.6 has released a total of 37 Update versions so far. The latest version is Java SE 6 Update 37, which was released on October 16, 2012.
On February 19, 2009, JDK 1.7, code-named Dolphin, completed its first milestone version. According to the functional planning of JDK 1.7, a total of 10 milestones have been set. The last milestone version was originally scheduled to end on September 9, 2010, but JDK 1.7 was ultimately unable to complete as planned for various reasons.
Judging from the initial functional planning of JDK 1.7, it should be a JDK version that contains many important improvements. The sub-projects such as Lambda project (Lambda expressions, functional programming), Jigsaw project (modular support of virtual machines), dynamic language support, GarbageFirst collector and Coin project (language details evolution) will have a profound impact on the Java industry. During the development of JDK 1.7, Sun Company was in a quagmire in both technological and commercial competitions, and its stock market value fell to only 3% of its peak period, and was no longer able to promote the development of JDK 1.7 as normal. In order to end the long-term "stop" of JDK 1.7 as soon as possible, Oracle announced shortly after acquiring Sun, it would implement the "Plan B" and significantly cut the predetermined target of JDK 1.7 to ensure that the official version of JDK 1.7 can be released on time on July 28, 2011. "Plan B" delays some improvements to JDK 1.8 that cannot be completed on time. Finally, the main improvements of JDK 1.7 include: providing a new G1 collector (G1 was still in the Experimental state when it was released, and it was not officially "reformed" until Update 4 in April 2012), strengthening call support for non-Java languages (JSR-292, this feature has not been fully implemented so far), upgrading the class loading architecture, etc.
So far, JDK 1.7 has released 9 Update versions, and the latest Java SE 7 Update 9 was released on October 16, 2012. Starting from Java SE 7 Update 4, Oracle has started to support the Mac OS X operating system and reached full support in Update 6. At the same time, it also provides support for the ARM instruction set architecture in Update 6. So far, the official JDK can run on Windows (excluding Windows 9x), Linux, Solaris and Mac OS platforms, and supports ARM, x86, x64 and Sparc instruction set architecture types.
On April 20, 2009, Oracle announced that it had officially acquired Sun for US$7.4 billion, and the Java trademark was officially owned by Oracle (the Java language itself does not belong to any company, it is managed by JCP organization, although JCP is mainly led by Sun or Oracle). Since Oracle has previously acquired another large middleware company, BEA, after completing the acquisition of Sun, Oracle has obtained two of the current three major commercial virtual machines from BEA and Sun, JRockit and HotSpot. Oracle announced that in the next 1 to 2 years, it will learn from each other's strengths and weaknesses and finally merge them into one. It can be foreseen that in the near future, Java virtual machine technology will undergo considerable changes.
On July 28, 2011, Oracle released Java SE 1.7
On March 18, 2014, Oracle released Java SE 1.8
The Java language has the following features: simplicity, object-oriented, distributed, interpreted execution, robust, secure, architecture neutral, portable, high performance, multi-threading, and dynamic.