<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.ecured.cu/index.php?action=history&amp;feed=atom&amp;title=M%C3%A1quina_virtual_Java</id>
	<title>Máquina virtual Java - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://www.ecured.cu/index.php?action=history&amp;feed=atom&amp;title=M%C3%A1quina_virtual_Java"/>
	<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=M%C3%A1quina_virtual_Java&amp;action=history"/>
	<updated>2026-06-10T14:45:17Z</updated>
	<subtitle>Historial de revisiones para esta página en el wiki</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.ecured.cu/index.php?title=M%C3%A1quina_virtual_Java&amp;diff=2655861&amp;oldid=prev</id>
		<title>Rosarino: Rosarino movió la página Máquina virtual de java a Máquina virtual Java: nombre más usual, y Java con mayúscula</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=M%C3%A1quina_virtual_Java&amp;diff=2655861&amp;oldid=prev"/>
		<updated>2016-05-28T23:16:40Z</updated>

		<summary type="html">&lt;p&gt;Rosarino movió la página &lt;a href=&quot;/M%C3%A1quina_virtual_de_java&quot; class=&quot;mw-redirect&quot; title=&quot;Máquina virtual de java&quot;&gt;Máquina virtual de java&lt;/a&gt; a &lt;a href=&quot;/M%C3%A1quina_virtual_Java&quot; title=&quot;Máquina virtual Java&quot;&gt;Máquina virtual Java&lt;/a&gt;: nombre más usual, y Java con mayúscula&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 23:16 28 may 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;es&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Sin diferencias)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Rosarino</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=M%C3%A1quina_virtual_Java&amp;diff=437568&amp;oldid=prev</id>
		<title>Anabel jc.hlg en 20:23 21 mar 2011</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=M%C3%A1quina_virtual_Java&amp;diff=437568&amp;oldid=prev"/>
		<updated>2011-03-21T20:23:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revisión del 20:23 21 mar 2011&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l69&quot; &gt;Línea 69:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 69:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Java Community Process]] &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Java Community Process]] &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Máquina de pila]] &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Máquina de pila]] &amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Lenguaje de programación orientado a pila]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;*[[Lenguaje de programación orientado a pila&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;]] &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;*[[Interfaz Nativa de Java&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Enlaces externos&amp;#160; ==&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Enlaces externos&amp;#160; ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key wiki1:diff::1.12:old-45420:rev-437568 --&gt;
&lt;/table&gt;</summary>
		<author><name>Anabel jc.hlg</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=M%C3%A1quina_virtual_Java&amp;diff=45420&amp;oldid=prev</id>
		<title>Abel oni: Página creada con 'Una '''Máquina virtual Java''' (en inglés ''Java Virtual Machine'', '''JVM''') es un programa nativo, es decir, ejecutable en una plataforma espec…'</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=M%C3%A1quina_virtual_Java&amp;diff=45420&amp;oldid=prev"/>
		<updated>2010-04-06T20:48:20Z</updated>

		<summary type="html">&lt;p&gt;Página creada con &amp;#039;Una &amp;#039;&amp;#039;&amp;#039;Máquina virtual Java&amp;#039;&amp;#039;&amp;#039; (en inglés &amp;#039;&amp;#039;Java Virtual Machine&amp;#039;&amp;#039;, &amp;#039;&amp;#039;&amp;#039;JVM&amp;#039;&amp;#039;&amp;#039;) es un &lt;a href=&quot;/Programa_(computaci%C3%B3n)&quot; class=&quot;mw-redirect&quot; title=&quot;Programa (computación)&quot;&gt;programa&lt;/a&gt; nativo, es decir, ejecutable en una plataforma espec…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Una '''Máquina virtual Java''' (en inglés ''Java Virtual Machine'', '''JVM''') es un [[Programa (computación)|programa]] nativo, es decir, ejecutable en una plataforma específica, capaz de interpretar y ejecutar instrucciones expresadas en un [[Código binario]] especial (el [[Java bytecode]]), el cual es generado por el [[Compilador]] del lenguaje [[Lenguaje de programación Java|Java]]. &lt;br /&gt;
&lt;br /&gt;
El código binario de Java no es un [[Lenguaje de alto nivel]], sino un verdadero [[Código máquina]] de bajo nivel, viable incluso como lenguaje de entrada para un [[Microprocesador]] físico. Como todas las piezas del rompecabezas Java, fue desarrollado originalmente por [[Sun Microsystems]]. &lt;br /&gt;
&lt;br /&gt;
La JVM es una de las piezas fundamentales de la [[Java (Sun)|plataforma Java]]. Básicamente se sitúa en un nivel superior al Hardware del sistema sobre el que se pretende ejecutar la aplicación, y este actúa como un ''puente'' que entiende tanto el bytecode, como el sistema sobre el que se pretende ejecutar. Así, cuando se escribe una aplicación Java, se hace pensando que será ejecutada en una máquina virtual Java en concreto, siendo ésta la que en última instancia convierte de código bytecode a código nativo del dispositivo final. &lt;br /&gt;
&lt;br /&gt;
La gran ventaja de la máquina virtual java es aportar portabilidad al lenguaje de manera que desde Sun Microsystems se han creado diferentes máquinas virtuales java para diferentes arquitecturas y así un programa .class escrito en un [[Windows]] puede ser interpretado en un entorno [[Linux]]. Tan solo es necesario disponer de dicha máquina virtual para dichos entornos. De ahí el famoso axioma que sigue a Java, &amp;quot;escríbelo una vez, ejecútalo en cualquier parte&amp;quot;, o &amp;quot;Write once, run anywhere&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Empero, los intentos de la compañía propietaria de Java y productos derivados de construir microprocesadores que aceptaran el [[Java bytecode]] como su lenguaje de máquina fueron más bien infructuosos. &lt;br /&gt;
&lt;br /&gt;
La máquina virtual de Java puede estar implementada en software, hardware, una herramienta de desarrollo o un Web browser; lee y ejecuta código precompilado [[Bytecode]] que es independiente de la plataforma [[Multiplataforma]]. La JVM provee definiciones para un conjunto de instrucciones, un conjunto de registros, un formato para archivos de clases, la pila, un heap con recolector de basura y un área de memoria. Cualquier implementación de la JVM que sea aprobada por [[Sun Microsystems|SUN]] debe ser capaz de ejecutar cualquier clase que cumpla con la especificación. &lt;br /&gt;
&lt;br /&gt;
Existen varias versiones, en orden cronológico, de la máquina virtual de Java. En general la definición del [[Java bytecode]] no cambia significativamente entre versiones, y si lo hacen, los [[Desarrollador]]es del lenguaje procuran que exista [[Compatibilidad hacia atrás]] con los productos anteriores. &lt;br /&gt;
&lt;br /&gt;
A partir de J2SE 5.0, los cambios en la especificación de la JVM han sido desarrollados bajo el auspicio de la [[Java Community Process]] (JCP) y especificada en la JSR 924.&amp;lt;ref&amp;gt;[http://www.jcp.org/en/jsr/detail?id=924 JSR 924] – Especifica cambios a la especificación JVM que se inicia con J2SE 5.0&amp;lt;/ref&amp;gt; Desde el año 2006, cambios en la especificación para soportar las modificaciones del formato del fichero de clases (JSR 202&amp;lt;ref&amp;gt;[http://www.jcp.org/en/jsr/detail?id=202 JSR 202] – Especifica varios cambios al formato de fichero class&amp;lt;/ref&amp;gt;) se están llevando a cabo en una versión de mantenimiendo en la JSR 924. Las especificaciones para la JVM están publicadas en lo que se conoce como &amp;quot;el libro azul&amp;quot;.&amp;lt;ref&amp;gt;''[http://java.sun.com/docs/books/vmspec/ La Especificación de la Máquina Virtual Java]''&amp;lt;/ref&amp;gt; Así reza el prefacio: ''Esperamos que esta especificación documente suficientemente la Máquina Virtual de Java para hacer posibles implementaciones desde cero. Sun proporciona tests que verifican que las implementaciones de la Máquina Virtual de Java opere correctamente'' &lt;br /&gt;
&lt;br /&gt;
[[Kaffe]] es un ejemplo de una implementación de JVM desde cero. Sun es la propietaria de la marca registrada &amp;quot;Java&amp;quot;, que usa para certificar aquellas implementaciones que se ajustan y son totalmente compatibles con sus especificaciones. &lt;br /&gt;
&lt;br /&gt;
== Entorno de ejecución  ==&lt;br /&gt;
&lt;br /&gt;
Para poder ejecutar una aplicación en una Máquina Virtual de Java, el programa código debe compilarse de acuerdo a un formato binario portable estandarizado, normalmente en forma de ficheros con extensión .class. Un programa puede componerse de múltiples clases, en cuyo caso cada clase tendrá asociada su propio archivo .class. Para facilitar la distribución de aplicaciones, los archivos de clase pueden empaquetarse juntos en un archivo con formato jar. Esta idea apareció en la época de los primeros applets de Java. Estas aplicaciones pueden descargar aquellos archivos de clase que necesitan en tiempo de ejecución, lo que suponía una sobrecarga considerable para la red en una época donde la velocidad suponía un problema. El empaquetado evita la sobrecarga por la continua apertura y cierre de conexiones para cada uno de los fragmentos necesarios. &lt;br /&gt;
&lt;br /&gt;
El código resultante de la compilación es ejecutado por la JVM que lleva a cabo la emulación del conjunto de instrucciones, bien por un proceso de interpretación o más habitualmente mediante un compilador JIT (Just In Time), como el [[HotSpot]] de Sun. Esta última opción convierte el bytecode a código nativo de la plataforma destino, lo que permite una ejecución mucho más rápida. El inconveniente es el tiempo necesario al principio para la compilación. &lt;br /&gt;
&lt;br /&gt;
En un sentido amplio, la Máquina Virtual de Java actúa como un puente entre el resultado de la compilación (el bytecode) y el sistema sobre el que se ejecuta la aplicación. Para cada dispositivo debe haber una JVM específica, ya sea un teléfono móvil, un PC con Windows XP, o un microondas. En cualquier caso, cada máquina virtual conoce el conjunto de instrucciones de la plataforma destino, y traduce un código escrito en lenguaje Java (común para todas) al código nativo que es capaz de entender el Hardware de la plataforma. &lt;br /&gt;
&lt;br /&gt;
=== El verificador del bytecode  ===&lt;br /&gt;
&lt;br /&gt;
La JVM ''verifica'' todo bytecode antes de ejecutarlo. Esto significa que solo una cantidad limitada de secuencias de bytecode forman programas válidos, por ejemplo una instrucción JUMP (branch) puede apuntar solo a una instrucción dentro de la misma función. A causa de esto, el hecho de que JVM es una arquitectura de pila no implica una carga en la velocidad para emulación sobre arquitecturas basadas en registros cuando usamos un compilador JIT: no hay diferencia para un compilador JIT si nombra registros con nombres imaginarios o posiciones de pila imaginarias que necesitan ser ubicadas a los registros de la arquitectura objetivo. De hecho, la verificación de código hace a la JVM diferente de una arquitectura clásica de pila cuya emulación eficiente con un compilador JIT es más complicada y típicamente realizado por un interprete más lento. &lt;br /&gt;
&lt;br /&gt;
La verificación de código también asegura que los patrones de bits arbitrarios no pueden usarse como direcciones. La [[Protección de Memoria]] se consigue sin necesidad de una unidad de Gestión de Memoria([[MMU]]). Así, JVM es una forma eficiente de obtener protección de memoria en chips que no tienen MMU. &lt;br /&gt;
&lt;br /&gt;
=== Bytecodes  ===&lt;br /&gt;
&lt;br /&gt;
La JVM tiene instrucciones para los siguientes grupos de tareas &lt;br /&gt;
&lt;br /&gt;
*Carga y Almacenamiento &lt;br /&gt;
*Aritméticas &lt;br /&gt;
*Conversión de tipos &lt;br /&gt;
*Creación y manipulación de objetos &lt;br /&gt;
*Gestión de pilas (push / pop) &lt;br /&gt;
*Transferencias de Control (branching) &lt;br /&gt;
*Invocación y retorno a Métodos &lt;br /&gt;
*Lanzar excepciones&lt;br /&gt;
&lt;br /&gt;
La clave es la compatibilidad binaria. Cada sistema operativo de un host particular necesita su propia implementación de JVM y runtime. Estas JVMs interpretan el byte code semánticamente de la misma manera, pero la implementación actual puede variar. Más complicado que solo la emulación de bytecode es la implementación compatible y eficiente de las APIs java las cuales tienen que ser mapeadas para cada sistema operativo de host. &lt;br /&gt;
&lt;br /&gt;
=== Extensión segura de código remoto  ===&lt;br /&gt;
&lt;br /&gt;
Una arquitectura de maquina virtual permite control de granuralidad fina sobre las acciones que el código puede hacer dentro de la máquina. Esto está diseñado para permitir ejecución segura de código no confiable desde fuentes remotas, un modelo usado muy famoso son las [[Java applet]]s. Applets se ejecutan dentro de una VM incorporada en el navegador del usuario, ejecutando código descargado desde un servidor [[HTTP]] remoto. El código remoto se ejecuta en una &amp;quot;[[Aislamiento de procesos (informática)|sandbox]]&amp;quot; altamente restringida, la cual está diseñada para proteger al usuario de código erróneo o malicioso. Los Publicadores con recursos financieros suficientes pueden conseguir un certificado con el cual hacer applets con [[Firma digital]] que las caractericen como seguras(&amp;quot;safe&amp;quot;), dandoles entonces permisos para salir de la sandbox y acceder al sistema de ficheros local y sistema de red, presumiblemente bajo el control del usuario. &lt;br /&gt;
&lt;br /&gt;
== Implementaciones de la máquina virtual  ==&lt;br /&gt;
&lt;br /&gt;
La edición J2SE tiene dos implementaciones de la máquina virtual: &lt;br /&gt;
&lt;br /&gt;
*Java HotSpot Client VM: La máquina virtual por defecto, preparada para obtener el máximo rendimiento en la ejecución de aplicaciones en el entorno cliente, por ejemplo, reduciendo al máximo el tiempo de inicio de una aplicación Java. &lt;br /&gt;
*Java HotSpot Server VM: Preparada para obtener el máximo rendimiento en la ejecución de aplicaciones en el entorno de los servidores.&lt;br /&gt;
&lt;br /&gt;
== Referencias  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
#''[http://java.sun.com/docs/books/vmspec/2nd-edition/jvms-clarify.html Clarificaciones y Enmiendas a la Especificación de la Maquina Virtual Java, Segunda Edición]'' incluye lista de cambios que hay que realizar para soportar J2SE 5.0 y JSR 45 &lt;br /&gt;
#[http://www.jcp.org/en/jsr/detail?id=45 JSR 45] – Especifica cambios al formato de fichero class para soportar depuración a nivel de fuente de lenguajes tales como [[JSP]] y [[SQLJ]] que son traducidos a Java&lt;br /&gt;
&lt;br /&gt;
== Véase también  ==&lt;br /&gt;
&lt;br /&gt;
*[[Lenguaje de programación Java|Java]] &lt;br /&gt;
*[[Java Community Process]] &lt;br /&gt;
*[[Máquina de pila]] &lt;br /&gt;
*[[Lenguaje de programación orientado a pila]]&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos  ==&lt;br /&gt;
&lt;br /&gt;
*[http://www.kaffe.org/ Kaffe.org - the Kaffe project] &lt;br /&gt;
*[http://java-virtual-machine.net/download.html Java Virtual Machine Descargar] &lt;br /&gt;
*[http://jamvm.sourceforge.net/ JamVM - The Jam Virtual Machine] &lt;br /&gt;
*[http://www.javaworld.com/javaworld/jw-06-1996/jw-06-vm.html Una introducción a la estructura y funcionalidad básica de la Máquina Virtual Java] &lt;br /&gt;
*[http://java.com/en/download/help/testvm.xml Prueba tu JVM] &lt;br /&gt;
*[http://www.sun.com Sitio principal de Sun Microsystems] (inglés) &lt;br /&gt;
*[http://www.wilkinsonpc.com.co/free/sun-java-maquina-virtual.html Descarga de Java SUN] (inglés)&lt;br /&gt;
&lt;br /&gt;
[[Category:Ciencias_informáticas]][[Category:Software]]&lt;/div&gt;</summary>
		<author><name>Abel oni</name></author>
		
	</entry>
</feed>