sábado, 7 de enero de 2017

Java Máquina Virtual

Java Máquina Virtual

Java Máquina Virtual - La máquina virtual es como su nombre lo indica una máquina virtual que se encarga sólo de interpretar y ejecutar las aplicaciones creadas en el lenguaje de programación Java, si desconoces la definición en la entrada Definición Java podrás aprender que es este lenguaje y sus principales características.

Debido a la característica de ser multi-plataforma el código de una aplicación Java debe ser interpretado por la máquina virtual. Dependiendo de su sistema operativo debe poseer una máquina virtual para poder interpretar los Bytecodes generados por los compiladores.

Java Máquina Virtual - es un programa que procesa el código de forma correcta. 


Como pueden observar en la imagen tenemos un programa llamado miPrograma.java que luego de ser compilado, se genera un archivo con la extensión .class que se llama miPrograma.class. Una vez compilado, es decir, que se haya creado el archivo con los Bytecodes se necesita un interprete para que se pueda utilizar el programa.

En este punto entra la máquina virtual, en la imagen se puede observar 3 computadores con sistemas operativo distintos (Windows, Macintos, Unix) para que el programa funcione o se pueda ejecutar se debe tener instalada la máquina virtual.

Java Máquina Virtual - Misión Principal

La misión principal es la de garantizar la portabilidad de las aplicaciones Java. Definiendo un ordenador abstracto y especifica las instrucciones que este ordenador podrá ejecutar.

Java Máquina Virtual - Tareas Principales

La JVM tiene como tareas principales las siguientes:
  • Reservar espacio en memoria para los objetos creados.
  • Liberar la memoria no usada (Garbage Collection).
  • Asignar variables a registros y pilas.
  • Llamar al sistema huésped para que realice ciertas funciones, tales como accesos a los dispositivos.
  • Vigilar el cumplimiento de las normas de seguridad en las aplicaciones. Siendo la tarea más importante que realiza. Además, las propias especificaciones del lenguaje contribuyen extraordinariamente a este objetivo.
    • Las referencias a arrays son verificadas en el momento de la ejecución del programa.
    • No se permite manipular de forma directa los punteros.
    • La JVM gestiona automáticamente el uso de la memoria, de modo que no queden huecos.
    • No se permiten realizar ciertas conversiones (casting) entre distintos tipos de datos.

Descargar Java Máquina Virtual

Para realizar la descarga de la máquina virtual debes visitar el sitio web de java.

Definición Java

Definición Java

Definición Java - Java es un lenguaje de programación orientado a objetos (POO) que fue desarrollado a principios de los años 90 por la empresa Sun Microsystems

El lenguaje Java en sí mismo parte de la sintaxis de los lenguajes de programación C y C++, pero su modelo de datos ha sido simplificado y se han eliminado las herramientas de bajo nivel, con el fin de evitar los errores presentados en programas desarrollados en C ó C++ que principalmente eran generados por la manipulación directa de punteros de memoria.

Las aplicaciones desarrolladas en Java típica mente son compiladas en bytecodes, aunque también están permitida la compilación en código máquina nativo. Los bytecodes normalmente son interpretados o compilados a código nativo para que puedan ser ejecutados, además los procesadores Java tienen la posibilidad de ejecutar de forma directa el hardware.

Para la Definición Java debemos aclarar que el lenguaje de programación Java fue implementado originalmente en el año 1995 por SUN Microsystems, en el cual dieron a conocer las referencias del compilador, la máquina virtual (JVM) y las librerías de clases de Java. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del lenguaje a través del Java Community Process.

Definición Java

Características del Lenguaje Java

  • Lenguaje Simple y Familiar: La curva de aprendizaje de este lenguaje es sencilla y muy rápida. La cual posee una sintaxis de programación basada en lenguajes de programación que fueron los pioneros en el desarrollo Orientado a Objetos como fue C++.
  • Orientado a Objetos: Debido a que fue diseñado desde un principio como un lenguaje de programación orientado a objetos, permite la re-utilización de componentes de software.
    • Todo en Java es orientado a objetos
    • Incorpora las principales características de la POO. Herencia, Polimorfismo, Encapsulación, Enlace Dinámico.
    • No permite la Herencia Múltiple.
    • No permite la sobrecarga de operadores.
  • Distribuido: Fue diseñado para trabajar en ambientes de redes, contienen una gran biblioteca de clases para la re-utilización del protocolo TCP/IP, incluyendo HTTP y FTP.
  • Interpretado: El compilador Java se encarga de traducir cada fichero de fuente de clases a código de bytes (ByteCode), estos pueden ser interpretado por todas las máquinas virtuales (JVM). El Bytecode generado por el compilador no es especifico para una máquina determinada, por lo que no se compila y enlaza como ocurre en su sucesor C++, sino que se interpreta.
  • Sólido: El código Java no es fácil de dañar ante errores de programación. 
  • Seguro: Como Java suele funcionar en ambiente de redes la seguridad debe interesar en sobremanera. 
  • Arquitectura Neutral: Mediante la creación de archivos de byte (Bytecode) que son enviados a la máquina virtual, no depende de una arquitectura en especifico. 
  • Portable: Al ser de arquitectura neutral es altamente portable, es decir una aplicación creada para un computador con ciertas características de hardware, puede ser ejecutado en un computador con más o menos características de hardware que el computador donde fue desarrollada la aplicación.
  • Alto desempeño: Al generar código interpretado, la ejecución no es tan rápida como el código compilado para una plataforma en particular. El compilador de Java suele ofrecer la posibilidad de compilar Bytecode en código máquina de determinadas plataformas, y según Sun el código generado resulta de una eficacia similar a compilaciones de C y C++.
  • Multihilos:  En este lenguaje de programación se pueden desarrollar aplicaciones en las que se genere ó ocurra más de una cosa a la vez. Java, apoyándose en un sistema de gestión de eventos basado en el paradigma de condición y monitores C.A.R. permite apoyar la conducta en tiempo real e interactiva en programas.
  • Dinámico: En controversia con C++ que exige que se compile de nuevo la aplicación al cambiar una clase madre Java utiliza un sistema de interfaces que permite aligerar esta dependencia. Teniendo como resultado, la facilidad con la que los programas puedan permitir nuevos métodos y variables en un objeto de biblioteca sin afectar a los objetos dependientes.
Para comprender las características del lenguaje de programación Java y conocer más sobre la Definición Java te presento el siguiente vídeo: