Aclarando la confusión – Appcelerator Titanium y PhoneGap, Sencha Touch y jQuery Mobile

UPDATED 22-10-2012: Esta información está obsoleta o es inexacta. Este artículo está en fase de reedición y será actualizado próximamente con información más precisa (agradecimientos a Xurde de appio.es).

La primera vez que accedí a la página web de PhoneGap, vi que era la solución a todos mis problemas: Un Framework que me permite desarrollar para todas las plataformas móviles, iPhone, Android, Symbian, incluso Windows Phone7 (en un futuro no muy lejano). Esto es lo que yo necesito!!, Es una bomba. Poder crear una aplicación y que funcione en todas las plataformas…

Qué tipo de aplicaciones podemos desarrollar en un móvil? Podemos desarrollar aplicaciones “no nativas” basadas en el navegador del móvil, y aplicaciones nativas (Objetive C/JAVA) que acceden directamente al hardware del móvil.

Sencha Touch y jQuery Mobile, son frameworks javascripts, que nos permiten desarrollar aplicaciones “no nativas” para el navegador de nuestro móvil con el mismo “look and feel” de las aplicaciones nativas.

PhoneGap y Titanium, lo que nos permiten es “empaquetar” (zip) nuestra aplicación web (con las correspondientes librerías js/css/HTML), permitiéndonos su distribución en los diferentes sistemas de venta (app store, Marketplace, etc …). Las librerías js/css3 incluidas en el paquete, pueden ser jQuery Mobile, Sencha Touch, u otro framework para móvil.

Pero Appcelerator Titanium va más allá. Con Titanium, puedes programar en js/Ruby/Python/PHP, y mediante su API/SDK, generar una aplicación nativa (Objetive C para iPhone/iPad, JAVA para Android). Con la consiguiente mejora de rendimiento al acceder directamente al hardware.

Información original obtenida de: http://beautyindesign.com/blog/titanium-phonegap-sencha-touch-jquery-mobile-clearing-up-confusion/

There’s a lot of buzz with the new mobile web frameworks and mobile platforms. There’s also a lot of confusion and vague terms being thrown around that are causing people to misunderstand what each of these tools do. I hope to clear up some of the confusion with a few brief points.

A mobile web app is not the same as a mobile native app

A lot of people think that Titanium and PhoneGap are in competition with Sencha Touch and jQuery Mobile. They aren’t the same thing. I’m sure I’m going to get some comments on this but think of a mobile web app as a website. Think of it as Basecamphq.com or Twitter.com. A mobile web app runs in your browser. Almost all of the app’s resources are remote, stored on some server somewhere. Sure there might be some local storage happening but at the end of the day it’s a website application.

A native app runs on your device. All of it’s resources are installed locally on your machine. A native app uses platform and language specific API’s native to that device. You can’t run NSString in a mobile web app. A native app has access to local resources while a mobile web app cannot.

“So what’s the difference between what’s out there?” Here’s the difference:

Sencha Touch and jQuery Mobile

These are mobile web frameworks. You can use these technologies to create web-based, mobile apps. They don’t have access to any native API’s. Both of these projects run in javascript. Both projects have totally separate ways of tackling similar problems but they are similar in that they are for the mobile web.

You can use Sencha Touch and jQuery Mobile inside both PhoneGap and Titanium. If you decide your html/js is cool as a native app too, you can use either PhoneGap or Titanium to wrap a browser around your app and put it in the app store or marketplace. This is where, I think, the confusion comes. Putting your Sencha Touch or jQuery Mobile apps in a native wrapper doesn’t make it a native app. It makes it appear as if it is a native app. You might get some extra functionality from PhoneGap or Titanium API’s, but it’s still not necessarily a ‘native’ app. It’s a web app running locally on the device. It’s a great way to use web technologies inside a native-like area.

PhoneGap and Titanium

