EclipseME: programa aplicaciones J2ME bajo Eclipse

Estoy haciendo el PFC con J2ME y al estudiar un par de libros para ir cogiendo conocimientos me he encontrado con que ambos (y mucha más bibliografía) te ponen a programar J2ME a pelo y luego te enseñan a cargar el código en el módulo KToolbar del Sun Wireless Toolkit.

Sin embargo, investigando por ahí he visto una forma más sencilla de crearse un proyecto de este tipo, y es que gracias a un plugin para Eclipse, podemos disfrutar de las ventajas de este IDE: autocompletado, resaltado de sintaxis, sencillez de programación y mejor disponibilidad espacial. El milagro en sí se llama EclipseME y, la verdad sea dicha también, ha sido un poco fastidioso echarlo a andar, aunque no por el conector en sí, sino por fallos puntuales de configuración en mi equipo. Comenzamos.

En la página de EclipseME te indican los prerequisitos a cumplir para la instalación del plugin. Por tanto, debemos tener instalado lo siguiente en nuestro sistema:

  • Sun Java2 1.4.x. Recordar que Java2 1.5 y 1.6 no están soportados por J2ME, que es bastante más ligero. No es necesario instalar el JDK a mano ya que Eclipse lo trae.
  • Eclipse. Para EclipseME version 1.6.2 y posteriores, se requiere Eclipse 3.2 o superior. Se ha eliminado el soporte para Eclipse 3.1.
  • Un toolkit wireless soportado. Yo he escogido el Sun Java Wireless Toolkit para la configuración CLDC. Tenéis una pequeña guía de instalación para Linux en este post.

Vamos a ver los pasos de instalación:

  • En Eclipse, nos vamos a Help -> Software Updates -> Find and install.
  • Elegir «Search for new features to install» y pulsar en «Next».
  • Pulsar en «New Remote Site».
  • Escribir un nombre para el sitio a recuperar, por ejemplo «EclipseME Update Site» y como URL escribir «http://www.eclipseme.org/updates/». Pulsar en el botón «OK». Pulsar ahora en «Finish».
  • Seleccionar de la lista de la nueva pantalla el ítem «EclipseME Update Site». Pulsar «Next».
  • Seleccionar «EclipseME» y pulsar «Next».
  • Aceptar los términos de la licencia y pulsar en «Next».
  • Elegir un directorio de instalación para el plugin y pulsar en «Finish».
  • Si aparece una pantalla advirtiendo que el paquete no está firmado, nos pedirá confirmación de instalación, para lo que hacemos clic en «Install».
  • Si nos pide reiniciar el entorno de trabajo, hacemos clic en «Yes».
  • El plugin queda instalado y podemos observar su configuración en Window => Preferences => J2ME.

Vamos ahora con la configuración, paso obligatorio si queremos trabajar con el plugin:

  • Expandimos Window => Preferences => J2ME.
  • Nos vamos a «Device Management». Pulsamos en el botón «Import».
  • En la nueva ventana, pulsamos en «Browse» y seleccionamos el directorio donde tenemos instalado el WTK (Wireless Toolkit de Sun). En mi caso, está en /home/neonigma/WTK2.5.2. Pulsamos en «Aceptar» una vez entramos en el directorio. Importante pulsar ahora en «Refresh».
  • Nos debe encontrar una serie de definiciones de dispositivos. Pulsamos en «Finish» con todo marcado.
  • Una vez añadidos todos, escogemos el que preferimos usar. En mi caso, yo utilizo el DefaultGrayPhone. Lo marcamos y pulsamos en «OK».
  • Ahora vamos a tocar otra configuración MUY IMPORTANTE. Nos vamos a Window => Preferences => Java => Debug.
  • Hay que asegurarse que los checkbutton Suspend execution on uncaught exceptions y Suspend execution on compilation errors NO están marcados. En la zona Hot Code Replace se pueden marcar todos. El relativo al breakpoint puede marcarse también. En la zona de abajo Debugger Timeout tiene que ponerse a 15000 ms MÍNIMO, y el Launch Timeout a 20000 mínimo.

