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:
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.
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.
Impresionante, muchas gracias!
De nada, es un placer que le sirva de ayuda a alguien! 😀
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.
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!
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!
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!
Gracias tio por la ayuda me ha servido de mucho para poder empezar con mi proyecto de fin de carrera. Un saludo.
Uo ya somos dos con el proyecto fin de carrera en J2ME ;).
Suerte y a ver si lo terminamos prontito!
Pingback: Easy Eclipse: distribuciones específicas de Eclipse | El blog de neonigma
Pingback: EasyEclipse: distribuciones específicas de Eclipse « Un Bioinformatiquillo
Pingback: NetBeans IDE 6.1 Mobility en Ubuntu: la solución definitiva para programación J2ME | El blog de neonigma
interezante…gracias por el post…
pero como podria hacer para trabajar con Base de Datos y paginas wml.
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.
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.
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.
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.
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
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.
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.
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!
Me alegra que te haya ayudado, Cristina.
Feliz año y ánimo con tu proyecto!
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
Muchas gracias. Tu post ahorra mucho tiempo.
Muchas gracias,
Ya no sabía que hacer para que la ayuda tirara (javadoc).
Excelente explicación.
Me alegra q os sirviera :). Un saludo.
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.
anquegui, en ese mírate esta otra entrada que te va a gustar: http://www.nacho-alvarez.es/?p=300
Muy útil. Gracias.
Muy bueno gracias mejor no pudo ser…
Por casualidad no tienes un tutorial sobre j2me con ejemplos..
gracias!!1
Ojalá tuviera tiempo para eso, Joseph. En su lugar, te dejo otra entrada q t puede interesar: http://www.nacho-alvarez.es/?p=300
Perfecto, absolutamente
Creo que es de los pocos tutoriales que he seguido y ha funcionado todo lo que en ellos esta escrito.
Muchas gracias.
Gracias a ti Cesar :), me alegra que te sirviera.
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
MUCHAS GRACIAS !!!! me sirvio y me ahorro mucho tiempo.
Salu2
muy bn hermano
MUCHAS GRACIAS
si vieras como me sirvio esta info
Disculpa, como exporto un midlet para poder usarlo en mi celular
Excelente!
Muchas Gracias.
Excelente amigo!
Me ha aclarado muchas dudas de comienzo.
Gracias
gracias neonigma! muy bueno!!
Muy útil, y varios años después.
Gracias por compartir!
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!