Showing posts with label java. Show all posts
Showing posts with label java. Show all posts

Thursday, November 27, 2008

BAJEMOS A ECHAR UN VISTAZO


INTERFACES DE BAJO NIVEL

Bueno, en las entregas anteriores hablamos de las interfaces de alto nivel; comentábamos que estas interfaces son de las más fáciles de implementar pues su presentación gráfica queda a cargo del dispositivo en que se ejecute la aplicación.
Esto nos permite ahorrar tiempo y esfuerzo, aunque en ocasiones será necesario tomar el control de la presentación, por ejemplo: Si lo que estamos desarrollando es un videojuego.

REGLA No. 1:
Antes de comenzar, es conveniente que establecer una regla : "Todas las pantallas que vayamos a crear usando las APIs de bajo nivel heredan de la clase Canvas".

Por esta razón, lo primero de todo es conocer a fondo esta clase y luego iremos profundizando en cada uno de los elementos que la componen.
La clase Canvas es la superclase de todas las pantallas que usan las APIs de bajo nivel, al igual que Screen lo era para las pantallas que usaban las APIs de alto nivel.

CONVIVENCIA PACIFICA:
Sin embargo, en la relación de APIs de alto y bajo nivel, no hay nada escrito, ésto es : "No existe ningún impedimento que nos permita usar en el mismo MIDlet pantallas tanto derivadas de Canvas como de Screen"

La clase Canvas permite manejar eventos de bajo nivel y dibujar cualquier cosa por pantalla. Es por ésa razón que se usa como base para la realización de juegos.

Esta clase posee un método abstracto paint() que debemos implementar de manera obligatoria (Por nuestra propia voluntad) y es la encargada de dibujar en la pantalla del dispositivo.


Veamos un ejemplo para irnos familiarizando:


BajoNivel.java


import java.io.IOException;
import javax.microedition.lcdui.*;
public class BajoNivel extends Canvas implements CommandListener {
private PBajoNivel midlet;
private Command salir;
private Image imgFondo, imgTriste;
public BajoNivel(PBajoNivel mid) {
try {
imgFondo = Image.createImage("/fondo.PNG");
imgTriste = Image.createImage("/triste.PNG");
} catch (IOException e) {
e.printStackTrace();
}
salir = new Command("Salir", Command.EXIT,1);
this.midlet = mid;
this.addCommand(salir);
this.setCommandListener(this);
}
public void paint(Graphics g) {
g.setColor(255,255,255);
g.fillRect(0,0,getWidth(),getHeight());
g.setColor(0,0,0);
g.drawImage(imgFondo, 0, 0, 0);
g.drawImage(imgTriste, 40, 40, 0);
}
public void commandAction(Command c, Displayable d){
if (c == salir){
midlet.salir();
}
}
}



Esta rutina es la que nos mostrará en el dispositivo la pantalla, nótese que estamos utilizando dos imágenes fondo.PNG y triste.PNG, estos archivos los colocamos en el directorio de RES en nuestro proyecto.


Ahora veamos el código del MIDlet que lo mandará llamar.


PBajoNivel.java
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class PBajoNivel extends MIDlet {
private BajoNivel panCanvas;
private Display pantalla;
public PBajoNivel() throws Exception{
pantalla = Display.getDisplay(this);
panCanvas = new BajoNivel(this);
}
public void startApp() {
pantalla.setCurrent(panCanvas);
}
public void pauseApp() {
}
public void destroyApp(boolean unconditional) {
}
public void salir(){
destroyApp(false);
notifyDestroyed();
}
}


Como se observa, PBajoNivel.java se limita a declarar un objeto pancanvas heredado de la clase BajoNivel.


Veamos dos ejemplos de ejecutar ésta aplicación en dos modelos distintos de cellular, a fin de que el lector pueda constatar la diferencia de despliegue entre uno y el otro.












Tuesday, November 4, 2008

EN JAVA TODO ES UN OBJETO




Bueno, ahora que ya tenemos casi todas las herramientas que necesitamos para el desarrollo de aplicaciones para móviles, veamos un poco más de teoría para asegurarnos de que vamos a empezar con el pie derecho.

Lo primero que tenemos que conocer, son los OBJETOS.

¿QUE SON LOS OBJETOS ?

Como se puede ver en la imagen anterior, para poder fabricar los objetos Reloj y Lámpara, se necesita la información pregrabada llamada clases.

Las clases son las que almacenan las propiedades y métodos que contendrá un objeto.

Un objeto cambiará sus propiedades o las propiedades de otros objetos por medio de los métodos.
Los métodos que sólo pueden ejecutarse cuando el objeto existe, son los denominados dinámicos, y los métodos que pertenecen a la clase son denominados estáticos, porque pueden ser llamados sin necesidad de la existencia de un objeto.

