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

sábado, 18 de abril de 2009

LWUIT y los acentos

Me puse a investigar porqué no aparecían los acentos en los formularios de LWUIT. Buscando un poco, vi que recomendaban reconstruir la fuente incluída en los recursos. Haciendo un poco de prueba y error, encontré la solución al tema:
  1. Asegurarse que el proyecto esté en UTF-8. Bien porque el entorno usa ese encoding por defecto (preferences, general, workspace, text file encoding), o bien porque así lo indicamos para nuestro proyecto (project properties, resource, text file encoding).
  2. Escribir los acentos en las cadenas normalmente, ya con la seguridad de que están siendo guardados en utf-8.
  3. Usando el Editor de Recursos de LWUIT, abrimos nuestro archivo de recursos, que contiene el/los tema/s, las imágenes, las fuentes y otros elementos localizables. Ir a la sección de fuentes, y revisar los caracteres incluídos en la sección charset. Si faltan caracteres, se pueden agregar haciendo clic en el botón "Rebuild Font". Habrá que seleccionar una fuente apropiada, revisar su tamaño y estilo, y agregar todos los caracteres que necesitemos en la lista disponible en la sección charset.
Recordemos que en el archivo de recursos, las fuentes son convertidas a una imagen bitmap. Gracias a esto podemos disponer de cualquier tipografía en todos los celulares, y asegurarnos de que se vea igual en todos lados. Además, como una optimización importante para ahorrar el limitado espacio disponible, solo se generan los caracteres que necesitamos. Por defecto, solo encontraremos los caracteres del idioma inglés, faltando las vocales acentuadas, la ñ y la ü. También nos sirve para agregar cualquier otro carácter utilizado.

Una sugerencia: me parece que el editor no recuerda la lista de caracteres al volver a editar una fuente previa. Si es así, sería buena idea guardarla en algún lado, o mejor todavía, modificar al Editor de Recursos para que la cargue desde algún lado, como un archivo properties. No estoy seguro de esto, y ya lo verificaré más adelante.

martes, 24 de marzo de 2009

IDE en acción

Encontré un video muy interesante, de introducción al desarrollo de aplicaciones móviles usando Eclipse MTJ.

Me hace acordar a los videos de Netbeans, que están muy buenos. Hay sobre muchos temas, y vale la pena verlos.

martes, 11 de noviembre de 2008

javaME SDK 3.0 EA

El SDK para desarrollo de aplicaciones móviles javaME (Java MicroEdition), mejor conocido como WTK (Wireless Toolkit), está siendo renovado.

La versión anterior, es la llamada "Sun Java Wireless Toolkit 2.5.2 for CLDC". Con la nueva, cambia también el nombre que pasa a ser "Java Platform Micro Edition Software Development Kit 3.0". Para abreviar: JavaME SDK 3.0.

