Máquina virtual Java

Java Virtual Machine-First Understanding Java


Nota: Puede consultar este artículo sobre por qué desea aprender la máquina virtual Java:

¿Por qué aprender Java Virtual Machine?


Sistema de tecnología Java

En términos generales, Clojure, JRuby, Groovy y otros lenguajes y programas relacionados que se ejecutan en la máquina virtual Java pertenecen al sistema de tecnología Java. Si se ve solo en el sentido tradicional, el sistema de tecnología Java oficial de Sun incluye los siguientes componentes:

  • Lenguaje de programación Java
  • Máquinas virtuales Java en varias plataformas de hardware.
  • Formato de archivo de clase
  • Biblioteca API de Java
  • Bibliotecas Java de terceros de organizaciones comerciales y comunidades de código abierto.

Podemos referirnos colectivamente a las tres partes del lenguaje de programación Java, la máquina virtual Java y la biblioteca de clases API Java como JDK (Java Development Kit). El JDK es el entorno más pequeño para soportar el desarrollo de programas Java. En el siguiente contenido, para explicar la conveniencia, En algunos lugares, todo el sistema de tecnología Java será reemplazado por JDK. Además, las dos partes del subconjunto de API JavaSE y la máquina virtual Java en la biblioteca de clases de API Java pueden denominarse colectivamente JRE (Java Runtime Environment). JRE es un entorno estándar que admite la ejecución de programas Java. ("Comprensión profunda de la máquina virtual Java" 1.2)


Si se divide de acuerdo con los campos atendidos por la tecnología, o de acuerdo con las áreas comerciales clave relacionadas con la tecnología Java, el sistema de tecnología Java se puede dividir en 4 plataformas, a saber:

  • Java Card: una plataforma que admite algunos applets de Java (Applets) que se ejecutan en dispositivos de memoria pequeños (como tarjetas inteligentes).
  • Java ME (Micro Edition): una plataforma que admite programas Java que se ejecutan en terminales móviles (teléfonos móviles, PDA), optimiza la API de Java y agrega soporte para terminales móviles. Esta versión se llamaba anteriormente J2ME.
  • Java SE (Standard Edition): admite la plataforma Java para aplicaciones de nivel de escritorio (como las aplicaciones en Windows) y proporciona una API central de Java completa. Esta versión se llamaba anteriormente J2SE.
  • Java EE (Enterprise Edition): una plataforma Java que admite aplicaciones empresariales (como aplicaciones ERP y CRM) que utilizan una arquitectura de varios niveles. Además de proporcionar la API Java SE, también hace mucha expansión [3] y proporciona implementaciones relacionadas Sí, esta versión se llamaba anteriormente J2EE. ("Comprensión profunda de la máquina virtual Java" 1.2)

Historia de Java

  • El 23 de mayo de 1995, el lenguaje Oak cambió su nombre a Java, y Java 1.0 se lanzó oficialmente en la conferencia SunWorld. El lenguaje Java primero propuso el eslogan "Write Once, RunAnywhere".
  • El 23 de enero de 1996, se lanzó JDK 1.0, y el lenguaje Java tenía la primera versión oficial del entorno operativo. JDK 1.0 proporciona una implementación de máquina virtual Java puramente interpretada (Sun Classic VM). Las tecnologías representativas de JDK versión 1.0 incluyen:
    Java Virtual Machine, Applet, AWT, etc.
  • La primera conferencia de Java se celebró por primera vez en mayo de 1996.
  • En 1997, java1.1 lanzó el formato de archivo jar JDBC apareció la clase interna de reflexión javaBeans
  • En 1998, 1.2java comenzó a dividir la dirección. J2SE (Java 2 Platform, Standard Edition) para el desarrollo de aplicaciones de escritorio, J2EE (Java 2 Platform, Enterprise Edition) para el desarrollo de nivel empresarial y J2ME (Java 2 Platform, Micro Edition) para terminales móviles como teléfonos móviles. Hay muchas tecnologías representativas en esta versión, como EJB, Java Plug-in, Java IDL, Swing, etc., y esta versión de la
    máquina virtual Java por primera vez en el compilador JIT (Just In Time) incorporado, así como algunos Colección de colecciones de clase.
  • La máquina virtual HotSpot se introdujo en 1999.
  • En 2000, se lanzó 1.3 para proporcionar una nueva API Timer y operaciones matemáticas
  • Después de eso, se lanza una versión aproximadamente cada dos años. Fue lanzada en 2002 y básicamente madura. Las aplicaciones principales (Spring, Hibernate, Struts, etc.) pueden ejecutarse directamente en JDK 1.4, o continuar lanzando versiones que pueden ejecutarse en JDK 1.4. JDK 1.4 también lanzó muchas características técnicas nuevas, como expresiones regulares, cadenas de excepción, NIO, clases de registro, analizadores XML y convertidores XSLT, etc.
  • En 2002, se lanzó Microsoft.NET Framework. Comienza la batalla entre C # y Java.
  • En 2004, aparecieron 1.5 boxeo automático, genéricos, anotación dinámica, enumeración, parámetros de longitud variable y bucle transversal (bucle foreach). Se proporcionan paquetes concurrentes como java.util.concurrent.
  • En 2006, apareció 1.6. Sun finalizó los métodos de denominación J2EE, J2SE y J2ME que han existido durante 8 años desde JDK 1.2, y habilitó los métodos de denominación de Java SE 6, Java EE 6 y Java ME 6. Las mejoras en JDK 1.6 incluyen: proporcionar soporte de lenguaje dinámico (implementado a través del motor Mozilla JavaScript Rhino incorporado), proporcionar API de compilación y API de micro servidor HTTP. Al mismo tiempo, esta versión ha realizado muchas mejoras dentro de la máquina virtual Java, incluidos el bloqueo y la sincronización, la recolección de basura, la carga de clases y otros aspectos del algoritmo que se han cambiado mucho.
  • En 2006, se anunció que Java es de código abierto.
  • Lanzado en 1.7 en 2009, y experimentado mucho en el medio, se adquirió Sun Company. Las expresiones lambda que deberían haberse completado en 1.7 esperan hasta 1.8.

