Noticias
Entradas
Comentarios
hacker emblem

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 Comentarios a “EclipseME: programa aplicaciones J2ME bajo Eclipse”

    1. Txus dice:

      Impresionante, muchas gracias!

    2. neonigma dice:

      De nada, es un placer que le sirva de ayuda a alguien! 😀

    3. Txus dice:

      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.

    4. neonigma dice:

      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!

    5. Txus dice:

      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!

    6. neonigma dice:

      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!

    7. llamas dice:

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

    8. neonigma dice:

      Uo ya somos dos con el proyecto fin de carrera en J2ME ;).
      Suerte y a ver si lo terminamos prontito!

    9. […] hacen la vida mucho más Easy. En mi caso, todo lo que explicaba para desarrollar con EclipseME en este post, se hace con un solo clic gracias a EasyEclipse Mobile Java. Me falta por comprobar si también se […]

    10. […] hacen la vida mucho más Easy. En mi caso, todo lo que explicaba para desarrollar con EclipseME en este post, se hace con un solo clic gracias a EasyEclipse Mobile Java. Me falta por comprobar si también se […]

    11. […] encontrado dos soluciones muy válidas para no tener que codificar el código Java a pelo. En este enlace os hablé del plugin EclipseME para Eclipse, solución que para empezar estaba bien, pero luego […]

    12. mfa dice:

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

    13. neonigma dice:

      Hola, de momento no trabajo con páginas wml, de todas formas los móviles modernos cada vez más van teniendo WI-FI y jubilando el antiguo protocolo que utilizan las páginas wml.

      Te dejo con un enlace en el que hablan de cómo configurar NetBeans, que es el que utilizo ahora (me parece superior a EasyEclipse), para programar páginas wml:

      http://www.forosdelweb.com/f45/crear-pagina-w-p-con-jsp-netbeans-6-1-a-602178/

      Un saludo.

    14. Angel dice:

      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.

    15. neonigma dice:

      Jejeje me alegro que te funcionara Ángel, prueba NetBeans para tu proyecto, que a mi me ha resultado más potente en cuanto a funcionalidades y rapidez.

    16. Cesar dice:

      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.

    17. Javier dice:

      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

    18. spinito dice:

      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.

    19. neonigma dice:

      Chicos, esto no es un foro de J2ME, es un blog personal en el que comento cosas puntuales que aparecen en mi Proyecto Fin de Carrera.
      Les recomiendo el foro de la asociación Java Hispano: http://www.javahispano.org/forum/j2me/es/
      En cuanto retome el PFC seguramente estaré más puesto en el tema.

      Un saludo.

    20. Cristina dice:

      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!

    21. neonigma dice:

      Me alegra que te haya ayudado, Cristina.

      Feliz año y ánimo con tu proyecto!

    22. Cristina dice:

      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

    23. Ricardo dice:

      Muchas gracias. Tu post ahorra mucho tiempo.

    24. misterandovas dice:

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

      Excelente explicación.

    25. neonigma dice:

      Me alegra q os sirviera :). Un saludo.

    26. anquegi dice:

      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.

    27. neonigma dice:

      anquegui, en ese mírate esta otra entrada que te va a gustar: http://www.nacho-alvarez.es/?p=300

    28. David dice:

      Muy útil. Gracias.

    29. joseph dice:

      Muy bueno gracias mejor no pudo ser…

    30. joseph dice:

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

      gracias!!1

    31. neonigma dice:

      Ojalá tuviera tiempo para eso, Joseph. En su lugar, te dejo otra entrada q t puede interesar: http://www.nacho-alvarez.es/?p=300

    32. Cesar dice:

      Perfecto, absolutamente

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

      Muchas gracias.

    33. neonigma dice:

      Gracias a ti Cesar :), me alegra que te sirviera.

    34. 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

    35. Gabriel dice:

      MUCHAS GRACIAS !!!! me sirvio y me ahorro mucho tiempo.

      Salu2

    36. miguel dice:

      muy bn hermano
      MUCHAS GRACIAS
      si vieras como me sirvio esta info

    37. Edgar Contreras dice:

      Disculpa, como exporto un midlet para poder usarlo en mi celular

    38. Luis Vargas dice:

      Excelente!
      Muchas Gracias.

    39. LUIS ERNESTO dice:

      Excelente amigo!

      Me ha aclarado muchas dudas de comienzo.

      Gracias

    40. Pablo dice:

      gracias neonigma! muy bueno!!

    41. Alex dice:

      Muy útil, y varios años después.

      Gracias por compartir!

    42. neonigma dice:

      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!

    Dejar un comentario