3 de abril de 2011

Crear una libreria para una aplicacion Java ME

En mi ignorancia en aplicaciones mobiles ( y en java ), pensaba que el procedimiento para crear y agregar una libreria propia a un proyecto nuevo, era el mismo para la version de Java SE y ME. Pero estaba equivocado. 

Generalmente, cuando se quiere crear una libreria, solo se toma un proyecto, se construye (build), esto nos genera un archivo con extension ".jar" que es el que contiene las clases listas para ser agregardas a otro proyecto a manera de libreria. Entonces lo que hariamos en nuestro proyecto de Java SE seria agregar la libreria. Si estamos en Netbeans, bastaria con dar clic derecho en la carpeta de librerias de nuestro proyecto y seleccionar "add library". Y con esto podriamos hacer uso de nuestra libreria. 

Quise hacer este procedimiento para una aplicacion mobile que actualmente desarrollo (PipaApp). El compilador me decia que todo estaba correcto,  pero al momento de correr la aplicacion en el emulador obtenia este error:


java.lang.NoClassDefFoundError: com/blogspot/pplouis/saludo/Saludo
        at hello.PipaApp.getFormPrincipal(+2)
        at hello.PipaApp.startMIDlet(PipaApp.java:50)
        at hello.PipaApp.startApp(PipaApp.java:183)
        at javax.microedition.midlet.MIDletProxy.startApp(MIDletProxy.java:43)
        at com.sun.midp.midlet.Scheduler.schedule(Scheduler.java:374)
        at com.sun.midp.main.Main.runLocalClass(Main.java:466)
        at com.sun.midp.main.Main.main(Main.java:120)



Y es que no se puede agregar un archivo .jar creado con Java SE a un proyecto Java ME ( sin antes hacer unos cambios en un archivo de configuracion ), aunque se trate de solo una clase, que no haga ningun import y que solo imprima un hola mundo.  Un archivo .jar asi deberia de funcionar en ambar versiones de Java, pero no lo hace porque en el archivo META-INF, que se encuentra dentro del .jar, dice lo siguente:


Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: 1.6.0_14-b08 (Sun Microsystems Inc.)
X-COMMENT: Main-Class will be added automatically by build


mientras que un archivo .jar creado para una app mobile de Java Me, tiene lo siguiente:


Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: 1.6.0_14-b08 (Sun Microsystems Inc.)
MIDlet-Vendor: Vendor
MIDlet-Name: SaludoLibreriaMobile
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.1


y se observa que hay especificaciones acerca de la configuracion y el perfil de la libreria.

 Para crear una libreria para Java Me es necesario que sea especificamente para un proyecto Java Me. Para esto haremos lo siguiente:

Primero creamos nuevo proyecto de tipo Java Me, dentro de las categorias que nos muestra ponemos que sea un "Mobile Class Library"


Despues se escoje la configuracion que y perfil que le queremos dar a nuestra libreria. Esto es importante, ya que esta libreria tendra mejor compatibilidad con las aplicaciones que tengan la misma configuración.


Ya creado el proyecto, solo necesitamos escribir nuestro codigo:




darle en netbeans "clean" o "clean and build".




 Esto nos genera el archivo distribuible, que para este caso sera un .jar, el cual es nuestra libreria, y que se encuentra en la carpeta dist de nuestro proyecto. 


La carpeta lib viene vacia, y el archivo Demos.jad, es basicamente un archivo de informacion, que generalmente se ocupa cuando se va a descar la aplicaciocion de algun sitio y sirve para dar informacion acerca de la version, tamaño del archivo, configuracion , etc.

Y ya por ultimo solo basta agregarla a nuestro proyecto Java Me. Para eso damos clic derecho en la carpeta de "Resources", despues en "add jar/zip" y agregarmos el archivo .jar generado previamente.  


24 de marzo de 2011

error: The virtual machine does not support this operation: schema change not implemented

Los errores de Netbeans. cuando estas en modo debugger para una app: puedes hacer cambios en el codigo y verlos reflejados en la aplicacion sin que tengas de desplegarla otra vez. Esto agiliza el proceso de debuggear.

