Aplicaciones Java
Vamos a comentar una forma muy sencilla de desarrollar aplicaciones multiplataforma que se pueden ejecutar sin necesidad de instalar nada.
Para ello utilizaremos un conjunto de clases desarrolladas para programar interfaces: Swing. Gracias a Swing podremos crear ventanas, botones, campos de texto, selectores de fichero, y cualquier control que necesitemos para nuestra interfaz
Aplicaciones de escritorio, Aplicaciones Java Web Start y Applets
Tenemos 3 formas de ejecutar una aplicación desarrollada en Java, en función de cómo haya sido desarrollada.
Aplicaciones de escritorio
En este caso nos descargamos la aplicación a nuestra máquina local, generalmente en un fichero ".jar", o un zip conteniendo un fichero ".jar". Ejecutaremos la aplicación por medio del binario "java":
java -cp FICHERO_JAR NOMBRE_CLASE
java -cp SwingSample.jar org.dreamcoder.SwingSample.SwingSampleApp
También se puede ejecutar por medio de un script (unix shell script ".sh", DOS batch ".bat" o Windows command ".cmd", VBScript, etc), que lance el comando anterior.
Si el fichero jar se ha creado con la entrada correspondiente en el fichero META-INF/MANIFEST.MF, será posible ejecutar la aplicación directamente, pulsando el botón derecho y "Open with Sun Java * Runtime", o mediante la línea de comandos:java -jar SwingSample.jar
Entrada del fichero MANIFEST.MF:Main-Class: CLASE A INVOCAR QUE CONTIENE LA FUNCION MAIN
Main-Class: org.dreamcoder.SwingSample.SwingSampleApp
Applets
Con unos pequeños cambios en el código, y unas limitaciones por motivos de seguridad, podemos convertir nuestra aplicación de escritorio en un Applet. Esto quiere decir que la aplicación se ejecutará dentro de un navegador web, directamente desde Internet, sin instalar nada. Es muy cómodo para el usuario, pero puede haber diversos problemas entre el applet y el navegador web.
Para insertar un applet en nuestra página web deberemos incluir un código similar al siguiente:
<applet code="org.dreamcoder.SwingSample.SwingSampleApplet.class" width="100%" height="100%" archive="SwingSample.jar">Java Applet Support Required</applet>
Ejecutar aplicación como applet:
Java Web Start
Éste es un nuevo modo de iniciar aplicaciones que se introdujo con Java 1.2 como un complemento que debías descargar por separado, y a partir de la versión 1.4 ya viene de serie con la instalación base.
La idea es similar a los applets, dado que desde una página web podremos directamente ejecutar nuestro programa. La principal diferencia consiste en que nuestro programa se ejecutará como un proceso independiente del navegador, aislándonos así de muchos problemas. A nuestra máquina se descargará un fichero jnlp, que es un pequeño fichero de texto que indica cómo ejecutar la aplicación.
Con este método se pueden ejecutar aplicaciones que hayan sido desarrolladas como aplicaciones de escritorio tanto como applets. Éste es el método actualmente recomendado por Sun.Vemos aquí un ejemplo de un fichero jnlp que nos permitirá ejecutar una aplicación Java desde la web, utilizando Java Web Start:
<?xml version="1.0" encoding="utf-8"?> <jnlp codebase="http://nightearth.com/dreamcoder/SwingSample/SwingSample_initial" href="SwingSample.jnlp"> <information> <title>Swing sample JWS application</title> <vendor>dreamcoder.org</vendor> <description>Small application that doesn't do anything, just shows how to implement a multiplatform application</description> <homepage href="http://www.dreamcoder.org"/> <description kind="short">Swing sample JWS application</description> <offline-allowed/> </information> <resources> <jar href="SwingSample.jar" /> <j2se version="1.4+" href="http://java.sun.com/products/autodl/j2se" /> </resources> <application-desc main-class="org.dreamcoder.SwingSample.SwingSampleApp"/> </jnlp>
Ejecutar aplicación vía Java Web Start:
Para ejecutar un applet via JWS sustituiremos el elemento application-desc por:
<applet-desc name="SwingSample" main-class="org.dreamcoder.SwingSample.SwingSampleApplet" width="768" height="576"></applet-desc>
Punto de entrada (JFrame, JApplet)
Dependiendo de si queremos desarrollar una aplicación o un applet, deberemos hacer uso de la clase JFrame o JApplet. En cuanto a la implementación, no hay muchas más diferencias. Para nuestros ejemplos, vamos a crear un wrapper de cada tipo, con lo que nuestra aplicación podrá ser ejecutada como applet, como aplición offline, o como aplicación online via Java Web Start, utilizando el mismo fichero jar.
SwingSampleApp.java
Utilizado para la ejecución como aplicación offline y Java Web Start.
package org.dreamcoder.SwingSample; import javax.swing.JFrame; public class SwingSampleApp { public static void main(String[] args) { JFrame frame = new JFrame(); new SwingSampleBase(frame); frame.pack(); } }
SwingSampleApplet.java
Utilizado para la ejecución como applet.
package org.dreamcoder.SwingSample; import javax.swing.JApplet; public class SwingSampleApplet extends JApplet { private static final long serialVersionUID = 1; SwingSampleBase app; public void init() { if (app == null) app = new SwingSampleBase(this); } }
SwingSampleBase.java
fichero principal de la aplicación, que será utilizado tanto desde el applet como desde la aplicación.
package org.dreamcoder.SwingSample; import java.awt.Container; import javax.swing.JLabel; public class SwingSampleBase { // Main element Container root; // Interface JLabel lHolaMundo; public SwingSampleBase(Container providedRoot) { root = providedRoot; generaInterfaz(); root.setVisible(true); } public void generaInterfaz() { root.add(new JLabel("Hola mundo!")); } }
Esto es sólo el esqueleto, donde probamos los métodos para desarrollar y ejecutar una aplicación. En próximos posts le añadiremos contenido a la aplicacion.
Podríais comentar qué tal os funciona la aplicación, cuando intentáis ejecutarla como Applet, vía Java Web Start, o ejecutándola localmente, una vez descargada al disco duro? Así como Sistema Operativo, versión de la JVM (máquina virtual java) y navegador web. Gracias!!!
2 comentarios:
Hola, soy un poco novato con net beans y no logro ejecutarla con el arcchivo jnlp. podrás darme una eplicacion paso por paso? te lo agradeceria montones.
mi correo es miguel.jimenez@z-graphics.us
muchisimas graccias
Por si no me expliqué bien quisiera saber como pasar de una aplicacion de escritorio a web, creo que seria mejor utilizar el applet pero no entiendo mucho lo que explicas.
Publicar un comentario