Archivo de la categoría ‘Aplicaciones móviles’

Java en aplicaciones para móviles

lunes 11 de abril de 2011

Acabábamos el post anterior comentando que el uso de J2Me podía hacer que la programación para ciertas plataformas se realizara de manera común.  ¿Común? bueno, si, pero no tanto, ya que no todos estos dispositivos tiene el mismo soporte de J2ME. ¿la razón? Tal vez lo primero sea definir que es exactamente J2ME.

J2ME, o ahora mismo llamada Java ME,  es una de los componentes de la llamada plataforma Java  junto con Java EE y Java SE. Su objetivo es proporcionar una serie de API’s para el desarrollo de aplicaciones en dispositivos con recursos limitados como PDA’s, coches, móviles, electrodomésticos… Es decir, el campo de dispositivos que abarca J2ME es muy grande y con unas características de hardware muy variadas.

Es por ello que Java ME se divide en las llamadas configuraciones. Existen dos: la CDC (pensada principalmente para domótica o automóviles) y la CLDC (Connected Limited Device Configuration), que es la que está en la mayoría de los móviles. Cada una de ellas proporciona unas API especiales para cada tipo de hardware.

Pero hay más. En cada configuración existen los llamados «profiles» (perfiles). Estos nos definen características concretas, por ejemplo la interfaz de usuario. Para CLDC hay tres perfiles: DoJa, pensado para móviles japoneses, IMP (para móviles sin interfaz de usuario) y MIDP (Mobile Information Device Profile) que es una versión del anterior pero con interfaz de usuario.

Es decir, que dentro de Java ME trabajaremos con la configuración CLDC  y el perfil MIDP.

Pero claro, no todo podía ser tan bonito 🙂 . A partir de aquí empiezan las particularizaciones. Cada dispositivo móvil puede incluir soporte para distintas APIs opcionales. Por ejemplo, en función del modelo sobre el que queramos programar podemos necesitar una API para el manejo de la geolocalización, de la cámara, del bluetooth,…  o de una interfaz gráfica personalizada.

¿Que ocurre al final? Pues que cada fabricante realiza sus propias implementaciones de J2ME, basándose siempre en la original de Oracle, pero pensadas en particular para sus dispositivos. De esta manera hay funcionalidades que pueden existir en una versión y en otra no, o que aún existiendo, tengan comportamientos distintos.

A día de hoy la última versión del CLDC es la 1.1 y del MIDP la 2.0.

 

Empezando a programar aplicaciones para dispositivos móviles

domingo 26 de diciembre de 2010

«¡Por fin! Ya tenemos una idea para crear alguna aplicación para un móvil.  ¿Y ahora qué?» Eso mismo nos preguntamos hace unos meses, cuando empezamos a pensar en desarrollar aplicaciones para móviles: ¿por dónde empezamos?.

Tal vez la primera pregunta a hacerse sea para qué dispositivo trabajar. No cabe duda que el mercado está cada vez más lleno de opciones y cada una con un sistema operativo, unas herramientas de desarrollo y una serie de recursos disponibles. Pero no sólo eso. Además de la parte técnica hay una importantísima parte comercial, en la que hay que contestar a preguntas como ¿a qué tipo de personas va dirigido el software que  desarrollamos? ¿qué dispositivo(s) es mayoritario en ese sector? ¿cómo funciona el canal de distribución (AppStore, OVI, Android Market…)?, etc. En esta serie de posts vamos a olvidar esta parte comercial y vamos a centrarnos en la parte técnica. Es decir, una vez elegido el sistema de destino ¿cómo se programa para él?.

Y para empezar lo primero es centrarnos en intentar hacer un resumen de lo que hoy en día podemos encontrar en la calle, especificando, aunque sea de manera muy superficial, que tipo de lenguajes y con que herramientas es posible programar cada una de ellas. ¿Preparados? Empezamos 🙂

Hoy por hoy tenemos 7 Sistemas Operativos para móviles que copan el mercado:

  • iOS (iPhone, iPad)
  • Windows 7 Phone (HTC, Samsung, LG, Sony Ericsson, ..)
  • Android (HTC, Motorola, Samsung, Nexus…)
  • RIM (BlackBerry)
  • Symbian (Nokia)
  • MeeGo (Nokia, algunos coches, )
  • WebOS (Palm, HP)

La programación sobre iOS y sobre W7P va aparte y merece una atención especial (incluso porque las herramientas de desarrollo sólo existen en sus «hermanos mayores» MacOS y Windows). El primero permite el desarrollo con Objective-C, sobre Cocoa, con XCode como herramienta de desarrollo principal. El segundo parece que se centrará en la plataforma .Net con lenguajes como C# o en Silverlight, aquel framework que creó Microsoft para hacer la competencia en el desarrollo de aplicaciones web enriquecidas a Flash y a Ajax y que, visto lo visto, parece que va a terminar centrándose en ser el sistema de desarrollo de aplicaciones para Windows Phone. Su IDE de trabajo es Visual Studio y Expression Blend.

WebOS es un sistema relativamente reciente. Está desarrollado por la Palm, Inc que ahora pertenece a HP y basado en Linux (como Android y MeeGO). Para programar sobre él se requiere básicamente conocimientos de creación de paginas web: HTML, Javascript, CSS, JSON … y como entorno de programación se dispone de Ares, un IDE integrado en un navegador web, con un editor visual bastante útil.

De MeeGO podríamos decir que es la descendencia de Linux para móviles ya que, a diferencia de Android y WebOS, Meego esta apoyado por la Linux Foundation. Un aplicación para MeeGo es como una aplicación normal escrita para KDE, es decir con las librerías Qt, sólo que con las características especiales que supone programar para dispositivos con recursos limitados.

Por su parte Symbian desarrolla en C++ y Java (aunque de esta opción hablaremos más adelante), normalmente sobre Eclipse. Aun así, existen otras opciones como Origo IDE, que permite la creación de aplicaciones de manera rápida y visual con un lenguaje de script propio o lenguajes más comunes como python o ruby,

Por último, programar en el resto (BlackBerry, Android o incluso en Symbian) puede tener similitudes que hagan que nuestros programas «puedan» ser ejecutados en un sistema u otro. ¿por qué? por el uso de Java , en concreto de J2ME, común, en principio, a todas las plataformas. Será sobre estos últimos sistemas sobre los que hablaremos en las próximas entradas.

Más información | Visual Studio, Eclipse, OrigoIDE, Ares, Silverlight