Solución a problema con J9 y Palm

Tungsten E2Hace algún tiempo desarrolle una aplicación en J2ME para mi PDA específicamente la Tungsten E2 que funcionaba a la perfección pero luego de un tiempo empece a experimentar algunos problemas como recibir errores de “Fatal Exception” y lo cual me indicaba que reinicie, pase varios dias investigando a ver de que podía provenir el error con decir que hasta me toco chatear con soporte técnico de palm y dormir pocas horas con la preocupación, pero bueno di con la solución y la quiero compartir con Uds.
Uno de los primeros problemas que experimente (Inicio del proyecto) y que fue por la novatada de no gestionar bien la variables y los procesos en mi sistema me salia un error al sincronizar los datos a mi aplicación bueno esto se soluciono con un Hardreset en el equipo.
Pero luego de un tiempo me volvió a dar otro problema (luego de 6 meses) el cual me daba un “Fatal Exception” al usar mi sistema y si volvía a reiniciar el problema persistía intente hacer un hardreset como lo habia hecho anteriormente pero esto no lo soluciono y ahora aparecían otros errores al intentar cargar solo la máquina virtual el problema por lo general tenia los siguientes síntomas o mensajes:

  • Mensaje de error luego de la sincronización “DataMgr.c Line: 8878” y no cargaba el J9 en la palm.
  • VSFDBCache.c, Line: 4051, unattached record
  • Carga el J9 pero al querer configurarlo en la Palm recibía “Fatal Exception” o la pantalla se quedaba pegada o colgada.

Porque se da este error:

La KVM de java tiene un algoritmo para liberar memoria y reservarla para otros objetos que no desfragmenta la memoria utilizada y como que llega a saturar los espacios de memoria, como no encuentra memoria intenta escribir en la ROM como ya sabemos que no es posible y lanzara el error “DataMgr.c….”.
El problema de este algoritmo es que no relaciona espacios de memoria libres, aunque sean vecinos, y por lo tanto produce una gran fragmentación de la memoria.
Una de las sugerencias es liberar todos los espacios de memoria y apuntarlos a null o en su defecto si son enteros encerarlos para ayudar de cierta manera el Garbage Collector.

Solución:

  • Realizar un warm reset y luego un software reset

Que es lo que se logra con este warm reset o tambien conocido como software reset es evitar que al reiniciar no cargue las extensiones (los hacks, programas gestores de hacks, parches del SO, preferencias e alamas, etc). Entonces evitaremos que todo lo que haya estado ocupando este programa no se cargue y como que de cierto modo se libere todo sus consumos de memoria.

Si tiene dudas de como se hace un hard reset o un warm reset lo puedes ver en la sección Palm de este blog además de algunos estrategias para desarrollar aplicaciones J2ME y optimizar el recurso de memoria.

Actualizado: Este detalle es bien importante no olvidarlo, una vez realizado los pasos anteriores realizas un hard-reset y restauras los datos desde un respaldo anterior que hayas tenido para que se sobreescriba cualquier archivo, aplicación o base de datos y de esta manera evitar este tipo de errores, tambien puedes probar a cambiar de usuario de sincronización para el PDA, con esto logras que se regeneren todas las aplicaciones para el nuevo usuario.

Saludos y espero les sea de mucha utilidad.

Anuncios

Estrategias para desarrollo en Palm

Treo 650Bueno este post lo he pensado para todos quienes desarrollamos en dispositivo mobiles y tenemos problemas con los recursos o los típicos cuelgues xq el aparato ya no dispone de recursos, por supuesto que en este post va enfocado a lo que es desarrollo en j2me.

Al momento de crear un programa tenemos que definir bien las estrategias y modelos a utilizar para optimizar de la mejor manera nuestros recursos que en este caso de nuestras dispositivos mobiles son muy limitados.