Hay ciertos cambios que no los puede actualizar, como por ejemplo el añadir o elminar un field o variable de clase, cuyo error cuando queramos "Apply Code Changes" es:

The virtual machine does not support this operation: schema change not implemented
D:\SACMx\SACMx6.0.0\nbproject\build-impl.xml:914: The following error occurred while executing this line:
D:\SACMx\SACMx6.0.0\nbproject\build-impl.xml:401: The virtual machine does not support this operation: schema change not implemented
BUILD FAILED (total time: 0 seconds)

Esto es porque la implementacion de la maquina virtual no lo permite. Si navegamos hasta build-impl.xml en la linea 914 y build-impl.xml en la linea 401, nos daremos cuenta de que es un error al querer recargar una clase

Ademas de esta condicion no se podra "Apply Code Changes" cuando el codigo tenga errores de compilacion (obviamente).

22 de marzo de 2011

Si fuera ingeniero...

Wow, esto lo tenia en los borradores como 2 años, se traspapelo y hasta ahora me vengo a dar cuenta. Dude si dale click en "Publicar Entrada", pero pues al final lo hice.


Si fuera ingeniero o alguien mas tecnico, te hablaria de los errores tecnicos de Guindous Vista, como que se desintala a la primera provocacion el archivo rundll32.exe, que se devora la memoria RAM, una serie de errores indocumentados por Guindous, a nivel de controladores siempre nos quedo mal Vista, etc, etc etc... pero para el caso no soy tecnico, mas bien rudo (los rudos los rudos los rudos!!), asi es que esta es la lectura que le doy al Vista gate:

La onda es q Microsoft aplico lo q hace Apple, de venderte todo por partes, pero en su version mala onda, me explico :

A la salida de Guindous Vista, Microsoft se dio cuenta de que a nivel empresarial no era viable cambiar de sistema operativo, ya que XP ya se habia convertido en un sistema maduro y muy funcional. A nivel usuario cacero, tampoco creaba muchas espectativas la salida de un sistema operativo (mucha gente ni entereda de que salia un nuevo S.O.). A nivel personas relacionadas con las tecnologias de informacion realmente creo espectativas, pero este no es un mercado muy grande. Los tentaculos de Microsoft estan en las empresas. Asi que lo q hizo fue dejar de darle soporte y descontinuar a XP. Con lo cual forzo el cambion de SO, pero no solo de eso, sino que ademas forzo en la mayoria de los casos un cambio de hardware, ya que Vista es tan diva como para pedir 3 GHz de procesador, 2GB RAM, 256MB video (las especificaciones marcan otros requerimientos como minimos, pero con eso Vista se arrastra todavia mas). Ademas de que las nuevas computadoras ya te vendian la licencia de Vista, y dejaron de vender XP
Asi que hubo un traslado masivo a Guindous Vista.

Hasta este momento Microsoft ya se embolso una buena lana por todo lo generado por Vista. Pero aqui viene lo critico. Siendo Vista un S.O. planeado para que no funcionara correctamente (con esto digo que es malo a proposito), Microsoft te dice: "ahh, no te jala Vista, ah pues mira en unos mese saco Guindous 7, cambiate a Guindous 7". Ahi fue cuando todo tuvo sentido. Primero te obligan a comprar un mal SO, para luego orillarte a comprarles un Guindous 7 que no es otra cosa q Vista sin errores (al menos evidentes). Doble ingreso para Microsoft!

En estos momentos los Linux-boys y los Mac-boys estaran mentando madres y su odio hacia Microsoft tuvo un +1000. Pero no hagamos bilis...



Are You Ok - Alfa

Una aplicacion que hice con mucho cariño para Pipa Romero. Hace un par de preguntas, y deacuerdo a la combinacion de respuestas, muestra una frase o un chiste. Esta en version alfa, ya que se pretente mejorar la parte de la deduccion del estado de animo, con test psicologicos. Esta hecha en Java ME con CLDC 1.1 y MIDP-2.1. Solo copiar el jar al telefono y ejecutarlo. Se abrira el asistente de instalacion del telefono.