En el ejemplo tenemos dos objetos, Reloj y Lámpara los cuales tienen métodos Cuerda e Interruptor, que son los que cambiaran el estado de las propiedades Hora e Ilumina. La clase reloj, podría tener un método estático llamado poner_en_hora, para ajustar todos los relojes fabricados.
Un programa en ejecución inicia en un método estático ya que no existen inicialmente objetos en nuestra aplicación, este método se llama main el cuál se define como:

public static void main(String[] args){
.....
}
Donde args es un vector o arreglo unidimensional que contendrá los argumentos que hayan sido pasados al comando java después de las órdenes y el nombre de la clase principal que alojará este método. El entorno de ejecución o la JVM fabricará objetos de sistema que podrán ser utilizados llamando a métodos estáticos de clases pertenecientes a la biblioteca de java.

Veamos un sencillo ejemplo, imaginemos que tenemos que crear un objeto llamado ALUMNO, todo objeto alumno debe tener las siguientes propiedades : NOMBRE, EDAD y GRADO.

Como métodos, podría tener PonNombre, PonEdad, PonGrado y DatosCompletos.

Escribamos entonces la definición de la clase para el objeto ALUMNO.

Alumno.java

public class Alumno {
String wNombre;
int wEdad;
String wGrado;

public Alumno() {
this.wNombre = "Desconocido";
this.wEdad = 0;
this.wGrado = "Desconocido";
}

public void PonNombre(String wNombre) {
this.wNombre = wNombre;
}

public void PonEdad(int wEdad) {
this.wEdad = wEdad;
}

public void PonGrado(String wGrado){
this.wGrado = wGrado;
}

public void DatosCompletos(String wNombre, int wEdad, String wGrado){
this.wNombre = wNombre;
this.wEdad = wEdad;
this.wGrado = wGrado;
}
}

Ahora que ya tenemos la definición de la clase Alumno, escribamos el código que utilice esta clase y fabrique objetos alumno.

Primero.java

public class Primero {

public Primero(){
}

public static void main(String[] args) {
Alumno miObjeto = new Alumno();

System.out.println("Primera parte....");
System.out.println("Nombre = " + miObjeto.wNombre); System.out.println("Edad = " + miObjeto.wEdad);
System.out.println("Grado = " + miObjeto.wGrado);
System.out.println("Tipo = " + miObjeto.getClass().toString());
System.out.println("\n");

miObjeto.wNombre = "Epigmenio Corrales";
miObjeto.wEdad = 45;
miObjeto.wPuesto = "Grado Doctorado";
System.out.println("Segunda parte....");
System.out.println("Nombre = " + miObjeto.wNombre);
System.out.println("Edad = " + miObjeto.wEdad);
System.out.println("Grado = " + miObjeto.wGrado);
System.out.println("\n");

miObjeto.DatosCompletos("Casildo Ortega Del Monte", 23, "Segundo Grado Maestría");
System.out.println("Tercera parte....");
System.out.println("Nombre = " + miObjeto.wNombre);
System.out.println("Edad = " + miObjeto.wEdad);
System.out.println("Grado = " + miObjeto.wGrado);
}
}

Si ejecutamos este sencillo código que hemos ejecutado, obtendremos un resultado en pantalla como el que sigue:

Primera parte....
Nombre = Desconocido
Edad = 0
Grado = Desconocido
Tipo = class Alumno

Segunda parte....
Nombre = Epigmenio Corrales
Edad = 45
Grado = Grado Doctorado

Tercera parte....
Nombre = Casildo Ortega Del Monte
Edad = 23
Grado = Segundo Grado Maestría

Muy bien, después de este breve y pequeño recordatorio de Java, la definición de Clases y la creación de Objetos; estamos listos para abordar de lleno el tema del J2ME.

Monday, November 3, 2008

PONGAMOS A TRABAJAR AL FRAMEWORK

Creación de un proyecto en Eclipse




Desde el menú Window -> Open perspective -> Java




Empezamos con el wizard de creación de un proyecto desde el menú File -> New -> Project o bien pulsando sobre el botón que se ve en la imagen.




En la primera pantalla del wizard ponemos un nombre al proyecto y decidimos donde se guardará, por defecto se crea una carpeta con el nombre del proyecto dentro de eclipse_home en el directorio workspace.


Pulsamos "Next" para ir a la pantalla de configuración del classpath, del directorio donde se guardarán las clases generadas, si el proyecto que estamos creando depende de algún otro, etc.

























Una vez que se ha configurado el proyecto pulsamos "Finish" para terminarlo de crear.

ADOPTEMOS UN FRAMEWORK

Ahora que hemos instalado la herramienta de J2SE, podemos escribir nuestro código en cualesquier editor de texto, guardando nuestro trabajo en un archivo con la terminación .java y desde la línea de comandos compilarlo utilizando la sentencia :

c:\MiDirectorio\javac MiPrograma.java

