{"id":217,"date":"2013-03-11T16:38:56","date_gmt":"2013-03-11T16:38:56","guid":{"rendered":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/?p=217"},"modified":"2013-08-28T07:21:55","modified_gmt":"2013-08-28T07:21:55","slug":"alternativas-en-la-programacion-para-dispositivos-moviles","status":"publish","type":"post","link":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/alternativas-en-la-programacion-para-dispositivos-moviles\/","title":{"rendered":"Alternatives en la programaci\u00f3 per a dispositius m\u00f2bils"},"content":{"rendered":"<p>Un dels \u00e0mbits multim\u00e8dia amb m\u00e9s creixement els \u00faltims anys ha estat el dels dispositius m\u00f2bils. L\u2019arribada dels tel\u00e8fons intel\u00b7ligents (<i>smartphones<\/i>) va fer enfilar la creaci\u00f3 d\u2019aplicacions m\u00f2bils que aprofiten la capacitat multim\u00e8dia d\u2019aquests dispositius. L\u2019aparici\u00f3 i l\u2019enlairament poc despr\u00e9s de les tauletes ha convertit el desenvolupament d\u2019aplicacions per a dispositius m\u00f2bils en un pilar de la ind\u00fastria multim\u00e8dia.<\/p>\n<p>L\u2019entorn multim\u00e8dia sempre ha tingut molta relaci\u00f3 amb la programaci\u00f3. Quan un element es mou a la pantalla, quan s\u2019interacciona amb l\u2019usuari, quan es reprodueix un so despr\u00e9s d\u2019un determinat esdeveniment, s\u2019executen unes quantes l\u00ednies de codi per a generar aquesta situaci\u00f3. Si b\u00e9 amb Flash es poden simular alguns moviments i algunes interaccions sense programaci\u00f3, en els dispositius m\u00f2bils costa d\u2019imaginar-se una aplicaci\u00f3 multim\u00e8dia que no tingui un important component de programaci\u00f3 al darrere.<\/p>\n<p>La programaci\u00f3, per\u00f2, en cada sistema operatiu \u00e9s un petit m\u00f3n. Hi ha llenguatges o entorns de treball (<a href=\"http:\/\/es.wikipedia.org\/wiki\/Framework\"><i>frameworks<\/i><\/a>) que ens permeten crear programes multidispositiu (es programa una vegada i s\u2019executa en qualsevol dispositiu), per\u00f2 per a aplicacions complexes que requereixen un gran rendiment, la programaci\u00f3 se sol fer en els llenguatges natius de cada sistema operatiu, de manera que s\u2019ha de reescriure l\u2019aplicaci\u00f3 per a cada sistema operatiu.<\/p>\n<p>Avui dia podem trobar dispositius m\u00f2bils sobretot amb els sistemes operatius seg\u00fcents (entre par\u00e8ntesis, els percentatges sobre el <a href=\"http:\/\/www.gartner.com\/newsroom\/id\/2237315\">total d\u2019unitats venudes en el tercer quart del 2012<\/a> \u2013inclou tel\u00e8fons, per\u00f2 no tauletes\u2013):<\/p>\n<ul>\n<li><a href=\"http:\/\/www.android.com\">Android<\/a> (72,4%)<\/li>\n<li><a href=\"http:\/\/www.apple.com\/es\/ios\">iOS<\/a> (13,9%)<\/li>\n<li><a href=\"http:\/\/es.blackberry.com\/software\/smartphones\/blackberry-7-os.html\">Blackberry OS<\/a> (5,3%) &#8211; BlackBerry Playbook US (RIM)<\/li>\n<li><a href=\"http:\/\/www.bada.com\/\">Bada<\/a>\u00a0(Samsung) (3%)<\/li>\n<li><a href=\"http:\/\/symbian.nokia.com\">Symbian<\/a>\u00a0(Nokia) (2,6%)<\/li>\n<li><a href=\"http:\/\/www.windowsphone.com\/es-es\">Windows Phone<\/a> (2,4%)<\/li>\n<li>D\u2019altres<\/li>\n<\/ul>\n<figure style=\"width: 792px\" class=\"wp-caption aligncenter\"><a href=\"http:\/\/en.wikipedia.org\/wiki\/Mobile_operating_system\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"http:\/\/upload.wikimedia.org\/wikipedia\/commons\/a\/ac\/World_Wide_Smartphone_Sales_Share.png\" width=\"792\" height=\"541\" \/><\/a><figcaption class=\"wp-caption-text\">Evoluci\u00f3 en les vendes de dispositius m\u00f2bils, segons els sistemes operatius. http:\/\/en.wikipedia.org\/wiki\/Mobile_operating_system<\/figcaption><\/figure>\n<p>Per a cadascun d\u2019aquests sistemes operatius hi ha un o diversos <a href=\"http:\/\/es.wikipedia.org\/wiki\/Kit_de_desarrollo_de_software\">SDK<\/a> (equip de desenvolupament de programari) amb suport per a un o m\u00e9s llenguatges de programaci\u00f3. Aix\u00ed, <a href=\"http:\/\/developer.android.com\/sdk\/index.html\">Android t\u00e9 un SDK per a Java<\/a>, <a href=\"http:\/\/cocoadevcentral.com\/d\/learn_objectivec\/\">iOS en t\u00e9 un per a Objective-C<\/a>, <a href=\"http:\/\/developer.bada.com\/devtools\/sdk#\">Bada un per a C++<\/a>, <a href=\"http:\/\/www.developer.nokia.com\/info\/sw.nokia.com\/id\/ec866fab-4b76-49f6-b5a5-af0631419e9c\/S60_All_in_One_SDKs.html\">Symbian un per a dos llenguatges diferents (C++ i Java)<\/a> i <a href=\"https:\/\/developer.blackberry.com\/develop\/platform_choice\/ndk.html\">BlackBerry un per a C++<\/a> (encara que d\u00f3na suport a <a href=\"https:\/\/developer.blackberry.com\/develop\/platform_choice\/index.html\">molts llenguatges i plataformes<\/a>).<\/p>\n<p>Per a una persona o empresa petita que vulgui programar una aplicaci\u00f3 per a la majoria de dispositius que hi ha en el mercat, aquesta diversitat de llenguatges i equips de desenvolupament complica for\u00e7a la creaci\u00f3 de multidispositius. La soluci\u00f3 passa de vegades per centrar-se en un sol sistema operatiu (sobretot en el cas de desenvolupadors que treballen per compte propi) o b\u00e9 usar alguna de les alternatives que ofereixen la possibilitat de crear aplicacions multidispositiu com, per exemple, PhoneGap, Appcelerator, Corona SDK i Adobe AIR.<\/p>\n<h2>PhoneGap<\/h2>\n<p><a href=\"http:\/\/phonegap.com\/\">Phonegap<\/a> segurament \u00e9s l\u2019alternativa m\u00e9s coneguda, \u00e9s de codi obert (<a href=\"http:\/\/www.apache.org\/licenses\/LICENSE-2.0\">llic\u00e8ncia Apache 2.0<\/a>) i permet crear aplicacions per a Android, iOS, RIM, Bada, Windows Phone, Symbian i d\u2019altres. Usa HTML5+CSS+JavaScript per al desenvolupament, de manera que el resultat \u00e9s com un conjunt de p\u00e0gines web empaquetades funcionant sobre un navegador. \u00c9s una bona opci\u00f3 per a desenvolupadors amb una bona base de JavaScript, encara que per a aconseguir que l\u2019aspecte sigui el d\u2019una aplicaci\u00f3 m\u00f2bil (en comptes del d\u2019una p\u00e0gina web) cal usar entorns de treball com\u00a0<a href=\"http:\/\/jquerymobile.com\/\">jQuery mobile<\/a> o <a href=\"http:\/\/www.jqtouch.com\/\">jQTouch<\/a> (connector per a jQuery) que faciliten crear aplicacions web que tinguin aspecte d\u2019aplicacions m\u00f2bils.<\/p>\n<p>Les aplicacions creades amb PhoneGap s\u2019executen sobre el motor del navegador dels dispositius m\u00f2bils. Depenent del sistema operatiu tenen acc\u00e9s a totes o a <a href=\"http:\/\/phonegap.com\/about\/feature\/\">gaireb\u00e9 totes les funcions del dispositiu<\/a> (c\u00e0mera, GPS, acceler\u00f2metre, etc.) i tamb\u00e9 al DOM, de manera que permeten l\u2019\u00fas d\u2019entorns de treball com jQuery que facilitin la programaci\u00f3.<\/p>\n<p>PhoneGap permet crear aplicacions multidispositiu sense haver de tenir gaires coneixements dels diferents sistemes operatius. El desenvolupament \u00e9s senzill per a persones amb coneixements d\u2019HTML i JavaScript i a m\u00e9s t\u00e9 una bona documentaci\u00f3 i molts exemples. No obstant aix\u00f2, les aplicacions no tenen un gran rendiment, i si no es cuida l\u2019aspecte semblaran p\u00e0gines web m\u00e9s que no pas aplicacions.<\/p>\n<p>PhoneGap \u00e9s gratu\u00eft (encara que pertany a Adobe), si b\u00e9 el suport \u00e9s de pagament.<\/p>\n<h2>Appcelerator<\/h2>\n<p><a href=\"http:\/\/www.appcelerator.com\/\">Appcelerator<\/a> permet crear aplicacions per a Android i iOS usant JavaScript com a llenguatge de programaci\u00f3. A difer\u00e8ncia de PhoneGap, Appcelerator compila el JavaScript i genera un codi que s\u2019executa directament en el dispositiu. Com que no s\u2019executa sobre el navegador, no t\u00e9 disponible el DOM, i els controls s\u00f3n els del dispositiu. Aix\u00f2 fa que l\u2019aplicaci\u00f3 tingui una aparen\u00e7a m\u00e9s d\u2019acord amb el dispositiu i que alhora guanyi una mica de rendiment. En canvi, les aplicacions depenen del sistema operatiu sobre el qual funcionaran, de manera que si es vol fer una aplicaci\u00f3 que funcioni en els dos sistemes caldr\u00e0 adaptar-la.<\/p>\n<p>Les aplicacions creades amb Appcelerator s\u2019executen sobre un entorn d\u2019execuci\u00f3 de JavaScript (<a href=\"https:\/\/github.com\/appcelerator\/v8_titanium\">V8<\/a> \u2013per defecte\u2013 o\u00a0<a href=\"http:\/\/www.mozilla.org\/rhino\/\">Rhino<\/a> per a Android i\u00a0<a href=\"https:\/\/github.com\/appcelerator\/tijscore\">JavaScriptCore<\/a> per a iOS) que est\u00e0 escrit en codi natiu i en qu\u00e8 el codi de l\u2019aplicaci\u00f3 s\u2019interpreta.<\/p>\n<p>Appcelerator \u00e9s gratu\u00eft, encara que el suport \u00e9s de pagament.<\/p>\n<h2>Adobe Air per a dispositius m\u00f2bils<\/h2>\n<p><a href=\"http:\/\/www.adobe.com\/devnet\/devices.html\">Adobe Air per a dispositius m\u00f2bils<\/a> \u00e9s la proposta d\u2019Adobe per a crear aplicacions per a dispositius m\u00f2bils usant ActionScript. L\u2019entorn de desenvolupament pot ser tant Flash Builder com Flash mateix o Flex SDK, de codi obert i gratu\u00eft, cosa que facilita la creaci\u00f3 d\u2019aplicacions. El principal avantatge d\u2019Air \u00e9s el llenguatge de programaci\u00f3, molt m\u00e9s potent que JavaScript.<\/p>\n<p>L\u2019execuci\u00f3 de les aplicacions Air es fa sobre un entorn propi que \u00e9s el que fa d\u2019intermediari entre l\u2019aplicaci\u00f3 i el dispositiu. Aix\u00f2 permet que les aplicacions es puguin executar gaireb\u00e9 sense canvis en diferents dispositius (Android, iOS i BlackBerry) encara que no usa controls natius i el rendiment \u00e9s una mica m\u00e9s redu\u00eft que en una aplicaci\u00f3 nativa.<\/p>\n<p>Segurament, per\u00f2, el gran avantatge de Flex\/Air en relaci\u00f3 amb PhoneGap o Appcelerator \u00e9s l\u2019entorn de programaci\u00f3, molt m\u00e9s complet i intu\u00eftiu. El preu, en canvi (la versi\u00f3 est\u00e0ndard costa 250 d\u00f2lars), pot ser una limitaci\u00f3.<\/p>\n<h2>En resum<\/h2>\n<p>En general, la creaci\u00f3 d\u2019aplicacions per a dispositius m\u00f2bils sempre \u00e9s m\u00e9s eficient si es crea directament usant les eines que proporciona el desenvolupador del sistema operatiu. Aix\u00f2 vol dir que s\u2019ha de reprogramar l\u2019aplicaci\u00f3 per als diferents sistemes, tenint-ne en compte les caracter\u00edstiques i usant l\u2019SDK adequat. Quan aix\u00f2 no pugui ser aix\u00ed, l\u2019\u00fas d\u2019eines que permeten programar una vegada per a tots els dispositius simplifica la programaci\u00f3 encara que pot reduir l\u2019efici\u00e8ncia del resultat final. Triar una aplicaci\u00f3 o una altra dep\u00e8n del desenvolupador, de les habilitats que t\u00e9 com a programador o del temps i diners que pugui destinar al projecte.<\/p>","protected":false},"excerpt":{"rendered":"<p>Un dels \u00e0mbits multim\u00e8dia amb m\u00e9s creixement els \u00faltims anys ha estat el dels dispositius m\u00f2bils. L\u2019arribada dels tel\u00e8fons intel\u00b7ligents (smartphones) va fer enfilar la creaci\u00f3 d\u2019aplicacions m\u00f2bils que aprofiten la capacitat multim\u00e8dia d\u2019aquests dispositius. L\u2019aparici\u00f3 i l\u2019enlairament poc despr\u00e9s de les tauletes ha convertit el desenvolupament d\u2019aplicacions per a dispositius m\u00f2bils en un pilar &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/multimedia.uoc.edu\/blogs\/fem\/alternativas-en-la-programacion-para-dispositivos-moviles\/\" class=\"more-link\">Continua llegint <span class=\"screen-reader-text\">\u00abAlternatives en la programaci\u00f3 per a dispositius m\u00f2bils\u00bb<\/span><\/a><\/p>\n","protected":false},"author":42,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14,11],"tags":[77,76,74,75,45],"class_list":["post-217","post","type-post","status-publish","format-standard","hentry","category-products","category-technologies","tag-adobe-air","tag-appcelerator","tag-dispositivos-moviles","tag-phonegap","tag-programacion","entry"],"_links":{"self":[{"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/posts\/217","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/users\/42"}],"replies":[{"embeddable":true,"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/comments?post=217"}],"version-history":[{"count":5,"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/posts\/217\/revisions"}],"predecessor-version":[{"id":520,"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/posts\/217\/revisions\/520"}],"wp:attachment":[{"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/media?parent=217"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/categories?post=217"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/multimedia.uoc.edu\/blogs\/fem\/wp-json\/wp\/v2\/tags?post=217"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}