PhoneGap and Titanium are not similar to Sencha Touch and jQuery Mobile. In fact, I would go as far and say that PhoneGap and Titanium aren’t all that similar. Both allow you to distribute native or native-like apps. Both don’t need to “build support” for Sencha Touch or jQuery Mobile. Why? Because the devices they support come with browsers. Remember, Sencha Touch and jQuery Mobile run in the browser. Since both PhoneGap and Titanium allow you to run things in a given device’s browser, they already have support for Sencha Touch and jQuery Mobile.

The biggest difference with PhoneGap and Titanium is what they offer. PhoneGap serves as a wrapper for the browser. It appears as if it’s a native app but it’s really an html/javascript app. Titanium can do the exact same thing via “webViews” but Titanium takes it a step further by offering a slew of native APIs for Cocoa Touch outside the browser. The two apps I have in the app store are 95% non-web based.

In Titanium you code in javascript, using Titanium’s unique API. The end result, at the app’s runtime, is native performance, native UI’s, etc. In simplest terms: You code in javascript and it ends up being Objective-C (in the case of iOS apps).

I’m still skeptical of the “end of native” chant going around. After building apps for the browser and for the device I think that there is a lot of room for both to still exist together. Understanding the differences of the technologies out there will help clear that up.

Comments:

1. If I want the app to be fully web based and no native, I will have to resort to sencha otherwise, if only UI is concerned, I can go for JQueryMobile

http://www.the4thdimension.net/2011/07/sencha-touch-vs-jquerymobile.html

2. My organization has recently published a detailed paper comparing Mobile app frameworks and determining ultimately which are worth the investment and will be around 12 months from now – http://tinyurl.com/4452szs

 

Más info:

http://www.phonegap.com

http://www.appcelerator.com

http://www.sencha.com

http://jquerymobile.com/