Por lo general cuando empezamos a desarrollar para estos dispositivos nos desorientamos un poco por no decir bastante ya que como siempre desarrollamos aplicaciones de escritorio sobre computadores de hoy en dia son tan potentes tendemos a despreocuparnos un poco de lo que es el ahorro de recursos y utilización de la memoria.

En fin mejor paso a destacar algunas ideas que he tomado de varios textos que me han servido para mi desarrollo y tambien al final voy a publicar los links para que Uds. mismos los lean.

Las limitaciones que son inherentes en dispositivos pequeños requiere cambiar la forma de programar nuestras aplicaciones.

Simplificar la Aplicación

Una de las cosas mas obvias para simplificar nuestra aplicación es remover características innecesarias. Considerando cada característica de nuestra aplicación cuidadosamente. Luego de quitar características innecesarias procedemos a hacer el uso y reuso de interfaces gráficas tanto como StringItems, TextField, Forms entre otras mas.

Con lo anterior me refiero que podemos utilizar un mismo botón para varias interfaces gráficas y asi mismo una forma con distintas formas de visualización es decir con diferentes objetos cargados. Intenta aprovechar cada oportunidad de aprovechar mejor tus interfaces gráficas esto haría que tu aplicación sea mas pequeña.

Usar menos memoria en tiempo de ejecución

La capacidad de memoria en tiempo de ejecución de un dispositivo pequeño puede ser limitado. Aveces estas limitaciones no son obvias. Por ejemplo, El sistema operativo de la palm define 2 tipos de memoria: dinámica y de almacenamiento. La memoria dinámica almacena los datos de la aplicación en tiempo de ejecución en particular, Esta en la pila y el monto de memoria en tiempo de ejecución. La memoria de almacenamiento es protección de escritura, memoria persistente.

El monto de memoria dinámica disponible en una aplicación varia de 32K a 256K, y lo principal RAM del dispositivo es memoria de almacenamiento. Aunque si un dispositivo tiene 8MB de RAM, los 256K limite en la memoria dinámica es importante. Si mas memoria es requerida la aplicación usa la memoria de almacenamiento, que tiene un acceso mas lento debido a al protección de escritura.
Lo siguiente son algunos tips y ejemplos de como reducir el monto de memoria en ejecución que nuestra aplicación java usa.

– Usar tipos escalares

– No depender solamente del Garbage Colector

– Ayudar al Garbage Colector

– Liberar Recursos con anterioridad

– Reusar los objetos

– Evitar Excepciones

La configuracion del Equipo

En la preferencias de tu máquina virtual de java instalada en tu palm tienes que aumentar los valores que te vienen por defecto es decir en las preferencias globales vas a activar tu el poder usar tu buffering doble es decir [Use double buffering] y la memoria máxima por defecto te viene en 2 Mb puedes ponerselo a 4Mb y el Set Maximum Java Thread Stack Size lo puedes poner tambien a 4Kb o a lo que tu gustes.

Documentos de Interés

  1. http://www.java-tips.org/java-me-tips/midp/
  2. http://www.javaperformancetuning.com/tips/j2me.shtml
  3. http://www.jasonlam604.com/books.php
  4. http://www.palowireless.com/java/tutorials.asp

Saludos y espero les sirva de mucho estos tips e ideas para el desarrollo de sus programas.

🙂

Ejecutar midlet en PDA

Logo de PalmEl siguiente post va dirigido a aquellos de nosotros que un día empezamos programando para J2ME y al querer correr la aplicación nos dio el problema de que es imposible hacerlo (Por favor asegurate que esta instalada la máquina virtual de IBM) a pesar de que habíamos instalado la máquina virtual J9 para nuestro Palm (Es necesario aclarar que las pruebas las realice en Palm 600 Treo y en Palm Tungsten E2).

Este problema se da frecuentemente xq no instalamos los archivos necesarios para que se ejecute nuestro midlet o instalamos archivos de mas como me sucedió a mi en alguna ocasión.