Por el momento hay una versión EA (Early Access), que viene a ser una versión de prueba o candidata, y que lamentablemente solo está disponible para windows por el momento :(

Para poder bajarla, hay que estar registrado en la SDN (Sun Developers Network).

La estoy probando, junto a otros emuladores (ya hablaré sobre esto en otro momento), y hoy me encontré con un problema. Cuando instalé el WTK 3.0, estaba usando el JDK 1.6_07. Ayer actualicé al JDK 1.6_10, y desinstalé la versión anterior. ¡Sorpresa, no funciona más el WTK 3.0!

Me imaginé que habría algún archivo de configuración apuntando al viejo JDK. Lo peor, es que ni siquiera hay un mensaje de error claro del problema. Empieza a arrancar, y queda a mitad de camino tratando de iniciar una y otra vez el device manager, que posee un icono en la traybar, quedando en un cliclo sin fin, hasta que no queda otra que matar al proceso.

Para hacerla fácil, traté de usar el (inútil) buscador de archivos de windows, seleccionando "todos los archivos", apuntándolo a la carpeta del WTK, y buscando por texto el viejo path. ¡Craso error!. Luego de bastante tiempo, responde que no existen archivos... ¡MENTIIIIIRA!. No puede haber herramienta tan mal programada como el maldito buscador de archivos que trae windows. Vuelvo a hacer la búsqueda con indispensable Total Commander, y en segundos obtengo la respuesta esperada: una lista de archivos que contienen dicho path. Bien, ya es otra cosa. Moraleja: no hay que pedirle peras al olmo.

Lo extraño, es que los archivos encontrados tienen una extensión hasta ahora desconocida para mi: .vm. ¡WTF!. Igualmente los abro con notepad++, para inspeccionar sus tripas, y resultan ser simples archivos batch. ¿Por qué ponerles dicha extensión? Supongo que la gente de Sun no querrá que los usuarios les hagan clic por error, para que en su lugar usen el .exe que los acompaña. Supongo que el .exe sería más inteligente (cof, cof) para detectar dónde se encuentra la JDK... pero bueno, están perdonados porque es una edición EA. Finalmente, corrijo los paths a mano dentro de esos archivos, y problema solucionado.

También hay un archivo en Java_ME_platform_SDK_3.0_EA\toolbar\bin\java, que contiene la ruta al jdk, y que hay que corregir también. Este lo había encontrado a mano, en un primer intento de ver dónde podría haber algún archivo de configuración.

Una curiosidad: este WTK 3.0 no es un SDK más. Es un IDE completo, con muchas herramientas y novedades. Todo el IDE parece estar basado en el framework de Netbeans. No lo he verificado, pero por la estructura de archivos y las cosas incluídas, podría asegurar que es así.

domingo, 19 de octubre de 2008

Presentando a LWUIT

LWUIT es un toolkit infaltable para el desarrollo de aplicaciones para móviles y celulares, usando JavaME.

Cualquiera que haya programado en JavaME sabe que hay dos opciones para la interfaz gráfica: usar los formularios o usar el canvas. El primero es mucho muy básico. Considerando las limitadas capacidades de los primeros celulares, no es de extrañar que sea tan limitante. Provee muy pocos elementos para hacer una UI, y de lo poco que tiene, son muy toscos y limitados. Lo peor es que las aplicaciones hechas así, son muy feas, desagradables, y no hay solución :D. La otra opción, es el canvas, que nos ofrece acceso a la pantalla como si tratara de una superficie de dibujo, muy similar a las provistas por java2D, donde hay que dibujar todo a mano, por coordenadas gráficas (x,y). Nos da poder y control absoluto del display, lo cual es muy útil para los juegos, pero para hacer una interfaz de usuario... es como construir un túnel hoy día con solo pico y pala. Otro inconveniente: como hay muchas diferencias entre un celular y otro, hay que manejar a mano las diferencias de resoluciones y profundidades de color, sortear bugs conocidos de ciertos modelos y marcas, adaptarse a las APIs disponibles en cada caso, en fin, una serie de complicaciones que puede transformar el desarrollo de una aplicación para javaME en un gran dolor de cabeza y en un terrible costo/esfuerzo.

Les presento LWUIT: la solución a (muchos de) nuestros problemas :). LWUIT significa Lightweight UI Toolkit for Java ME, el cual está gratamente inspirado por Swing. Esta librería permite crear aplicaciones modernas, agradables, con mayor usabilidad, al mismo tiempo que las hace fáciles de adaptarse a las particularidades de cada dispositivo móvil, casi "automágicamente".

Es una interfaz gráfica basada en componentes y MVC, muy similar a Swing. Los controles son dibujados aprovechando las posibilidades que ofrece cada móvil, incluyendo efectos 2D y 3D, con soporte propio de temas visuales. Estos son fáciles de intercambiar, y se incluye un editor de temas para personalizarlos y poder crear los propios.

Resulta muy fácil crear interfaces modernas y sorprendentes, y al mismo tiempo unificarlas entre distintos móviles. LWUIT se encarga de todos los detalles del dibujado por nosotros, y en el camino nos brinda muchas herramientas y soluciones a problemas comunes.

La documentación, aunque breve, es suficiente. Viene un ejemplo muy completo que muestra las posibilidades de la librería, que recomiendo probar y jugar. Pueden ver los videos donde se muestran demos sobre varios celulares típicos.



Como si esto fuera poco, estas son apenas algunas de las características de esta librería. Hay muchas más, y permanentemente están trabajando para mejorarla y agregarle más funciones y herramientas.

Si estás involucrado en el desarrollo de aplicaciones para móviles, no podés dejar de probarla.

Saludos