5 comentarios en “Aclarando la confusión – Appcelerator Titanium y PhoneGap, Sencha Touch y jQuery Mobile

  1. Hola,

    esta información está definitivamente mal en lo que se refiere a Titanium Appcelerator. Appcelerator no es una web empaquetada en una aplicación, no lo es. Utiliza javascript, pero ahí se acaba todo parecido con una web: no tiene html, ni DOM ni es ejecutado en un navegador. En este sentido es muy diferente de PhoneGap.

    Este tema es complicado para los que se están iniciando y creo que tu artículo añade confusión y puede llevar a los lectores a conclusiones erróneas. Deberías revisarlo o eliminarlo.

    Saludos!

    • Hola Xurde,

      ante todo gracias por tu comentario. Este blog simplemente contiene noticias e informaciones externas traducidas en la mayoría de los casos, no pretende modificar ni hacerse dueño de dichas informaciones (básicamente es un bloc de notas online donde guardamos informaciones recogidas a lo largo y ancho de la red). Además, puedes comprobarlo fácilmente revisando el artículo original en inglés (el enlace está en el post). De todas formas, y en vista de que conoces la materia te agradecería que nos comentases realmente cómo ves dicho tema, para poder contrastar y rectificar de manera correcta dicha información (si lo deseas claro está).

      Gracias

      • Hola!

        Primero me gustaría decir que releyendo lo que escribí me parece que tiene un tono un poco grosero, soberbio o de sabelotodo. No era esa mi intención, solamente quería indicar que el artículo tenía un par de conceptos (muy importantes) equivocados. Quizás esto habría que decírselo al autor original en inglés🙂

        Yo tengo una compañía de apps, llamada Appio (www.appio.es). Ahora mismo estamos reformando la web, y nada más que la tengamos quería escribir un artículo precisamente sobre este tema; sin profundizar mucho, con palabras sencillas pero fijando los conceptos. Cuando lo tenga os lo pasaré.

        De momento, sin extenderme mucho, es importante aclarar que Titanium Appcelerator no es un desarrollo web. Se desarrolla con javascript enteramente, pero no lleva html, ni css, y no se ejecuta desde un navegador. Cómo funciona entonces?

        La gente de Appcelerator ha creado un SDK / librerías que mapea código javascript con el código nativo de cada plataforma (java para Android, Objective-C para iOS). De esta manera se utiliza javascript como ‘motor de la aplicación’, para dirigir todo lo que pasa en ella, pero a la hora de crear algún elemento (un botón, una ventana, una toolbar, unos tabs, etc.) el javascript ‘llama’ al código nativo del teléfono para crear estos elementos. Y como resultado, el elemento creado es un verdadero elemento nativo: botón, ventana, tollbar, tabs. Y la aplicación creada es una aplicación ‘tal cual’ no un simple navegador.

        _Comparandolo con PhoneGap_.

        En PhoneGap tendríamos una página web con botones, ventanas, etc. html. Tienen (en muchos casos) aspecto de componentes nativos, pero no deja de ser una web que se ejecuta dentro de un navegador, y eso se nota. Se nota simplemente al pulsar el botón, y se nota mucho en el rendimiento de la app, todo se vuelve más pesado y más lento.

        En Appcelerator el resultado es una aplicación puramente nativa, con componentes nativos. A la hora de realizar alguna acción, en lugar de dirigir todo con Objective-C o Java, se hace con Javascript que es un poco más lento pero apenas se nota para la mayoría de aplicaciones. Sin embargo, cuando pulsas un botón, estás pulsando un botón ‘de verdad’, generado por el código del teléfono. Las ventanas que aparecen, las toolbars, todo, son componentes nativos.

        Por tanto, el resultado con Appcelerator es muy similar a una aplicación nativa, cosa que hoy por hoy no se puede decir de PhoneGap.

        Nota: Appcelerator no traduce el código javascript a código nativo. En ningún momento se puede acceder a ese código nativo, porque no se llega a generar. En tiempo de ejecución se va interpretando el javascript y se ‘linkea’ a través de librerías al código nativo.

        No me extiendo más… Si estáis interesados os pasaré el link del artículo que escribiré próximamente, un saludo!

      • Hola,

        disculpa el retraso, he estado bastante liado esta semana con temas de trabajo y no he tenido casi tiempo de revisar el blog.
        Ante todo agradecerte tus comentarios, no te preocupes por el tono, no creo que hubiese ningún problema con tu respuesta😉, todo lo contrario, me alegra que alguien que está metido de forma profesional en el tema pueda aclararlo realmente.

        Lo que estoy pensando es rehacer el artículo original eliminando los datos incorrectos añadiéndole los comentarios que has hecho (siempre que aceptes claro está, no es mi intención para nada apropiarme de contenidos ajenos y menos sin su consentimiento) citando por supuesto la fuente (mi blog no es gran cosa, pero supongo que nunca viene mal que te enlacen desde fuera), aunque si bien comentas que vas a crear tu propio artículo, quizá lo mejor sea simplemente traduzca completamente el original y añada tu comentario como posterior actualización/aclaración. Simplemente coméntame si estás de acuerdo ok?

        Para mi todo esto me sirve para aprender cosas nuevas (soy desarrollador web desde hace 15 años, pero en cuanto a aplicaciones para móviles estoy un poco verde, por eso estoy investigando las distintas posibilidades de desarrollo que voy encontrando actualmente).

        Gracias y saludos

      • Hola!

        Por supuesto que estoy de acuerdo. Aunque creo que estaría bien esperar a que haga el artículo completo en nuestro blog, para que la gente pueda extender la información. Esto creo que tardará unas 3 semanas. Ya te avisaré.

        Si eres diseñador web y estás interesado en móviles, la verdad que tanto PhoneGap (o Sencha Touch) o Appcelerator son frameworks maravillosos porque te permiten utilizar los lenguajes que ya sabes. De hecho, yo vengo del desarrollo web, con PHP, javascript, etc. y no me costó mucho trabajo meterme con las apps de móviles.

        Si necesitas ayuda o orientación con algo, no dudes en pedirlo, 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