La Web del Programador: Comunidad de Programadores
 
    Pregunta:  18070 - COMPILA JAVA PROGRAMAS EN FORMATO .EXE?
Autor:  Javier Danilo Romero
Por favor cualquier orientacion me sirve.

Estoy aprendiendo el lenguaje java y necesito que me ayuden en lo siguiente. Puede java compilar aplicaciones en fornato .exe?

Hago esta pregunta ya que no he podido encontrar informacion ni en libros, ni en curso que he descargado de internet del lenguaje java acerca de este tema en particular y lo curioso es lo siguiente. Si java no puede hacer archivos .exe "que ojala si" alguien puede explicarme como HOTJAVA el visualizador de internet de sun microsysten que esta desarrollado en java puro viene en formato .exe.

Ahora si java puede hacer archivos .exe por favor indiquimen como se hace esto.

Gracias

  Respuesta:  David GNU SX
Hola,

Java es un lenguaje multiplataforma y de hecho no es compilable, mas bien es un lenguaje interpretado que se basa en los bytes-codes como son los .class que generas cuando "interpretas" tus archivos java (a traves del comando JavaC)

Sin embargo, al Java ser un lenguaje interpretado es muy lento para competir con una aplicacion compiladad (.exe para Win) pero crear .exe atentaria contra la mision de los que Sun MicroSystems quiere para Java.

Sin embargo actualmente hay proyectos GNU y de Sun para hacer esto, por favor investiga del proyecto de compilacion JP (java party) y GCJ para hacer que una herramienta extra, coja el .class y genere el .exe quitandole portabilidad pero dandole velocidad

  Respuesta:  Rafael Hernampérez Martín
Estimado amigo,

Lo primero que hay que tener en cuenta es que Java es realmente MULTIPLATAFORMA, lo que significa que un programa Java se ejecuta en cualquier plataforma (Unix, Aix, Linux, Windows, Mac, etc.) sin tener que volver a compilar el código fuente. Por otro lado sabemos que un fichero .exe es un fichero binario que es incompatible entre distintas plataformas, como pueda ser Windows e Unix.

De todo esto se deduce que para que Java sea MULTIPLATAFORMA debe omitir los .exe. En su lugar, al compilar, se genera un tipo de fichero .class que se denomina byte-code. Es, por decirlo de alguna manera, un fichero binario para Java, pero no para la plataforma. Este fichero .class es el fichero ejecutable que debe lanzarse desde una aplicación llamada máquina virtual de Java, la cual debe estar instalada en la plataforma donde va a correr. La máquina virtual de Java sí es un .exe específico de cada plataforma y que interpreta el byte-code adecuadamente. Lo que es lo mismo, Java es un lenguaje interpretado.

Sobre tu comentario sobre HotJava solo comentarte que parte de esta aplicación sí es un .exe debido a que tú vas a ejecutar una aplicación DESDE tu plataforma. Esta pequeña parte de código binario de plataforma invocará a la máquina virtual de Java, y ésta cargará, interpretará y ejecutará el código Java.

Si la plataforma estuviese basado en la máquina virtual de Java no haría falta. De hecho, desde hace tiempo se está desarrollando sistemas operativos completamente en Java puro. Pero aún debemos esperar.

Un cordial saludo