MSA, el nuevo Java para móviles
4 de Abril de 2007 | Francisco Rueda
Sun ha anunciado un nuevo estándar Java que podrán y deberán seguir los fabricantes de terminales móviles en breve. Este nuevo estándar se llama Java Mobile Service Architecture (MSA) y se trata de una especificación realizada siguiendo el programa Java Community Proccess (JSP) en colaboración con los principales fabricantes y desarrolladores de software.
Esta especificación se asienta sobre las bases de otras especificaciones como J2ME, MIDP, CLDC y JTWI, asà como otras muchas especificaciones (JSRs) que se han ido definiendo en el JCP en los últimos años. Ya era hora de que Sun diera un paso adelante para posicionarse mejor frente a otras tecnologÃas como Symbian o Windows Mobile, porque las últimas especificaciones que fijaban los subconjuntos mÃnimos que debÃan cumplir los terminales con soporte Java tienen unos 4 años de antigüedad y están quedando obsoletas.
No me quiero enrrollar mucho con este tema pero sà me gustarÃa comentar alguna cosilla más sobre la especificación MSA. Se trata de la JSR 248 y su objetivo es definir un conjunto de funcionalidades estándar para terminales móviles clarificando las interacciones entre varias tecnologÃas asociadas con las especificaciones de MIDP y CLDC. La intención es definir, por un lado, las tecnologÃas Java que son la base común de los terminales existentes actualmente, y por otro lado, las tecnologÃas de los terminales más avanzados que están apareciendo en el mercado, y que serán la base en un futuro a medio plazo. Siguiendo esta lógica, los terminales que cumplan con MSA tendrán dos caminos:
- Cumplir un subcojunto predefinido de JSRs: 139, 118, 75, 135, 82, 184, 205 y 226
- Cumplir toda la especificación, con todas las JSRs del subconjunto más las JSRs: 172, 180, 211, 229, 234, 238, 177 y 179
Os recomiendo leer el documento de SUN sobre MSA para ampliar el breve resumen que os he hecho aquÃ.
VÃa: XatakaMóvil
Más información: Mobile Service Architecture [PDF]

