Pero... ¿por qué Java
para programar dispositivos móviles? Existe una razón
fundamental para elegir este lenguaje para desarrollar nuestras
aplicaciones en estos dispositivos especiales: Java nos da la
posibilidad de escribir una vez el programa y poder ejecutarlo en
cualquier tipo de plataforma sin tener que recompilarlo de nuevo (Write Once, Run Anywhere (WORA) - Escríbelo una vez y ejecútalo
en cualquier lugar). Esta independencia lo convierte en un firme
candidato. Otra razón es que en muchos casos es la
única alternativa que dispone el
programador, pues varios fabricantes han optado únicamente
por él para desarrollar aplicaciones. Pero también
hay otras razones que aporta Java:
- Extensión dinámica:
la habilidad de un programa Java para descargar código en tiempo
de ejecución, yendo a buscar nuevos
ficheros de clases sustituyendo las ya
existentes o simplemente añadiéndolos a las aplicaciones.
- Seguridad: Java ofrece un
entorno de ejecución seguro para programas con acceso a red. La
máquina virtual de Java lleva a cabo una verificación
estricta del código antes de la ejecución, asegurando que éste no trata de saltarse
las protecciones impuesta por el lenguaje, utilizar punteros que
accedan directamente a memoria o usar el objeto equivocado.
- Portabilidad: cada
dispositivo dispone de un hardware con características
peculiares que hace difícil encontrar un conjunto de bibliotecas
que permitan desarrollar programas más o menos independientes
del soporte físico. La máquina virtual de Java asegura
esta portabilidad.
- Fiabilidad: teniendo en
cuenta que algunos de los tipos de dispositivos que tratamos en este
curso deben realizar tareas críticas, las aplicaciones que las
implementan no deben fallar, ni tampoco ponerse fácilmente en
manos de hackers. En ese sentido, Java es un lenguaje seguro,
suministrando esa fiabilidad buscada. Para
tal fin, requiere la obligación de la estructuración del
código en paquetes, fuertes verificaciones de compilación
y ejecución (fuerte tipado, comprobación de
límites en vectores, pruebas de desbordamiento de pila,...),
dispone un mecanismo eficiente para la gestión de excepciones y
de memoria (elimina los punteros, asignación dinámica de
memoria transparente al usuario y su posterior liberación -de
esta manera se evitan errores).
- Código reutilizable:
debido a la orientación a objetos de Java, se consiguen
características como la facilidad en el desarrollo, la
reutilización del código y la mayor calidad del
código.
Así, Sun Microsystems
volvió a los orígenes de Java y desarrolló una
nueva edición de la versión de Java 2: J2ME (Java 2 Micro
Edition). Y una razón fundamental puede ser las
características especiales que tiene estos dispositivos: un
ejemplo es la cantidad de memoria que reservará un dispositivo
de
este tipo para una aplicación Java, las clases y la
máquina virtual, ya que suele ser apenas pocos cientos de
kilobytes. Con este espacio, las dos ediciones anteriores no son
apropiadas, por lo que esta empresa pensó en la posibilidad de
desarrollar una nueva totalmente adaptada a las características
específicas de los dispositivos pequeños.