Posteado por: fzapataramirez | Viernes, julio 4, 2008

Comenzando a desarrollar aplicaciones para dispositivos moviles.

Una de las primeras cosas que se debe analizar a la hora de comenzar un desarrollo de una aplicación para dispositivos móviles, es el público objetivo. Es necesario analizar la capacidad de compra que tendrán los usuarios de la aplicación, ya que de esto dependen los dispositivos móviles a los que nos orientaremos.

Actualmente hay gran variedad de dispositivos móviles, que varían de precio según las características y que nos serán útiles de acuerdo a las necesidades de la aplicación. Algunos ejemplos son Blackberry, PDA y Celulares.

De igual manera, tenemos varias plataformas de desarrollo con las que podemos realizar nuestra aplicación. Sin duda dos de las opciones mas utilizadas son J2ME (Java 2 Micro Edition) por parte de Sun y el Compact Framework por parte de Microsoft. La decisión de cual de las dos plataformas de desarrollo utilizar, puede ser en muchos casos una preferencia personal, pero en muchos otros casos, será por los requerimientos de la aplicación.

Personalmente, prefiero siempre trabajar en la plataforma .NET ofrecida por Microsoft, ya que tenemos la ventaja de utilizar uno de los mejores IDEs (Visual Studio) que hay en el mercado. Adicionalmente, contamos con la posibilidad de utilizar el lenguaje de programación C#, el cual es un lenguaje rico en su sintaxis (especialmente la versión 3.0) y bastante flexible ya que provee una gran variedad de comandos y palabras reservadas que permiten ahorrarnos varias líneas de código, lo cual da como resultado un código fácilmente legible, entendible y compresible. Es obligación que los dispositivos en los cuales correrá la aplicación, cuenten con la versión adecuada del compact framework, lo cual implica que tenga un sistema operativo Windows Mobile. Esto limita considerablemente el número de dispositivos a los que apuntamos desplegar nuestro programa ya que serian básicamente PDA o Pocket PC con Windows Mobile y SmartPhones. Sin embargo, tenemos la ventaja de poder utilizar una mayor cantidad de componentes que con otras plataformas de desarrollo. Por ejemplo, con el compact framework es posible utilizar un repositorio de datos SQL Server (conocido como SQL Server Mobile, SQL Server Ce o SQL Server EveryWhere).

Para los casos en que no es posible utilizar .NET, se puede utilizar la plataforma J2ME, pero spersonalmente recomiendo estar completamente seguro de la imposibilidad de utilizar el Compact framework, porque  utilizando J2ME encontrarás una gran cantidad de problemas tanto en tiempo de desarrollo como en tiempo de ejecución.

En fin, para no comentar mis experiencias personales con esta plataforma, me conformare con decir que el famoso eslogan que ha creado Sun para Java ( Write Once, Run Anywhere), no aplica para el caso del J2ME y aún más me atrevería a decir que el eslogan perfecto para esto sería Write Anywhere, Run Once porque básicamente toca desarrollar específicamente para un celular en concreto y si queremos ejecutar la misma aplicación en otro celular, muy posiblemente tocará modificar el código fuente para obtener el comportamiento adecuado.

Esto se debe básicamente a la diferencia que podemos encontrar entre un dispositivo y otro, por ejemplo la resolución de la pantalla, el tamaño del display, la memoria disponible, el tamaño máximo del jar permitido, la configuración que maneja (CLDC 1.0 o CLDC 1.1), el perfil (MIDP 1.0, MIDP 2.0 o MIDP 2.1), las APIs de java incluidas, etc.

Finalmente, en caso de no tener un conocimiento sólido de la plataforma de desarrollo elegida, es buena idea buscar documentación, libros, tutoriales para conocer el ambiente de desarrollo que se utilizara, el IDE, las funcionalidades que provee y desarrollar una aplicación de ejemplo que refleje el conocimiento adquirido durante este entrenamiento. Una de las cosas prácticas interesantes, es también aprender algunos shorctus del IDE ya que esto aumentara la productividad en el desarrollo.