Es decir la siguiente pantalla:

Error de Virtual Machine

Para poder ejecutar la aplicación nuestro midlet “Hola mundo” lo que debemos hacer es instalar los siguientes archivos en tu Palm :

  • J9JavaVMMidp20.prc
  • JavaVMCheck_esES.prc

Estos archivos los obtienes del archivo que proporciona Palm para desarrollo: Java_Tech_for_Garnet_WEME57-1.zip

Cuando ya puedas ver esta pantalla en tu palm quiere decir que ya puedes correr aplicaciones .prc o en su defecto tu midlet “Hola mundo”

j9vm

J9

Y con eso ya corre nuestra aplicación.

Pruebalo y me dices como te ha ido.

Además pongo aqui el url para quienes desarrollan aplicaciones para pda.

http://www.access-company.com/spanish/developers/index.html

Saludos.

Tipos de reseto de un PDA

Logo de PalmExisten algunas formas de resetear un PDA las cuales voy explicar en el siguiente blog con su respectiva trascendencia, muchas de las veces tenemos problemas con nuestros equipos para lo cual podemos hacer uso de cada una de estas opciones para ver si de esta manera se soluciona el inconveniente.

Soft Reset

El soft reset consiste en presionar el botón que se encuentra en la parte posterior del equipo para que lo reinicie en caso de que haya cualquier problema analógicamente como cuando se nos cuelga o se nos traba la computadora lo que hacemos frecuentemente es buscar el botón de reset y presionarlo y todo vuelve a ser como antes, este tipo de reset no provoca la perdida de datos en el equipo.

Software Reset (Warm reset)

Formas de hacer un reseteo de un pda (Software-Reset) Cuando hacemos un warm reset a nuestro PDA, se reinicia pero al arrancar no carga las extensiones (los hacks, los programas gestores de hacks, los parches del SO, las preferencias de alarmas, etc) por si ésta es la fuente del problema. Si estás en este caso, el PDA te dará error cada vez que la arranques, deteniendo el proceso de arranque al intentar cargar la aplicación dañada. Como con el warm reset estas aplicaciones no se cargan, te dará la oportunidad de arreglar aquello que esté mal (normalmente borrando la fuente del problema) y reiniciar normalmente.

  1. Presionar Page-UP (Esta ubicado en el navegador de 5 direcciones)
  2. Presionar Soft Reset (Botón de reset en la parte posterior del equipo).
  3. Liberar Page-UP

Hard Reset

El hard reset nos permite volver el equipo a su configuración de fabrica en este tipo de reseteo se pierden todos sus datos agregados por lo cual se recomienda realizar un respaldo de su información para evitar futuras molestias.

  1. Presionar el botón de encendido con el botón de reset en la parte posterior del equipo al mismo tiempo.
  2. Dejar de presionar el botón de encendido hasta que aparezca el logo de la palm.
  3. Pedirá confirmación de borrado completo (Acepta presionando el botón de PAGE-UP) en otro caso cualquier botón.

Espero les sea de utilidad y buena suerte !!!!

Generalidades de un PDA

En este blog voy a publicar algunas generalidades del uso del PDA con el objetivos que se proteja y cuide su equipo en este caso me refiero al equipo Tungsten E2.

Que significa PDA?

Personal Digital Asistent (Agenda Electrónica) .

Que tiempo dura la bateria de un PDA ?

El tiempo que dura la batería de un PDA es aproximadamente 8 dias pero por supuesto hay que aclarar que dandole un uso normal, es decir no exagerando el utilización de programas multimedia.

Que tiempo debe cargarse?

El tiempo estimable debe ser alrededor de 3 horas.

Cuando se sabe que se termino de cargar la batería del PDA ?

Se sabe que termino de cargar cuando el indicador en la parte superior de la pantalla nos indique esta lleno este indicador es un barra en forma de pila que se va llenando progresivamente hasta alcanzar su totalidad.