Codename One 1.0: escribe en Java y ejecuta en iOS, Blackberry y Android
Codename One es una empresa creada por varios exempleados de Sun Microsystems que promete ser el Santo grial del desarrollo para dispositivos móviles: uno escribe una única aplicación que después se podrá ejecutar en iOS, Blackberry, Windows Phone y Android como aplicaciones nativas. La aplicación se escribe en Java (no empleando HTML5 como PhoneGap) y después se compila en los servidores de la empresa Codename One (no nos podemos bajar "el ingrediente mágico") a binarios nativos para cada plataforma.
Tras un período de más de seis meses donde sus herramientas han estado en "beta", durante el cual han tenido más de 100,000 descargas de su kit de desarrollo, esta semana la startup israelí ha anunciado la primera versión estable de su producto.
Las herramientas de desarrollo son gratuitas, aunque para compilar a las plataformas nativas es imprescindible emplear los servidores de la empresa y, salvo que seamos clientes de pago, tenemos limitado el número de builds de aplicaciones nativas que podemos realizar al mes, especialmente para la plataforma iOS (ya que según ellos requiere muchos más recursos crear el ejecutable nativo para esa plataforma). Si queremos, podemos comprar más builds: por sólo 9 dólares al mes podremos hacer todos los que queramos. La empresa también ofrece soporte y formación.
Al escribir aplicaciones con Codename One estaremos escribiendo código Java contra API Java específico de Codename One, que ellos traducirán después a la aplicación para cada una de las plataformas móviles. El modelo de programación de Codename One es muy parecido al de Swing, y la funcionalidad que ofrecen estos momentos está muy orientada a desarrollar aplicaciones que no sean juegos. No soportan, por ejemplo, 3D.
Cuentan con un plugin (opensource) tanto para Netbeans como para Eclipse. El plugin tiene un conjunto bastante potente de herramientas de desarrollo, y cuando queremos generar el ejecutable nativo envía nuestro código a los servidores de Codename One para generarlo:
Aquí os dejo una demo de una aplicación construida con Codename One ejecutándose en un iPad:
En el diseño de Codename One han seguido el mismo camino que el propio Java: han comenzado por un mínimo común denominador de funcionalidad de todas las plataformas, y ahora según van teniendo tiempos y recursos van añadiendo características específicas para cada plataforma. En el caso de que una plataforma tenga funcionalidad a las cuales ellos no dan acceso desde su API tenemos un mecanismo "a lo JNI" para llamar a código nativo de esa plataforma.
Se trata sin duda de un proyecto muy ambicioso, pero la gente que está detrás de él es gente bastante válida y con amplia experiencia en el campo, como Chen Fishbein, fundador principal arquitecto de Lightweight User Interface Toolkit (LWUIT), el principal toolkit gráfico para Java ME, y también ha participado en el desarrollo de Sprint Wireless Toolkit.
¿Qué os parece esta herramienta?
Reader Comments (3)
Pues es un gran paso adelante para construir App para móviles, sobre todo para empresas pequeña el codificar una sola vez para todas las plataformas es una ventaja muy buena.
Yo que estoy con Flex y AIR lo cierto es que es bastante cómodo que el software luego te transforme tu aplicación a las plataformas cliente, en mi caso Blacberry, Amdroid y IOS.
El problema que habrá que valorar como siempre es el rendimiento de las aplicaciones, ya sabemos que tan bueno como una nativa no tendrán pero si es aceptable puede ser una gran solución. Pero como la evolución de las prestaciones de los terminales móviles y las tablets va creciendo cada vez más, el rendimiento debería ser cada vez más aceptable.
Gracias por presentarnos estas novedades.
No me atrevo a valorar que tal funciona y que limitaciones tiene (qué no puedes hacer que sí puedes en la plataforma nativa) pero desde luego es LA ALTERNATIVA a hacer aplicaciones web instalables.
Posiblemente sea una gran herramienta para hacer aplicaciones normalitas, pero en el momento en el que necesites funcionalidad avanzada o rendimiento seguramente deberás ir al SDK de cada una de las plataformas. En cualquier caso, merece la pena probarla!