Desarrollo de máquinas virtuales Java

  • [Nota]: Ingrese java -version para ver la máquina virtual predeterminada actual

    versión java "1.7.0_79"

    Java (TM) SE Runtime Environment (build 1.7.0_79-b15)

    Java HotSpot (TM) 64-Bit Server VM (build 24.79- b02, modo mixto)

Sun Classic VM comienza en 1.0 y termina en 1.4

Esta máquina virtual solo puede usar un intérprete puro para ejecutar código Java. Si desea usar el compilador JIT, debe enchufarlo. Pero si el compilador JIT está enchufado, el compilador JIT se hace cargo completamente del sistema de ejecución de la máquina virtual, y el intérprete ya no funcionará. Dado que el intérprete y el compilador no pueden trabajar juntos, esto significa que si desea utilizar el compilador para ejecutar, el compilador tendrá que compilar cada método y cada línea de código, independientemente de si la frecuencia de su ejecución tiene el valor de compilación. Basado en la presión del tiempo de respuesta del programa, estos compiladores no se atreven a aplicar la tecnología de optimización que lleva un poco de tiempo compilar, por lo que la máquina virtual en esta etapa usa el compilador JIT para generar código local, y la eficiencia de ejecución también es similar a los programas C / C ++ tradicionales. Hay una gran brecha, la imagen del "lenguaje Java es muy lento" comenzó a acumularse en la mente de los usuarios en este momento.

VM exacta

java1.2 Su sistema de ejecución ya tiene el prototipo de máquinas virtuales modernas de alto rendimiento: como compilador en tiempo real de dos niveles, modo de trabajo mixto de compilador e intérprete, etc., pero morirá pronto.


HotSpot VM

Combina las ventajas de las dos primeras tecnologías de detección de código de punto caliente. ExactVM nunca lo hizo. Entonces . .


BEA JRockit / IBM J9 VM

JRockit VM solía llamarse "la máquina virtual Java más rápida del mundo". JRockit no contiene una implementación de analizador, y el compilador instantáneo compila y ejecuta todo el código. Además, la implementación del recolector de basura de JRockit y la suite de servicios MissionControl también ha sido líder entre muchas máquinas virtuales Java.


En 2008 y 2009, Oracle adquirió BEA y Sun respectivamente, por lo que Oracle también tiene dos excelentes máquinas virtuales Java: JRockit VM y HotSpot VM. Oracle anunció que completará la integración de estas dos máquinas virtuales en un futuro próximo (aproximadamente cuando se lance JDK 8) para complementar sus ventajas. El método de integración se basa básicamente en HotSpot, trasplantando las excelentes características de JRockit, como el uso del recolector de basura de JRockit y el servicio MissionControl, usando el compilador JIT de HotSpot y un sistema mixto de tiempo de ejecución.


Todo el contenido de este artículo proviene de "Comprensión profunda de la máquina virtual de Java"

Publicado 21 artículos originales · ganó 24 · vistas 20,000 +

Supongo que te gusta

Origin blog.csdn.net/qq_30332665/article/details/75140562
Recomendado
Clasificación