Este proceso puede resultar abrumador, sobre todo porque el compilador de J2SE es muy estricto en cuanto a la sintaxis y el error provocado por la presencia de una tilde (´) o un punto y coma (;) mal colocado puede romper los nervios aún del programador más experimentado.

Por fortuna, contamos con algunos IDE´s o Frameworks que pueden auxiliarnos en esta tarea, uno de ellos yá lo mencionamos antes, es el NetBeans.

Por ahora veremos el Eclipse y posteriormente en otro post regresaremos al NetBeans.


Instalación de Eclipse

Los requerimientos necesarios es tener instalado el JDK 1.3 o superior y preferiblemente tener 256 MB de memoria y si es más pues mejor.

Lo primero que tenemos que hacer es bajarnos el software correspondiente de http://www.eclipse.org/
De todas formas recomiendo este sitio para la descarga del software http://gul.uc3m.es/eclipse/downloads/
Eclipse puede funcionar en Windows, Linux, Solaris, etc..

Descomprimimos el fichero eclipse-SDK-3.0-win32.zip que nos acabamos de bajar en el directorio c:\eclipse al que llamaremos de ahora en adelante : eclipse_home.

Nosotros hemos optado por trabajar con la última versión de eclipse 3.0.

Para arrancar la plataforma eclipse basta con ejecutar eclipse.exe que se encuentra dentro eclipse_home.


Y listo, tenemos instalado nuestro framework que nos ahorrará muchos dolores de cabeza al momento de querer compilar nuestro código.


En la próxima emisión veremos cómo se trabaja con él.

EMPECEMOS INSTALANDO JAVA

El lenguaje de programación Java en la actualidad


Desde 1995, Sun Microsystems ha controlado las especificaciones, el desarrollo y evolución del lenguaje a través del Java Community Process, si bien otros han desarrollado también implementaciones alternativas de estas tecnologías de Sun, algunas incluso bajo licencias de software libre.
Entre noviembre de 2006 y mayo de 2007, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prácticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java todavía no es software libre).
Bien, ahora que yá estamos mas enfocados en la historia de la herramienta que nos ocupa; averiguemos qué necesitamos y cómo lo conseguimos.
Instalación del SDK de Java (SDK = Software Development Kit)

En la página de Sun podemos encontrar varios tipos de descarga:
  1. JRE .- Si sólo queremos ejecutar aplicaciones Java, necesitaremos instalar JRE (Java Runtime Enviroment). Este es un entorno de ejecución que sirve para poder ejecutar programas java compilados.
  2. JDK .- Por el contrario, si lo que queremos es crear, compilar y ejecutar nuestras aplicaciones, necesitaremos el SDK (Sun Development Kit). SDK es el entorno de desarrollo que incluye varias herramientas además del compilador de java y el debugger.
  3. También podemos descargarnos el SDK+NetBeans si queremos un entorno visual para desarrollar nuestras aplicaciones. Netbeans es especialmente útil para diseñar interfaces gráficas para usuarios.

Puedes descargar estas aplicaciones en la página de Sun.(http://developers.sun.com/downloads/)

Las descargas estan agrupadas por Java EE (Enterprise Edition: Desarrollo de aplicaciones web) , Java ME (Micro Edition: Desarrollo para dispositivos móviles y PDA's) y Java SE (Standard Edition: Nos iremos por ésta si queremos crear aplicaciones en nuestro equipo de escritorio y posteriormente pasarlas a nuestro equipo móvil).

Configurar Java

Una vez instalada la versión SDK (Java SE), deberemos configurar las variables de entorno para poder ejecutar aplicaciones JAVA desde cualquier ruta de tu sistema.

Windows 2000/XP:

  1. Pulsaremos el botón derecho del ratón sobre MI PC, y seleccionaremos propiedades.
  2. En la pestaña de Opciones Avanzadas, hay un botón que te permite configurar las "Variables de Entorno". Haz click en este botón y modifica la variable "Path" del sistema, de modo que también contenga la ruta del ejecutable Java.
  3. Por ejemplo: si has instalado Java en c:\Java y la variable del sistema tiene el valor C:\WINDOWS\SYSTEM32, le cambiaremos el valor para que se lea: C:\WINDOWS\SYSTEM32;C:\Java\bin .
  4. Ahora, desde la linea de comandos podrás compilar (Ej: javac Miprograma.java) y ejecutar (Ej: java Miprograma) tus aplicaciones Java desde cualquier carpeta del sistema.

Configurar la variable CLASSPATH

Además de configurar la variable de entorno PATH, también deberás decirle a Java dónde encontrar los archivos de clases compiladas al ejecutar tus aplicaciones. Para ello deberemos modificar la variable CLASSPATH para que almenos incluya el directorio actual (.)

Ej: Desde la linea de comandos escribiremos: SET CLASSPATH=%CLASSPATH%;.

Ésta variable también puede contener otros directorios que contengan clases compiladas.