Java Virtual Machine (JVM) y principios de plataforma cruzada <Br /> Creo que todos han aprendido que Java tiene características multiplataforma, se pueden "compilarse a la vez y ejecutar en todas partes". Modificaciones.
Entonces, ¿cómo se implementa la plataforma cruzada? Esto implica hablar sobre Java Virtual Machine (JVM).
JVM también es un software, y diferentes plataformas tienen diferentes versiones. El código fuente de Java que escribimos generará un archivo .class llamado un archivo bytecode después de la compilación. La máquina virtual Java es responsable de traducir el archivo Bytecode en el código de la máquina en una plataforma específica y luego ejecutarlo. En otras palabras, siempre que el JVM correspondiente esté instalado en diferentes plataformas, puede ejecutar el archivo ByTecode y ejecutar el programa Java que escribimos.
Durante este proceso, el programa Java que escribimos no realizó ningún cambio.
JVM es un "puente" y un "middleware" que es la clave para la implementación de la plataforma cruzada. objetivo.
Nota: El resultado de la compilación no es generar el código de la máquina, sino generar ByTecode. El bytecode generado por compilación y generación en diferentes plataformas es el mismo, pero el código de la máquina traducido por JVM es diferente.
Por lo tanto, la ejecución de programas Java debe tener soporte JVM, porque el resultado de la compilación no es el código de la máquina, y debe ser traducido nuevamente por el JVM antes de la ejecución. Incluso si empaqueta los programas Java en ejecutables (como .exe), aún necesita soporte JVM.
Nota: Programas Java multiplataforma, no JVM. JVM se desarrolla en C/C ++ y se compila en el código de la máquina.
Sobre la eficiencia de ejecución de JVM
En los últimos años de lanzamiento de Java, la gente tenía opiniones diferentes.
Sin embargo, el JVM tiene la opción de traducir y guardar el código de bytecode más utilizado en el código de la máquina, un proceso conocido como compilación instantánea. Este método es de hecho muy efectivo, lo que ha llevado al uso de máquinas virtuales en la plataforma .NET de Microsoft.
Los compiladores oportunos ahora son bastante excepcionales e incluso se han convertido en competidores de compiladores tradicionales, y en algunos casos incluso superan a los compiladores tradicionales porque el JVM puede monitorear la información de tiempo de ejecución. Por ejemplo, un compilador instantáneo puede monitorear y optimizar el código que se usa con frecuencia, eliminando las llamadas de función (es decir, "incrustado").
Sin embargo, Java tiene una sobrecarga adicional que C/C ++ no tiene, y las aplicaciones clave son más lentas. Por ejemplo, Java adopta un método de dibujo independiente de la plataforma, y la ejecución de programas de GUI (programas de clientes) también es lenta;
El fracaso del mercado del cliente
La biblioteca GUI de Java no es excelente, la interfaz no es amigable y la mayoría de los usuarios no están acostumbrados a ella;
Lo que es aún más inaceptable es que después de que Microsoft divide sus propios intereses y Sun, Windows ya no tiene JVM preinstalado. . Pero ¿puedes esperar que sepa sobre JVM e instale la configuración correctamente?
Aunque puede integrar el JVM en su programa, instalarlo automáticamente y configurarlo, y no permitir la intervención del usuario, ¿desea venir con un JVM que sea mucho más grande que su programa? Puede ser aceptable que un software haga esto. ¿Cuánto se desperdicia el espacio en disco?
Por lo tanto, se desarrollan pocos programas de clientes para usuarios comunes que se lanzan directamente en el mercado en Java. Si desea participar en el desarrollo del cliente, se recomienda aprender C/C ++ y .NET, que tienen grandes ventajas en el desarrollo del cliente de Window.
Varias razones están destinadas a ser desfavorables para ser introducidas en el mercado y son aceptadas por usuarios comunes. Pero, de nuevo, el desarrollo del cliente no es la intención original de Java.
Conceptos de clases y objetos de Java
Java es un lenguaje de programación orientado a objetos.
Las clases en Java pueden considerarse como una versión actualizada de estructuras en el lenguaje C. Una estructura es un tipo de datos construido que puede contener diferentes miembros (variables), y los tipos de datos de cada miembro pueden ser diferentes; Por ejemplo:
#InClude <stdio.h> int / Miembros de la estructura de operación stu1.name = "Xiao Ming"; nombre, stu1.age, stu1.score);
Resultados de ejecución:
La edad de Xiao Ming tiene 15 años y su calificación es 92.500000
Las clases en Java también son un tipo de tipos de datos de construcción, pero se han extendido. Por ejemplo:
Public Class Demo {public static void main (String [] args) {// Defina el alumno de clase de clase {// Defina la clase a través de la clase de palabras clave // La función incluida void dice () {System.out.println (nombre + "La edad es" + edad + ", el puntaje es" + puntaje); Estudiante stu1 = nuevo estudiante (); ); Resultados de ejecución:
La edad de Xiao Ming tiene 15 años y su calificación es 92.5
En el lenguaje C, la definición de las variables de estructura se puede completar por el nombre de la estructura y el espacio de memoria se puede asignar; espacio.
La analogía se puede comparar con los dibujos, los objetos se pueden comparar con las partes, y los dibujos explican los parámetros de las partes y las tareas que realizan;
En Java, utilizando la nueva palabra clave, puede crear objetos a través de clases, es decir, producir dibujos en partes se denomina instanciación de clases, por lo que el objeto también se llama instancia de una clase.
Nota: La clase es solo un dibujo que reproduce una explicación y no ocupa el espacio de memoria;
Las variables y las funciones contenidas en una clase tienen nombres específicos.
Programación orientada a objetos (OOP)
Las clases son un concepto general. Las clases pueden considerarse como una versión actualizada de estructuras. -Seos de tamaño.
Debido a que Java, C ++ y otros idiomas admiten clases y objetos, escribir programas en estos idiomas también se llama programación orientada a objetos, y estos idiomas también se denominan lenguajes de programación orientados a objetos. Debido a que el lenguaje C no admite los conceptos de clases y objetos, se denomina lenguaje de programación orientado al proceso.
De hecho, orientado a objetos es solo una actualización orientada al proceso.
En el lenguaje C, los bloqueos de código reutilizados que completan una determinada función se pueden definir como funciones, y las funciones con una clase de funciones se declaran en un archivo de encabezado, y las funciones de diferentes tipos se declaran en diferentes archivos de encabezado para realizar funciones mejor administración, fácil de escribir y llamar.
En Java, el bloque de código que completa una determinada función se puede definir como un método, y los métodos con funciones similares se pueden definir en una clase, es decir, en un archivo fuente (porque un archivo fuente solo puede contener una clase pública), Se pueden ubicar múltiples archivos de origen en una carpeta, que tiene un nombre específico llamado paquete.
Lo anterior es C ++, mientras que Java es:
La programación orientada a objetos no tiene absolutamente ninguna ventaja en la eficiencia de la ejecución del software.