This is the 25th day of my participation in the August Genwen Challenge.More challenges in August”

Java virtual machine has increasingly become an important part of the Interview for Internet companies. For Java developers, only after understanding the principles behind Java, can they write higher-quality code, and quickly locate problems and find solutions in the complex bugs.

JVM knowledge system of virtual machine is one of the most Java engineer will meet the bottleneck, is also a Java engineer towards the road to pay the necessary skills, a lot of times the Java engineer or choose never to challenge this bottleneck, or just simply know the JVM basic architecture, not indulge down the JVM learning system, As a result, the bottleneck still exists and only know what it is, but don’t know why, and finally miss the opportunity in front of you, resulting in a strange phenomenon that the JVM virtual machine knowledge vortex can not get out of forever.

Today’s article will take you through the introduction of the Java Virtual machine to help you understand Java as it is and why.

Introduction of the JVM

Virtual machine concepts, JVM definitions, JVM specifications, and JVM products

1. Vm Concepts

A virtual machine is a virtual computer, a piece of software that executes a series of virtual computer commands. In general, virtual machines can be divided into system virtual machines and program virtual machines. VMware is a system virtual machine, which is a complete simulation of a physical computer and provides a software platform that can run a complete operating system. The typical representative of program virtual machine is Java virtual machine.

2. The JVM is defined

  • Java virtual machine is the cornerstone of the entire Java platform, a key part of Java technology to achieve hardware independence and operating system independence, a running platform for Java language to generate a small volume of compiled code, and a barrier to protect user machines from malicious code damage.

  • The Java virtual machine can be thought of as an abstract computer just like a real computer, with its own instruction set and various run-time memory areas.

  • The Java virtual machine is not necessarily related to the Java language, but to a particular binary file format, the Class file format, which contains the Java virtual machine instruction set (or bytecode), symbol tables, and other auxiliary information.

3. The JVM specification

  • The Java Virtual Machine specification is an official design and convention for the exact Java virtual machine architecture, and the specific Java virtual machine is an implementation of the official Java virtual machine specification.

  • Java Virtual machine specifications vary with JDK versions

  • Official Java VIRTUAL machine specification address

Docs.oracle.com/javase/spec…

4. The JVM products

  • Classic VM (Early Sun Java Virtual Machine)

  • Exact VM (on early Solaris platforms)

  • HotSpot (OracleJDK and OpenJDK default)

  • JRockit (BEA, acquired by Oracle and integrated into HotSpot)

  • J9 (IBM Business)

  • Google Android Dalvik VM (Android)

  • KVM, CDC, CLDC (Embedded domain)

  • Microsoft JVM (Microsoft)

  • Graal VM (Cross-language Full Stack Virtual Machine Run Programs Faster Anywhere)

The history of the JVM

January 23, 1996

JDK 1.0 was released, providing a Java virtual machine implementation of pure interpreted execution (Sun Classic VM)

Representative technologies of JDK 1.0 include: Java virtual machine, applets, AWT, etc

February 19th, 1997

JDK 1.1 release, many of Java’s most basic technical support points (such as JDBC, etc.)

JDK 1.1 includes JAR file formats, JDBC, JavaBeans, RMI, Inner classes, Reflection, and more

December 4, 1998

JDK 1.2 release, Java technology system split into three directions, J2SE, J2EE, J2ME

JDK 1.2 includes: EJB, Java Plug-in, Java IDL, Swing, and this is the first Java virtual machine with a just-in-Time (Just in Time) compiler (there were three virtual machines in JDK 1.2, Classic VM, HotSpot VM and Exact VM, the Collections collection class, strictFP (Strict Float Point) keyword

 May 8, 2000

JDK 1.3 is released, and the default VM is a Hot-spot VM

JDK version 1.3 represents technologies such as JNDI, hot-spot VIRTUAL machines, mathematics and the new Timer API, Java 2D API, and JavaSound class libraries

February 13, 2002

JDK 1.4 was released, the first release where Java really came of age

JDK version 1.4 represents technologies such as regular expressions, exception chains, NIO, logging classes, XML parsers, and XSLT converters

September 30, 2004

JDK 5 released, named way to change the previous 1.x solution, direct X solution

JDK version 5 represents technologies such as syntactically automated boxing, generics, dynamic annotations, enumerations, variable-length arguments, and foreach loops. At the virtual machine and API level, this release improves the Java Memory Model (JMM), provides java.util.concurrent, and packages

December 11, 2006

Java EE 6, Java SE 6, and Java ME 6 will be named after Java EE 6, Java SE 6, and Java ME 6.

JDK 6 represents the following technologies: Offering initial dynamic language support (via the built-in Mozilla JavaScript Rhino engine), compile-time annotation processors, and miniature HTTP server apis, this release makes a number of improvements inside the Java Virtual Machine. The implementation of locking and synchronization, garbage collection, class loading, and so on has undergone considerable changes.

Open source JDK: An OpenJDK organization has been established to manage the source code independently, and Hotspot is the default VIRTUAL machine

In 2008,

In 2008, Oracle acquired BEA and acquired the JRockit virtual machine

April 20, 2009

Oracle announced a $7.4 billion deal to buy Sun, once valued at more than $200 billion

Oracle got the Hotspot VIRTUAL machine and plans to merge JRockit and Hotspot (just plans)

July 28, 2011

JDK 7 was released, skipping the Lambda project, dynamic language support, Jigsaw project, garbage-First collector, Coin Project

JDK 7 includes new garbage collector Gl, NIO2.0, and invokedynamic directives

March 18, 2014

Following the release of the JDK 8, which provided functionality that had been planned for, but ultimately failed to be implemented in JDK 7, And continued with the Jigsaw project, Oracle enabled JEP (JDK Enhancement Proposals) to define and manage features that would be included in the release of the new JDK

JDK 8 represents the following technologies:

  • Ep-126 (Support for Lambda expressions)

  • Ep-104 (built-in Nashorn JavaScript engine support)

  • Ep-150 (New time and date API)

  • Ep-122 (Permanent generation to remove HotSpot completely)

September 21, 2017

JDK 9 released, 91 Jeps

JDK 9 represents the following technologies: the Jigsaw project, proprietary interface methods, G1 default garbage collector, I/O stream enhancement, and JShell tools

March 20, 2018

JDK 10 released with 17 Jeps

JDK 10 represents technologies such as local variable type inference, thread-local handshake, GC improvements, and memory management

1.14 September 25, 2018* * * *

JDK 11 was released (LTS version (3 years support and update, JDK8 is ALSO LTS), with 17 Jeps, including revolutionary garbage collectors like THE ZGC

JDK 11 includes string enhancement, HttClient Api, and ZGC

JVM Data site

Oracle official website Java document download

Docs.oracle.com/en/java/jav…

Its official website

openjdk.java.net

The JVM specification

Docs.oracle.com/javase/spec…

DZone will have IT news and articles, AI, big data, cloud, database, DevOps, IoT, Java and open source projects, introduction of new Java features and use of new features

dzone.com/

Java World is a pure Java learning site, it includes a lot of Java articles, it is different from DZone so much, Java World only focus on Java, learning Java new features indispensable site

www.javaworld.com/