Ubuntu for phones: una nueva plataforma móvil
Ubuntu comienza el año anunciando un nuevo producto: Ubuntu for phones. Se trata de una nueva plataforma de desarrollo móvil que pretende lanzar Canonical. La plataforma está basada en Android en lo referente al sistema operativo y a los drivers para los terminales móviles. Por ello es de esperar que cualquier terminal móvil basado en Android puede ejecutar sin problemas Ubuntu for phones.
Sin embargo, el desarrollo de aplicaciones nativas no se va a hacer en Java, como en Android. En este caso los chicos de Ubuntu han decidido ir por un camino diferente: sus aplicaciones se desarrollarán empleando una mezcla de QML (Qt Meta Language) y de C. QML es un lenguaje de programación que permite construir interfaces de usuario empleando la librería Qt de modo declarativo y que esta basado en JavaScript.
Ubuntu espera que los primeros terminales móviles con este sistema operativo aparezcan en el mercado a principios de 2014. Por lo de ahora ha presentado versiones beta del sistema operativo donde la interfaz de usuario todavía es poco responsiva.
Mi impresión inicial es que se trata de un sistema operativo para "power users" no tan intuitivo como iOS o Android. Hay que aprender algunos gestos (como arrastrar un panel que se encuentra "a la izquierda" de la pantalla) que no son intuitivos. Y su interfaz de usuario está pensada para trabajar de un modo "multitarea", empleando varias aplicaciones a la vez. Aquí tenéis un video donde se muestra el nuevo sistema operativo de Ubuntu:
¿Qué os parece este movimiento? ¿Creéis que Ubuntu podrá hacerse un hueco en el nicho de los terminales móviles?
Reader Comments (13)
Lo de usar c o c++ me parece un error como un templo. Que usen Qt en lugar de GTK me parece un acierto como un templo. Cada vez Ubuntu usa más Qt, dando esperanzas para un futuro mejor.
Y con suerte, quien sabe, aplicaciones compiladas para linux + ARM funcionan, lo cual haria que hubiera muchas apps y, en concreto, JVM estandar + JavaFX... Codigo "compile once" de verdad! :)
Sin conocer realmente el tema, creo que su aproximación seguramente será emplear QML + JavaScript para la mayor parte de las cosas, pero habrá algunos recovecos en los que las limitaciones de QML haga necesario escribir directamente código C.
Pero sí, me parece un error, entre otros motivos porque esto hará más complicado hacer un sandbox de las aplicaciones. Es más, creo que es un error no haber apostado también por Java y por compatibilidad con Android a nivel de aplicaciones. Las aplicaciones son algo crucial para las plataformas de terminales móviles y podrían ser el motivo por el cual fracasen: porque no consiguen atraer a suficientes desarrolladores que haga un número elevado de aplicaciones que consigan que la plataforma sea atractiva para los usuarios finales.
Pues yo voy a ser muy radical ya que estamos en JavaHispano:
Linux y el mundo Mozilla desde la perspectiva del escritorio llevan perdidos no años DECADAS.
El mundo Linux y en general la gente de la fundación Mozilla tradicionalmente han estado muy "contaminados" por las ***** (pon aquí lo que quieras) del señor Stallman, de siempre han tenido siempre una enorme fobia a Java o en general hacia la JVM, en su momento era razonable porque Java era una tecnología muy propietaria, pero desde hace ya bastantes años es de código abierto y con una licencia muy permisiva.
Esto ha hecho que el desarrollo en Linux y en el mundo Mozilla haya sido siempre EXTREMO: o C/C++ o JavaScript.
Si a algún lumbreras importante de la fundación Mozilla se le hubiera ocurrido que podría ser una buena opción poder usar Java en lugar de JavaScript, posiblemente tendríamos desde hace años una plataforma de desarrollo de:
* Aplicaciones locales de escritorio
* Aplicaciones web remotas basadas en FireFox aprovechando el liderazgo que tuvo en su momento (y la mediocridad por la que ha pasado Java en el escritorio), Google/Chrome y Opera les hubieran imitado y quien sabe más...
* Aplicaciones móviles con un 90% de código cross-platform y librerías Java con binding nativos que intentarían compatibilizar diferentes plataformas.
Creo que tengo un poco de experiencia en este tema y me atrevo a decirlo de forma contundente: Java combinado con UIs Web LO PETARÍA = poderosa herramienta de desarrollo web que podría tener gran éxito (o por lo menos no convertirlo en una película de terror).
Lo que tenemos ahora es:
1) Un mercado de aplicaciones de escritorio Linux básicamente inexistente, un Linux casi totalmente IRRELEVANTE en el escritorio que unido a que Microsoft no está muy a la altura nos deja cada vez más en manos de Apple una compañía con un obsesivo afán de control de sus usuarios.
2) Una presencia prácticamente NULA de aplicaciones de escritorio basadas en el motor de FireFox (hasta tal punto es irrelevante que no me acuerdo ni del nombre)
3) El cada vez más popular HORROR de hacer aplicaciones web y móviles intensivas en JavaScript.
Respecto al punto 3 ¿pensais que exagero?
Echad un vistazo al código fuente de Thunderbird aplicación de escritorio hecha con el motor de FireFox:
Por ejemplo 12Kb de código JS semi-estructurado, que aunque es código de LO MEJORCITO que se puede hacer, ignora 30-40 años de programación orientada a objetos (decenas de métodos "estáticos"):
http://hg.mozilla.org/comm-central/file/a976311210e4/mail/base/content/mailWindowOverlay.js
El simétrico código UI (17Kb) basado en markup XUL que es de lo más avanzado y componentizado que existe en Web y que por desgracia ni siquiera se puede usar fuera del mundo Mozilla (no quiero ni imaginar como sería el código HTML "expandido"):
http://hg.mozilla.org/comm-central/file/a976311210e4/mail/base/content/mailWindowOverlay.xul
En todo esto parece que los únicos que tienen la cabeza en su sitio son la gente de Google, obviamente GWT y Android sólo podían venir de Google.
A un usuario de moviles, toda esta **** le va a sonar a chino. Se escoge por el aparato o las aplicaciones que permite... ¿pero que coj*** es una "plataforma movil"?
Así que, descartados los usuarios, supongo que la idea es atraer a los desarrolladores o a los fabricantes de terminales para que sean estos los que atraigan a los usuarios... y lo van a conseguir... ¿haciendo la multiplataforma más complicada? ¿Usando un pastiche de lenguajes con C, JavaScript, un lenguaje declarativo... combinacion que no se usa en otro sitio medianamente popular? Como no hagan estilo Google como el Nexus y se saquen unos terminales competitivos ajustadísimos de precio... y aun así el tema aplicaciones lo veo mal...
Ciertamente no soy ningún lumbrera de los móviles, pero como usuario y/o potencial desarrollador, no entiendo ná de ná.
Da igual que JavaScript sea un mal lenguaje de programación, jmarranz, tendremos que soportar este engendro por mucho tiempo.
Hay propuestas como Dart, de Google, o TypeScript, de Microsoft, junto con alguna más veterana como CoffeScript para librarnos de esta pesadilla.
Dudo mucho que ninguna de éstas triunfe, dada la enorme cantidad librerías JavaScript existentes con las que muchos programadores ya están acostumbrados a trabajar.
Por otra parte, el hecho de que haya varias propuestas, en vez de que los miembros más importantes del sector se hayan puesto de acuerdo en una única, genera una fragmentación que lo hace que una supuesta de transición de JavaScript a algo mejor sea aún más difícil.
Tienes razón Diego pero estás más bien hablando del "web convencional", aunque yo también hago referencia al web convencional, que poco tiene remedio ya, mi cabreo va más enfocado a "lo nuevo" que nos ofrecen los chicos de Ubuntu que es otra plataforma web más y encima propietaria.
@golthiryus,
"Que usen Qt en lugar de GTK me parece un acierto como un templo. Cada vez Ubuntu usa más Qt, dando esperanzas para un futuro mejor."
Cada vez son más los que están huyendo de GTK, ya sea hacia QT o a un Toolkit en C++ propio como es el caso de Opera y aparentemente será el de Firefox:.
Y la razón de esto se llama X11.
Desgraciadamente Java (SWT/Swing o JavaFX) no forma parte de esta movida. Por lo que pasara mucho, mucho, mucho tiempo antes de que podamos ver una aplicación JavaSE corriendo de manera apropiada en un dispositivo portátil (en especial un ARM).
En cuanto al Ubuntu for phones, (y según puedo entender) es en esencia un Android potenciado y sin dalvik.
Existen buenas razones para que Canonical haya optado por esta aproximación (demasiadas, por cierto) pero ninguna de ellas importa en realidad.
Lo que importa son los acuerdos que logre serrar Canonical con los fabricantes de dispositivos para que su OS venga instalado de fabrica, albo que en el mundo PC históricamente no le ha resultado fácil. Y ni hablemos de los televisores.
Un saludo,
Es todo un acierto haber lanzado Ubuntu For Phones y además poder desarrollar en C - QML y no en Java. La plataforma de desarrollo en Java no es la idónea para el desarrollo de aplicaciones desktop o Mobile, y es por su bajo rendimiento y excesivo consumo de memoria en comparación al C. Tanto el IPhone, así como el futuro Windows Phones 8 su desarrollo será en nativo, para así poder aprovechar el hardware. Para los programadores en Java es una mala noticia, ya que cada vez más incierto el futuro del Java en aplicaciones de escritorio o móviles (excepto sistemas Android).
No estoy seguro de que Ubuntu for smartphones esté basado en android, tenía entendido que no era así, y que incluso no estaba claro si se podrían ejecutar las aplicaciones para android (lo cual sería un grave error)
También creí entender que las aplicaciones nativas podrían programarse en html5 + javascript (seguramente con algunas extensiones de canonical para controlar el dispositivo), y que c++ o similares estaría disponible para aplicaciones más intensivas (juegos, principalmente).
Respecto a Javascript, creo que va camino a transformarse en una nueva JVM. Ya tenemos el ejemplo de Dart, Typescript y coffescript, pero también lenguajes que nacieron para la JVM y que soportan "compilar" a javascript, como fantom, ceylon y kotlin (creo que había un soporte experimental para scala dando vueltas por ahí).
Por otra parte, son varias las iniciativas "abiertas" que impulsan la programación de aplicaciones móviles con html5 + js. Para nombrar algunas, tenemos tize, jollaOS, FirefoxOS y el propio ubuntu. Creo que es vital que lleguemos a un estandar para desarrollo móvil, como ocurrió con html y js para páginas web.
Finalmente, sería un error de canonical no dar soporte de primera línea para las aplicaciones android y para java. Es esencial que la mayo cantidad de aplicaciones puedan correr en ubuntu for smartphone sin necesidad de recompilar o volver a empaquetar...
Jose Luis: "La plataforma de desarrollo en Java no es la idónea para el desarrollo de aplicaciones desktop o Mobile, y es por su bajo rendimiento y excesivo consumo de memoria en comparación al C"
Jose Luis, esa frase hubiera quedado muy bien en una de las reuniones de directivos de Google hace ya unos años cuando estaban buscando la plataforma adecuada para el desarrollo de aplicaciones para el futuro Android, pero ahora en 2013 con cientos de millones de dispositivos Android, algunos de 400Mb de RAM y 600Mhz que van aceptablemente bien, existiendo cientos de miles de aplicaciones Android, cuando el JIT no es precisamente ya una tecnología novedosa, cuando existe el garbage collector G1 que realmente sólo será útil para el 5% de instalaciones Java,
cuando estamos discutiendo si las aplicaciones móviles basadas en WebKit son el futuro... tu afirmación como me que me deja un poco perplejo :)
Ahora bien yo no pondría una JVM en los robotitos que mandamos a Marte y creo que tampoco en el control del tren de aterrizaje de un avión :)
@jmarranz
Creo que los enlaces siguientes te van a interesar ;)
http://www.militaryaerospace.com/articles/print/volume-19/issue-3/departments/opinion/java-computer-language-eyes-safety-critical-real-time-applications.html
http://www.slideshare.net/keugbang/t-50-avionics-embedded-software-development-using-java
http://www.cotsjournalonline.com/articles/view/100686
http://www.cotsjournalonline.com/articles/view/100260
@José Luis
La muletilla "Java es lento", sinceramente, es una frase hecha bastante "prehistórica", y con poco fundamento respecto a las VM actuales. No todas las VM son el JRE que se ejecuta en un navegador de Internet.
@jmarranz
"Ahora bien yo no pondría una JVM en los robotitos que mandamos a Marte y creo que tampoco en el control del tren de aterrizaje de un avión :)"
Sin llegar a los extremos de los ejemplos que aporto choces....
Mas que un no lo haría
En mi caso, es un lo estoy haciendo, con sistemas de integración industrial que operan directamente contra piso de planta, de forma bidireccional, en tiempo real, con identificación, tratamiento y recuperación de fallas.
Y tampoco es que sea el único loco en ese barco.
En cuanto al tema del artículo, vuelvo a insistir.
Existen buenas razones para que Canonical haya optado por esta aproximación (demasiadas, por cierto) pero ninguna de ellas importa en realidad.
Lo que importa son los acuerdos que logre serrar Canonical con los fabricantes de dispositivos para que su OS venga instalado de fabrica, albo que en el mundo PC históricamente no le ha resultado fácil.
Por lo que habrá que estar atentos a ver qué teléfonos con Ubuntu for phones nos ofrecen las telco, antes de ponerse a criticar o sacar conclusiones.
Un saludo,
canonical decidió utilizar qml-c++ por la simple razon de que es muy sencillo para el desarrollo de aplicaciones. de hecho dentro de poco esta por salir qt5.1 el cual trae soporte para android, ios, etc. en cuanto al sistema base es Linux ubuntu. toda la interfaz gráfica es en qml . la ventaja en qt 5.1 es de escribir el codigo una vez y compilarlo para la plataforma que quieras de las que estan disponibles.
saludos.
si me lo permite el administrador dejo el link de un nuevo foro de Qt www.codigoqt.com