Responses

  1. Interesante articulo para un buen comienzo

  2. Que bien la sugerencia de trabajar con .Net y tu explicación del porque….

    Me gustaría que hicieras más artículos sobre .Net para conocer mas esta plataforma y sus beneficios, para los que aun no sabemos tanto pero estamos interesados en aprender y leer este tipo de articulos.

    Un beso

  3. Interesting, thanks.

  4. […] lo mencione en un post anterior, para desarrollar aplicaciones móviles en J2ME debemos tener en cuenta los perfiles y las […]

  5. Es interesante leer tu comentario sobre .Net con respecto a J2ME. Pero la verdad es que no estoy de acuerdo con las “ventajas” de .Net frente a J2ME.
    A .Net no lo he usado lo suficiente, pero creo que no conoces J2ME como para hacer estas diferencias, no al menos, con la supuesta alta “superioridad” de la tecnologia de Microsoft.
    Frente a la frase “Write Once, Run Anywhere”, no es tanto como dices, pues, depende de como desarrolles la aplicación. Está en uno hacerlo “generico” o sobre una arquitectura especifica, como por ejemplo la familia S40 de nokia.
    Soy programador en J2ME, novato, he logrado unir mediante http y buetooth con un programa Desktop (que a su vez se conectaba con un servidor de base de datos mySQL y un postgreSQL), con servicios web y con un servlet. Tambien leer archivos txt y xml. Al mismo MIDlet, lo use en un nokia 5200, 6131, motorola v3 y sonyericson k510. La unica difirencia al ver los programas, fueron las pantallas de cada telefono, pero ahi depende a que si usas Canvas (programacion mediante funciones graficas) o los objetos comunes como listas y form de J2ME. Yo use estos ultimos mas que nada acompañado con partes graficas que se amolden a la pantalla del telefono.
    Ahora bien, se me complico la parte de bluetooth, pero fue por no haber entendido algunas cuestiones “tecnicas” de la especificacion JSR82.

    Saludos.

    • Hola Gabriel

      Bueno, me parece válido tu punto de vista, de hecho de eso se trata el dar opiniones referentes a plataformas de desarrollo, todo depende de los gustos personales.
      En mi experiencia personal desarrollando aplicaciones para dispositivos móviles, he tenido que emplear en un par de ocasiones el J2ME y pues he tenido el mismo problema que tu mencionas: “La parte grafica varia en cada dispositivo” (o por lo menos en cada familia de dispositivos). Esta es la desventaja que comento en el post que tiene java sobre el compact Framework, ya que con el segundo ese es un problema que no existe.

      Eso por el lado mas simple, pero entrando mas en profundidad, me he encontrado con problemas tales como que un dispositivo apesar de tener bluetooth, no cuenta con el jsr82, o que por ejemplo aunque cuenta con la posibilidad de tener acceso a Internet por medio de las redes GSM, no es posible consumir un web service porque no tiene el jsr 172.

      Es por estas cosas que digo, que en muchas ocasiones (Habran otras donde J2ME funcione a la perfeccion en todos los dispositivos) tocará desarrollar codigo especifico para diferentes familias de dispositivos.

      Suerte !!!

  6. Yo devuelta.

    Bien, sigo a favor J2ME.🙂
    Pero no encontra de .Net.

    En el caso de Internet por medio de GSM, no he probado codigos, pero, si he podido obtener archivos de un servidor web (por ejemplo, un archivo txt y un xml), pero no he probado navegar con el movil (con mi programita claro…).
    (La principal causa por la que no he realizado pruebas con internet, es que aqui en Argentina el costo de kBs transferido es elevado).

    te cuento tambien que he programado un Web Service en Java (J2SE), lo publiqué (mediante TomCat y Glassfish V2 y V3), y he podido hacer uso del mismo, desde mi programita en J2ME (a pesar del problema anterior, pues me di cuenta lo caro que nos cobran el uso GSM, GPRS… en Argentina).

    Me falta hablar de vuelta sobre la parte grafica en J2ME.
    No es facil, pero para nada complicado. Es como en todo, te lleva algun tiempito cuando no sabes hacerlo. Por suerte, ahora hay IDEs que te permiten “dibujar” tu midlet (y con soporte SVG).
    Y queda la parte de “adpatación” de la interface grafica en los moviles. Pero eso es una de las cuasas por la que debemos programar lineas adicionales en J2ME, por el solo hecho de la diversidad de dispositivos, pues existen “resoluciones” de pantallas distintas, arquitecturas y más.
    Y en .Net, no pasa esto, porque los dispositivos son menos (no equivalente a simple, inferior o mas, sino que a cantidad). Y creo que poseen caracteristicas parecidas.

    En conclusion, pienso igual que vos. Pues depende del gusto de cada uno, y cual es el desarrollo que uno debe realizar.
    En algun momento me van a pedir que diseñe un software de control de algo, y esa empresa posee x cantidad de Pocket PC , y mi solucion va a ser programar en .Net, pero otro dia quieren hacerlo para celulares mas “normales” y mi solucion pasa a ser J2ME.
    En particular, me gusta mucho la filosofia Java, y toda la tecnologia desarrolada, pues java no es solo un “lenguaje” de programación, es una Tecnologia.
    .Net, copia mucho de esa fiosofia.

    Y bien, lo lindo de todo esto, es que tengamos la posibilidad de elegir en que desarrollar, sobre todo, QUE NOS GUSTE PROGRAMAR!!!

    Saludos

  7. hola, muy interesante el articulo.
    Hago una consulta. En tu articulo decis “…tenemos varias plataformas de desarrollo con las que podemos realizar nuestra aplicación. Sin duda dos de las opciones mas utilizadas son J2ME (Java 2 Micro Edition) por parte de Sun y el Compact Framework por parte de Microsoft.”.
    cuales son las otras plataformas de desarrollo actuales?

    Saludos


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Categorías

A %d blogueros les gusta esto: