Mostrando entradas con la etiqueta java. Mostrar todas las entradas
Mostrando entradas con la etiqueta java. Mostrar todas las entradas

domingo, julio 27, 2008

Despliega aplicaciones por la red con un simple click

La tecnología Java Web Start permite descargar, ejecutar y mantener actualizada una aplicación en cualquier sistema con una maquina virtual de java.

Por ejemplo: Haciendo click sobre el icono "Launch", descargaras y ejecutaras en tu maquina una aplicación de escritorio que está alojada en los servidores de Sun.



La siguiente vez que ejecutes la aplicación, ésta se auto-actualizará antes de volver a ejecutarse en tu equipo. Existen varios niveles de ejecución, además es posible proponer al usuario la creación de un icono de acceso rápido y también mostrar una imagen personalizada durante la carga.

Para distribuir cualquier aplicación java con este sistema debemos empaquetarla en un ".jar", crear un archivo ".jnlp" y subirlos a un servidor web configurado adecuadamente.

Vamos a ver como sería esto ahorrándonos el servidor web. Es decir, alojando la aplicación en nuestro propio disco:

Primero crearemos una clase "Example.java" que mostrará un simple diálogo de texto.

import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class Example extends JFrame {

private static final long serialVersionUID = 1L;

public Example() {
super("Mi Ventana");

JOptionPane.showMessageDialog(this, "Hola, Mundo!");

this.pack();
this.setVisible(true);
}

public static void main(String[] args) throws Exception {
new Example();
}

}


Luego la compilamos y empaquetamos sus binarios en un ".jar"
javac Example.java
jar cf Example.jar Example.class
(El archivo de manifiesto debe indicar la clase de entrada de la aplicacion)

Por último creamos el archivo "Ejemplo.jnlp" que define ciertos parámetros de la aplicación.

<jnlp codebase="file:/home/user/" href="Example.jnlp">
<information>
<title>Titulo</title>
<vendor>Vendedor</vendor>
</information>
<resources>
<j2se version="1.4+">
<jar href="Example.jar">
</jar>
<application-desc class="Example">
</application-desc>
</j2se>
</resources>
</jnlp>

Y ya podemos hacer click sobre Example.jnlp o bien ejecutar la ordern "javaws Example.jnlp"

(Lo marcado en rojo arriba indica la ruta donde tengamos nuestro Ejemplo.jar.)

Añadir que en .NET existe algo parecido llamado ClickOnce

Enlaces:
Java Web Start Technology
Java Tutorials Lesson: Java Web Start
Java Web Start Guide

jueves, abril 17, 2008

Usar el Registro de Windows con java Preferences

Aquí publico una buena entrada en el blog para plasmar como hacer unas de las curiosidades que siempre he tenido, como usar el registro de windows en mis programas.

Básicamente me remito a plasmar un código de ejemplo que hice basándome en otro que encontré por internet. No creo que haga falta en este punto explicar nada, ya que me preocupe de comentar bastante el código y poco más puedo añadir.

Bueno chao y asta la próxima… que será dentro de poco.

Código del ejemplo.

import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.BackingStoreException;
import java.util.prefs.Preferences;

/* Autor: Nauzet
* Esto un ejemplo de como usar la Clase Preferences de java.util.prefs y
* dando algunos datos de como se usa.
* El ejemplo consta de como leer y escribir en el registro de windows y como
* hacer algunas comprobaciones.
* */

public class Main
{

public static void main(String[] args) {
try {

/*La variable Mipref es un nodo del registro de windows, que esta representado
* como un arbol de directorio. En este punto con userRoot le asignamos la raiz
* del arbol de HKEY_CURRENT_USER\Software\JavaSoft\Prefs . Ojo que con esta
* Clase no nos da la raiz del arbol de usuario del registro (HKEY_CURRENT_USER)
* sino que nos da un nodo al partir podemos trabajar… supongo que es
* filosofía de java.
*
* Si queremos usar el arbol de nodos de la maquina local (HKEY_LOCAL_MACHINE)
* debemos usar .systemRoot() en vez de useRoot().
*/
Preferences Mipref = Preferences.userRoot();

/* Con el metodo node, le asignamos la ruta de registro a la que queremos
* acceder o escribir. Solo decir que si la ruta pasada a node no esta, la crea.
* la ruta tiene que empezar por / y estar escrita en minuscula, para que no
* haya fallos al crear la ruta.
*/

Mipref = Mipref.node(”/software/atlas/egeasy/egoffice/miclave”);

/* Se hace con isUserNode la comprocacion de que el nodo este en el arbol
* HKEY_CURRENT_USER name() nos devuelve el nombre de la clave (nodo) en el que
* estamos. Esto no es necesario, pero esto es un ejemplo de uso.
*/
if (Mipref.isUserNode()) {
System.out.println(”isUserNode” + “:” + Mipref.name() );
}

/* absolutePath(), nos devuelve el nombre de la clave y su ruta absoluta.
* Ej.: /software/atlas/egeasy/egoffice/miclave */
System.out.println(”La ruta absoluta :” + Mipref.absolutePath());

/*nodeExists(), comprobamos que una clave (nodo) existe.
*/
if (Mipref.nodeExists(”/software/atlas/egeasy/egoffice/miclave”)) {

System.out.println(”SI Existe el nodo con nodeExists”);
System.out.println(”El name :”+Mipref.name());

/* get(), nos devulve el valor que contiene la variable dentro de la clave
* (nodo) a la que tenemos asignada la variable Mipref. Para el metodo get(),
* tenemos que pasar el nombre de la variable a la que qeremos acceder y como
* segundo parametro, una string que nos devolverá sino encuentra esa variable.
* Nota en un nodo pueden haber muchas variables, lo que contiene un nodo lo
* llamo variable por que no estoy seguro de como se llama.
*/
System.out.println(Mipref.get(”javamio”, “No se encuentra”));
}else
System.out.println(”No existe el nodo con nodeExists”);

/* put(), le pasamos el nombre de la variable y el valor que queremos que
* tenga asignado ese registro. Se lo debemos pasar en minuscula por que si le
* pasaramos MiNuevoValor, el resultado que observariamos en el regedit de
* windows sería: /Mi/Nuevo/Valor
*/
Mipref.put(”javamio”, “minuevovalor”);

} catch (BackingStoreException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}

}

}

martes, marzo 11, 2008

Desengaño

Esta va a ser una entrada rápida. Resulta que he estado equivocado todo este tiempo, no sabía crear hilos (threads) en UN*X. Creía que se hacía con fork(2), pero no, esto crea procesos.

Para usar hilos hay que jugar MUUUUUCHO con la llamada al sistema sys_clone, que se accede mediante la llamada de biblioteca clone(2). Pero hay un problema, que realmente no estamos haciendo casi nada, hay que manejar un montón de cosas por debajo. Lo mejor es usar los famosos pthreads, normalmente ya vienen en el sistema (/usr/include/pthread.h) pero no siempre viene la documentación, al menos en Ubuntu no viene, asi que hay que instalar la documentacion completa de la glibc, "sudo apt-get install glibc-doc" y a partir de ahí "man 7 phtreads", "man phtread_create", etc...

Como curiosidad les diré que tanto pthreads como clone(2) como fork(2) utilizan por debajo sys_clone, pero esto no implica que lo que crea fork(2) sean hilos, no se dejen engañar.

domingo, septiembre 16, 2007

Aprendizaje de Java y eclipse

La red esta repleta de recursos acerca del lenguaje de programación Java, como por ejemplo el de Aprenda java como si estuviera en primero o javapassion. Son tantos los sitios que seguramente no sepamos por donde empezar y probablemente nunca lo hagamos a menos que alguien nos introduzca en el mundillo.

Gracias a los siguientes vídeo tutoriales podemos contar con una persona que nos enseñará en casa y a nuestro ritmo.

Eclipse Vídeo Tutorial.
Excelente contenido audiovisual dónde se muestra todo un ciclo completo de desarrollo usando el IDE eclipse. (Aprenderas a crear un proyecto, depurar, realizar una batería de pruebas, generar documentación, elaborar diagramas UML y programar interfaces gráficas de usuario.)

Eclipse and Java for total Beginners.
Serie de 16 vídeos de menos de 15 minutos cada uno con los que aprenderás lo básico de java y eclipse.

Netbeans Docs & Support
También ofrece videotueoriales cortos de cómo empezar a usar otras tecnología de java mediante el IDE mantenido por SUN

Una vez introducidos. "Lo mejor es seguir las fuentes oficiales!". En este caso el Sun's Java Tutorial y Eclipse documentation.

Además eclipse es uno de esos editores extensibles por la comunidad de usuarios y entre la montaña de plugins, éstos son algunos de mis favoritos:
  • jadClipse Navegar por el código fuente de archivos .class
  • FindBug Encontrar fallos potenciales en nuestro código.

Para obtener mas cosas interesantes consulta mis enlaces útiles de java en el delicious