Hola:
Yo sintiendolo mucho soy totalmente escéptico en lo que respecta al asunto de MSA.
Posiblemente el principal problema al que se enfrenta un desarrollador Java ME en estos momentos es la BRUTAL fragmentación que existe en el mercado.
Algunos móviles admiten pantalla completa (MIDP 2.0), otros no (MIDP 1.0), otros coma flotante(CLDC 1.1), otros no (CLDC 1.0), otros grabación de audio / video (MMAPI), otros no…
…con lo que al final, si quieres desarrollar una aplicación para “la gran masa” tienes que quedarte con el mÃnimo común multiplo de caracterÃsticas que incorporan la mayorÃa de terminales, lo que implica hacer desarrollos en general bastante pobres.
Para haceros una idea, en la empresa en la que trabajo sólo a finales del año pasado comenzamos a hacer algunas aplicaciones MIDP 2.0, descartando por lo tanto los terminales MIDP 1.0 ¡aun sabiendo que esto podÃa suponer hasta un 20% de mercado! y eso que MIDP 1.0 es un estándar del año 1999, y MIDP 2.0 de 2002.
¿Cuanto tiempo habrá de pasar hasta que estándares como MSA se integren suficientemente en el mercado como para que sean apreciables? Posiblemente demasiado como para tenerlo en cuenta los proximos años.
Leà en j2me.org que una solución para esta fragmentación podrÃa venir de la mano de MIDP 3.0, que sale YA MISMO. ProponÃan que cuando saliese un nuevo JSR, y un programador lo usase para hacer una nueva aplicación (imaginemos por ejemplo el JSR que define la capacidad de hacer interfaces con gráficos vectoriales / SVG) cuando se intentase desplegar esta aplicación en un teléfono que no cumpliese dicho estándar / JSR, la plataforma conectase a internet para actualizar la máquina virtual y poder correr dicha aplicación.
Esto serÃa fantástico, pero igual que antes, no espero verlo en los próximos 3 - 5 años
Buenas,
Según mi experiencia, la razón de que pase lo que comenta David no es culpa ni de los fabricantes ni de Sun, sino de la frecuencia de rotación de móviles en el mercado. Si bien es cierto que hay mucha gente a la que le gusta tener los móviles más punteros, también hay otros que tardan hasta 5 años en cambiar de móvil. Por esto, paradójicamente los móviles antiguos son los que más aguantan en el parque y los modernos los que menos. Esta es la razón de que siga habiendo ese 20% de MIDP 1.0 que comentabas…
David, muchas gracias por tu comentario. Ha sido realmente ilustrativo sobre lo que es el mundo del desarrollo de aplicaciones para el entorno móvil hoy en dÃa. De todos modos, es importante que se lancen este tipo de iniciativas porque aunque sea muy lentamente, es la única forma de ir mejorando. ¿Crees que MIDP 3.0 y MSA sigune lÃneas opuestas o, al menos, diferentes?
Seni, aprovecho para agradecer también tu comentario. Efectivamente, hay un porcentaje importante de gente que usa su móvil hasta que deja de funcionar, que por otro lado me parece loable y muy lógico.
Hola:
Se me olvidó poner el código de verificación, y al volver atrás mi texto habÃa desaparecido…con la parrafada que me habÃa cascado ¡GRRR!!
Resumiendo contaba que tanto MSA como (previsiblemente) MIDP 3.0 siguen el mismo modelo de comportamiento que llevamos viendo desde 1999:
Sale MIDP 1.0, que no es sino un conjunto de JSRs que cualquier móvil debe entender para poder llamarse “compatible” con el estándar o especificación MIDP 1.0, vale, perfecto.
Sun sigue trabajando tras este hito, y desarrolla nuevos JSrs, como el JSR 82 (Bluetooth). Perfecto, entonces un fabricante se decide a implementarlo en sus terminales (o más correctamente implementa versiones de la maquina virtual de Java más modernas, que recnocen ese nuevo API). Problema: Fragmentación de mercado: Ahora un desarrollador tiene que decidir para qué grupo de terminales desarrolla su aplicación: MIDP 1.0 a “secas” o MIDP 1.0 + JSR 82.
La solución normalmente si quieres hacer aplicaciones para “la masa” pasa por quedarte con el mÃnimo común múltiplo de caracterÃsticas que cumplen todos los terminales, lo cual se traduce en aplicaciones bastante pobres: mal asunto.
Pasan los años, y se van desarrollando continuamente nuevos JSR, que algunos fabricantes implementan y otros no, hasta que el mercado está tan fragmentado que esto es una locura.
Solución: Establecemos un nuevo “Punto de partida” o “Puesta a cero” o “Borron y cuenta nueva” llamado MIDP 2.0, que no es sino aglutinar todas las JSR incluidas en MIDP 1.0 con un lavado de cara, Y las nuevas JSR que han ido saliendo desde entonces.
Fantástico, ahora si quieres puedes “descartar” todo lo anterior a MIDP 2.0 y programar con cero fragmentación…hasta que a los chicos de Sun les de por sacar una nueva JSR, por ejemplo la que permite generar gráficos vectoriales….bufff….
Y asà hasta el infinito. El problema de MSA y MIDP 3.0 es que siguen este mismo modelo, con lo que la fragmentación, que es el principal problema de todo desarrollador, no se elimina.
La única solución a todo esto es una propuesta que puede leerse en www.j2me.org sobre carga dinámica de APIs en la máquina virtual. ¿Esto que es lo que es?
Imaginemos que tenemos un flamante móvil MIDP 3.0 “a secas” y nos pasan una aplicación MIDP 3.0 que además hace uso de un API que nuestra máquina virtual no reconoce: no hay problema, nuestro teléfono en ese momento conecta a internet, y actualiza la máquina virtual para que pueda reconocer esa nueva aplicación. ¡Fantástico! nos acabamos de pulir en un segurndo el 60% del coste de cualquier proyecto Java ME, y el 80% de los quebraderos de cabeza de cualquier programador que se mueva en este mundillo. Además de poder hacer “de base” siempre las mejores aplicaciones, con todos los extras que queramos, sin tener que limitarnos a ese “minimo comun multiplo” de caracterÃsticas a las que hacÃa referencia.
Problema: Muchas JSR son dependientes del hardware, por lo que siempre habrá cierta fragmentación (imaginemos un API de gestión del GPS de nuestro móvil) pero desde luego esto siempre supondrá un problema mucho menor de lo que la fragmetación de software supone ahora.
Un saludo
Poco más tengo que añadir David.
Darte de nuevo las ganas por tu comentario.
Hola a todos!
David, excelnetes comentarios sobre el tema.
Me gustaria poder contactarte, tienes algun mail donde te pueda escribir.
un saludo
Clau
quisiera saber donde puedo descargar esta paquete de java
Hola
Les doy la enorabuna, el articulo y los comentarios son fantaticos.
Estoy empezado a programar con Java y crear aplicaciones pero mi problema es que no se que Api es mas estandar para la mayoria de Moviles y que llege al mayor numero de personas.
Estoy haciendolo con SUn JAva wiresless toolkit 2.5.2.
Porfavor que tengo que especificar en settings¡-Api seletion
MuchaS gRACIAS
muy buenos comentarios,pero yo quisiera preguntarte si se puede actualazar el sistema java CLDC 1.0 a 1.1