Ahora vamos a crear un nuevo proyecto:

  • Nos vamos a File => New Project y seleccionamos J2ME Midlet Suite del interior del nodo «J2ME».
  • Le damos un nombre al proyecto. Pulsamos «Next».
  • Escogemos un grupo, en mi caso J2ME Wireless Toolkit 2.5.2 y un Device, en mi caso DefaultGrayPhone. Especificamos un nombre para el descriptor de aplicación JAD. Pulsamos en «Next» y luego en «Finish».
  • Lo siguiente es añadir una clase Java al proyecto y codificar cualquier ejemplo. En este enlace os dejo un ejemplo bien básico. Esta parte se facilita mucho gracias al plugin, ya que pulsando en el botón derecho en nuestro proyecto y siguiendo la ruta New -> Other… -> J2ME -> J2ME Midlet te pide el nombre de una nueva clase Java que albergará nuestro midlet y que, por defecto, ya introduce los métodos básicos para la construcción de dicho midlet: startApp(), pauseApp() y destroyApp().

    Una vez codificada la clase, vamos con la configuración de ejecución:

    • Nos vamos al menú Run => Run… Creamos una nueva configuración dentro de Wireless Toolkit Emulator. En la zona de la derecha, en «Project», estará indicado el proyecto actual. En la región Executable marcamos Midlet y pulsamos en el botón Search. Escogemos nuestra clase principal. Ya podemos pulsar en «Apply» y «Run» para que Eclipse compile nuestro proyecto y lance KToolBar para ver el resultado de la ejecución.

    Es interesante saber que el .jar de la aplicación lo guarda el plugin en workspace/nombre_proyecto/.eclipse.tmp/emulation/.

    Os dejo unas cuantas capturas de pantalla para que se comprueben las facilidades que nos ofrece este plugin.

    pantallazo.png

    pantallazo-1.png

    pantallazo-2.png

    Vamos a rizar el rizo un poco más. Ahora quiero meter la documentacion del API de J2ME en Eclipse, para que además de autocompletado tenga documentación de las funciones que estoy usando. Los pasos:

    • Vamos a Window => Preferences y expandimos el ítem J2ME. Seleccionamos el subítem Device management. Ahora seleccionamos el dispositivo que queremos editar (DefaultColorPhone en mi caso y hacemos doble clic sobre él.
    • Se nos abre una ventana de propiedades. Nos vamos a la pestaña Libraries. De la lista de archivos buscamos midpapi21.jar.
    • Hacemos clic en el campo JavaDoc del elemento midpapi21.jar y aparece un botón para examinar el disco duro.
    • Se escoge un path a la doc del API (primer ítem JavaDoc URL). En mi caso el path que tengo puesto es file:/home/neonigma/WTK2.5.2/docs/api/midp/
    • Reiniciar Eclipse para que los cambios se vean reflejados

    Os dejo una imagen para que veáis la utilidad del asunto, es realmente interesante disponer de la documentación de J2ME en caliente.

    En el caso de que al ir a la sección Device Management nos aparezca un error y no los dispositivos, debemos ejecutar el siguiente comando:

    sudo update-alternatives --config java

    y elegir la máquina virtual java-6-sun en lugar de la java-gcj. Si el error persiste, ir a Window => Preferences => J2ME y en el cuadro WTK Root escribir /home/usuario/WTK2.5.2/bin/ (o la ruta correspondiente a WTK2.5.2/bin).

    Nada más, espero que le sea útil a alguien.

    A 6 personas les gusta esta entrada

    42 pensamientos en “EclipseME: programa aplicaciones J2ME bajo Eclipse

    1. Me ha servido de mucho para configurar eclipse para poder hacer mis primeros desarrollos en j2me.
      Voy a aprovechar para hacerte una pregunta si tienes un rato para contestar.
      Me estoy volviendo loco por foros para sacar la respuesta pero me imagino que será una tontería para alguien que ya ha desarrollado en este entorno.
      Se trata de «entender» cómo eclipse exporta los jar para ejecutarlos en un movil u otro. Entiendo que hay diferentes sdk para cada marca de movil por ejemplo para nokia, pero no sé cómo configurar la herramienta para que me lo exporte segun el modelo de movil que quiera, ¿podrias dejar unas nociones básicas como ayuda?

      Muchisimas gracias,
      Un saludo.

    2. Txus, ningún problema en contarte lo que sé.
      Hasta donde yo sé, un .jar debería ser capaz de ejecutarse en cualquier móvil que tenga una máquina virtual Java 1.4.x. Java tiene la suerte de ser universal y portable ya que, teniendo una máquina virtual, puedes ejecutar un .jar donde quieras.
      Como tú y yo bien sabemos, muchas veces bajas algún juego en .jar y funciona en algunos móviles y en otros no. No sé muy bien a qué puede deberse esto pero imagino que tendrá que ver con la versión de la máquina virtual.
      De momento no he tocado mucho mis desarrollos porque estoy terminando 4 asignaturas que me quedan este cuatrimestre y ya empezaría con el proyecto.
      Sí te digo que las pequeñas cosas que he diseñado para probar, me han funcionado perfectamente tanto en un Nokia E65 como en un Nokia N70.
      Ya me contarás como rulan los desarrollos en algunos móviles más si tienes oportunidad ;).

      Un saludo!

    3. Ok.
      Creo que va a deberse a que tengo instalado en el ordenador un jre1.6.0_02 y si mal no recuerdo los moviles soportan hasta la 1.4.x. Podrían ir por ahi los tiros, gracias por tu respuesta y muchas suerte en los examenes! Yo ya los sufrí en su día y no son para tanto… 😛

      Saludos!

    4. Gracias tio! Si no van mal, pero hay que estudiarlos los jodíos hahaha.
      En cuanto a tener instalado un jre1.6, yo también lo tengo y no pasa nada, lo que pasa que al compilar en Eclipse, si le das al botón derecho y Propiedades de tu proyecto, el ítem Java Compiler lo cambias a 1.4 y toda la compilación que se realiza sobre ese proyecto se hace con java 1.4. De esta forma, cuando sacas el .jar tal y como pongo en el post, ese .jar está compilado con la 1.4 y es perfectamente válida para móviles, que soportan como bien dices hasta la 1.4.x.

      Saludos!

    5. Gracias tio por la ayuda me ha servido de mucho para poder empezar con mi proyecto de fin de carrera. Un saludo.

    6. Pingback: Easy Eclipse: distribuciones específicas de Eclipse | El blog de neonigma

    7. Pingback: EasyEclipse: distribuciones específicas de Eclipse « Un Bioinformatiquillo

    8. Pingback: NetBeans IDE 6.1 Mobility en Ubuntu: la solución definitiva para programación J2ME | El blog de neonigma

    9. interezante…gracias por el post…
      pero como podria hacer para trabajar con Base de Datos y paginas wml.

    10. Muchisimas graciassss¡¡¡¡¡¡¡por fin he conseguido cargar mi aplicacion en mi movil¡¡¡es un nokia 6120, y por si alguien le sirve, el problema estaba en que intentaba compilar con java1.3 en lugar de con java1.4. haciendo dicho cambio todo funciona perfect, ahora a programar una aplicacion mas chunga¡¡¡ahhh..y yo tb estoy con PFC con J2ME.

    11. Hola todos, eh estado leyendo este foro y veo que tienen experiencia con j2me. Eh estado queriando consumir un web service con j2me (utilizo el plugin de Eclipse para BlackBerry) y por mas que leo solo consigo confundirme. acabo de bajar una herramienta crear un stub supuestamente es lo primero que debo hacer para consimir tal web service (el webServices esta en localhost), y despues hay que realizar otras operaciones, pero aun no lo consigo.

      Alguno de ustedes sabra como consumir un web services con j2me, les comento que soy nuevo en java, y pues apenas estoy aprendiendo todo esto. gracias por su ayuda y hasta pronto.

    12. Hola a todos, me encontre este foro buscando un remedio a mi mal, y al darme cuenta que estan trabajando con j2me, al igual que yo, me gustaria que alguien pudiera ayudarme con mi problema, pues soy nuevo en esto, es un proyecto para la universidad,

      mi problema es que creé un par de MIDLets que involucraban imagenes, pero al correrlos en el eclipse no muestra las imagenes,

      habia creado otros midlets sin imagenes y corrian muy bien

      creo que podria ser algo de config de plugins en el eclipse
      ***me base un poco en el procedimiento de neonigma, pero creo qe se me pudo pasar algo..
      si pudieran ayudarme , gracias

    13. ola soy nuevo en esto me gustaria aprender pero no encuentro nada mas q ejemplos sobre hola mundo y no quiero eso, me gustaria saber mas hacerca de como programar en eclipseME y no encuentro algo q me sirva para usar mas componentes de este software. me podrian ayudar.
      gracias.

    14. Genial, esto me va ayudar mucho en mi proyecto. Es de mucha ayuda, aunque queda mucho por investigar cuando se es principiante.
      Gracias.
      FELIZ AÑO NUEVO!

    15. Hola
      tengo algunos errores solo por Importar el Projecto al workspace es en el que estoy. Sabes que debo hacer si me sale que J2ME library (failed to get library information)
      un saludo

    16. Muchas gracias,
      Ya no sabía que hacer para que la ayuda tirara (javadoc).

      Excelente explicación.

    17. Muchas gracias por el tutorial de j2me :-), la verdad que queria empezar a hacer cosas para moviles, y así el inico sera mucho más facilito xD y amigable con eclipse muchas gracias. Suerte con el PFC!!!!!! 😉 yo lo empezaré pronto.

    18. Por casualidad no tienes un tutorial sobre j2me con ejemplos..

      gracias!!1

    19. Perfecto, absolutamente

      Creo que es de los pocos tutoriales que he seguido y ha funcionado todo lo que en ellos esta escrito.

      Muchas gracias.

    20. woolaaaa!!!!

      querido: neonigma

      oie muchas gracias por la ayuda ehhhhh

      nos sirvio de mucho ya ke mi tonto profesor no sabe nada de esto

      y mira ke es un «teacher»

      bueno gracias

      ke estes bien

      atte: miriam & bere

    21. Gracias a todos, es bonito saber que aunque he acabado no usando esta tecnología, he ayudado a alguien, y más después de todos estos años 🙂

      Saludos!

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *