sobota, 21 listopada 2009

Widgety - nowe technologie programistyczne

Tempo rozwoju technologii programistycznych do tworzenia widgetów jest zawrotne. Mam wrażenie, że każdy producent technologii na widgety chce promocji swojej technologii.

Wymusza to nową definicję widgeta jako aplikacji na inteligentną komórkę która jest napisana w języku skryptowym i może korzystać z interfejsu użytkownika danego urządzenia mobilnego. Cechą widgetów jest to, że korzystają z możliwości danego urządzenia (robienie zdjęć aparatem fotograficznym, korzystanie z informacji o położeniu urządzenia). Jest też warunek opcjonalny uznania za widget: umożliwia korzystanie z informacji w internecie oraz wykorzystanie HTML, JavaScript, oraz CSS. Technologia FlashLite też mieści się pod warunkiem, że możliwości urządzenia pozwalają na uruchomienie plików SWF wewnątrz widgetów, albo pobierania i uruchamiania plików SWF przez widgety.

Obserwując pojawianie się nowych technologii na widgety spowodowane jest zrozumieniem pewnej istotnej rzeczy - trzeba ułatwić ludziom tworzenie programów na inteligentne komórki. Nokia w 2007 roku wypuściła technologię Web Runtime (WRT), ale dopiero połączenie z Platform Services 1.0 w S60 5th sprawiło, że widgety i aplikacje Flash na Symbiana S60 5th zaczęły mieć dostęp do możliwości inteligentnej komórki.

29 czerwca 2009 opublikowano Nokia Platform Services 2.0 nowością jest dostęp API do robienia zdjęć dla widgetów. Natomiast 4 listopada 2009 wypuszczono WebRuntime Bridge API zestaw API które pozwalał na tworzenie widgetów dla Facebooka czy MySpace w widgetach WRT.

Firma Nitobi przez cały rok rozwijała framework JavaScript Phonegap dla widgetów bazujących na iPhone, Androida. Ostatnio we wrześniu 2009 rozpoczęły się prace nad przeniesieniem możliwości tej biblioteki do widgetów WRT Webruntime. Efektem tej współpracy było wypuszczenie przez 18 listopada 2009 Sony Ericsson WebSDK dla tworzenia widgetów na Symbiana i jak na Androida.

17 listopada wypuszczono Qt 4.6.0 Release Candidate 1 zawierające też biblioteki dla Symbiana. Sprawiło to, że Nitobi rozpoczęło prace nad nowym silnikiem dla widgetów dla Symbiana wykorzystującego Mobile Extensions for Qt for Symbian i dla Maemo.

Opera od dawna intensywnie rozwija technologie widgetów. Najpierw to były widgety w przeglądarce internetowej. Obecnie wraz z współpracą z operatorami telekomunikacyjnymi (Vodafone i T-mobile) rozwija silnik Opera Mobile dla Symbiana i dla Windows Mobile. 3 listopada Nokia ogłosiła wypuszczenie Opera Mobile 10 beta na komórki z Symbianem a 18 listopada wypuściła wersję na Windows Mobile. Więcej informacji można poczytać w tym artykule. Opera dla twórców widgetów przygotowała odpowiednie wersje Opera Widgets SDK Natomiast Vodafone 19 listopada w współpracy z Operą opublikował na Betavine swoje Widget SDK version 2.

Rywalizacja też dotyczy w sferze technologii widgetów na komputerach użytkowników. Opera wypuszcza 15 października 2009 specjalną wersję Opery 10.10 beta zamieniająca widgety Opery na aplikacje komputerowe. Adobe 17 listopada 2009 ogłosiło upublicznienie beta Adobe AIR 2.0 bazującego na najnowszym silniku Webkita (bazującego na Safari 4.0.3) A Microsoft 18 listopada 2009 ogłasza udostępnienie SDK dla Silverlighta 4.

Adobe chce w 2010 roku wypuścić wersję Adobe AIR dla nowych wersji urządzeń mobilnych. Kwestia w tym że do rywalizacji z Adobe AIR w tworzeniu aplikacji widgetów dla urządzeń mobilnych wkroczył Appcelarator Titanium (dla aplikacji Androida i iPhone)

Dużą niewiadomą jest rozwój widgetów na Windows Mobile 6.5. Na tej platformie operuje się na zmodyfikowanym silniku IE6. Po bliższym zapoznaniu się z dokumentacją i prostym przykładem mam wrażenie że możliwości są takie jak opisano w standardzie dla widgetów. Okazuje się że istnieje możliwość rozszerzania funkcjonalności widgetów poprzez napisanie własnych kontrolek ActiveX

27 września 2009 opublikowano JIL SDK wersion 1.1 beta 2 - jest to technologia tworzenia widgetów na komórki z LiMo i jest to preferowane przez Samsunga i Vodafone. Jeszcze nie ma urządzeń które by wspierały tą technologię.

Faktem jest to, że Symbian, PalmOS, Android czy iPhone a także Windows Mobile 6.5 pozwalają na tworzenie aplikacji składającej się głównie z skryptów JavaScript to w praktyce z racji różnych wersji wydań silnika Webkit oraz integracji z interfejsem użytkownika i możliwościami urządzenia a także mechanizmów wdrożenia, powoduje pewną problematyczność w tworzeniu aplikacji na urządzenia mobilne. Fragmentaryzacja i dość szybkie zmiany w rozwoju sprawiają że trzeba solidnie napracować się nad kodem tak żeby działał zgodnie wg możliwości różnych UI i jak możliwości urządzenia.

Aby jakaś mobilna aplikacja reklamowa trafiła do jak największego grona użytkowników różnych urządzeń mobilnych trzeba solidnie popracować nad wersjami JavaMobile, FlashLite, i oczywiście jako widgety dla najnowszych modeli urządzeń mobilnych (z równoczesnym tworzeniem wersji mobilnej strony WWW). A użytkownikowi inteligentnej komórki pozostawić wybór.

Na podstawie tych zbiegu okoliczności w premierach różnych technologii pozostaje pytanie o to jak będzie rozwijać się dalej tworzenie widgetów. Pierwszą rzeczą jaką można zauważyć to że w sferze technologii mobilnych zaczyna dominować silnik Webkit co paradoksalnie przy obecnym tempie implementacji ich powoduje że w najbliższych latach komórki będą bardziej "nowocześniejsze" niż ich odpowiedniki na komputerach. Następną rzeczą będzie to co nazywam udostępnieniem API urządzenia aplikacjom internetowym. Obecnie można by uznać że dostęp do danych o kontaktach, kalendarza, o pozycji komórki, pobraniu informacji o geolokalizacji, wykorzystanie sensorów - położenia, zbliżenia, obrotu, położenia kierunku świata, a także dostęp do multimediów: robienie zdjęć czy filmików będzie wymagało ustalenia jakiegoś standardowego API które by pozwalało na pisanie ujednoliconego kodu .JavaScript. Firma Nitobi już to zrobiła. Natomiast wielką niewiadomą są frameworki UI - właściwie każda technologia widgetów może mieć swoje preferencje Dla Symbiana są to WRTKit i jak Guarana UI, dla iPhone bazuje na jQTouch iUI powstają też różne próby tworzenia frameworków mobilnych z jQuery UI, mochaUI, YUI.

Podsumowując tworzenie widgetów na urządzenia mobilne szybko przekształci się w odrębną specjalizację która będzie wymagać od twórców dość specyficznej wiedzy z JavaScriptu i możliwości programistycznych jakie oferują poszczególne technologie w konkretnych systemach operacyjnych. Wraz z tym będzie coraz większa presja na szybszy rozwój silnika WebKit tak żeby przynajmniej pod Symbianem potrafił mieć takie same możliwości jak aplikacje pisane w JavaScript dla Androida czy dla iPhone.

Jednym z wartościowych źródeł które należy śledzić w tym temacie to Mobile Web Initiative. oraz ich blog W tym temacie istotne jest to, że już napisano szkic roboczy 15 października 2009, który opisuje jakie API ma być dostępne w Java Scripcie dla mobilnych widgetów

No to faktycznie, żyjemy w ciekawych czasach dla programistów i developerów.

niedziela, 8 listopada 2009

Widgety na Symbiana i ich programowanie

Ponieważ możliwości inteligentnych komórek są często poza możliwościami przeciętnych programistów. Sukces Symbiana może opierać się na tym że daje duże możliwości tym co już umieją. Większość programistów w jakiś sposób zetknęło się z programowaniem w Java Script czy stylami kaskadowymi. Więc umożliwienie wykorzystania do programowania w tych technologiach na komórce daje o wiele większy potencjał popularności niż w przypadku tworzenia w natywnych technologiach typu Symbian C++ czy Java Mobile. Sukces iPhone czy Androida (a po części też WebOS Palma) polegał na tym że pozwalał programistom wykorzystać potencjał technologii internetowych w inteligentnych komórkach.

Na platformie Symbian można było już od dawna tworzyć aplikacje wykorzystujące potencjał wbudowanej przeglądarki internetowej a także z możliwości programowania w FlashLite osadzając je w aplikacji pisanej Symbian S60 w C++. Więcej informacji można znaleźć w dokumencie Flash Viewer Framework API łącznie z przykładem How to write a Flash Stub application to protect your SWF file?, natomiast w przypadku tworzenia aplikacji Symbian C++ wykorzystujących silnik przeglądarki internetowej warto zapoznać się z S60 Platform: Browser Control API Developer's Guide v2.0. Jedyny przykład jest zawarty w SDK i jak można też ściągnąć ze strony TSS001012 - Browser Control API: Cloning the connection for Download Manager. Ciekawostką jest to, że te technologia już istnieje sobie od 2004 roku ale jak wiadomo mało kogo to interesowało, albo jak kto to poznał to obowiązywało go przestrzeganie tajemnicy how-know.

W tej sytuacji powstawała idea widgetów na komórki. Więcej szczegółów można przeczytać w pracy doktorskiej Marcosa Caceresa z 2007 roku Ta praca to interesująca historia tego jak powstawała idea widgetów. Nokia w sierpniu 2007 roku wypuściła betę WRT Web Runtime S60 dla SDK S60 3rd Feature Pack 2. Możliwości tej platformy właściwie ograniczały się do wykorzystania potencjału samej przeglądarki S60 Web Browser. Potem wraz z pojawieniem się S60 5th wypuszczono wersję z WRT1.1 które zawierało programistyczny dostęp do danych z komórki. Jest to S60 Platform Services 1.0. Równocześnie Nokia opracowała pluginy do popularnych edytorów developerskich które pozwalały na tworzenie zawartości dla widgetów (dla Aptany, Dreamweawera, oraz VisualStudio). Aby ułatwić szybkie tworzenie zaawansowanych widgetów Nokia opracowała framework WRTKit. Jest zestaw bibliotek JavaScript dedykowany widgetom na Symbiana. Gdy Nokia wypuściła SDK dla N97 w kwietniu 2009 roku to do widgetów dodano nową funkcjonalność - homescreen, co pozwalało widgetom wyświetlać informacje na "pulpicie" komórki. Widgety WRT 1.1 w odróżnieniu od aplikacji na Symbiana miały dość ograniczone możliwości (nie pozwalały na dostęp do plików lokalnie). Idąc naprzeciw oczekiwaniom programistów Nokia wprowadziła nowe Platform Services 2.0 (tylko dla XM 5800 i dla N97) a także Web Runtime Bridge API które ma być dostępne dla wszystkich komórek obsługujących widgety. Na wiki jest dokumentacja tego co można się spodziewać po tej technologii.

Po bliższym spojrzeniu na to rozwiązanie okazuje się że do każdego widgetu będzie można dołączyć paczkę instalacyjną z serwerem HTTP który będzie komunikował się z widgetem lokalnie. Do tego serwera HTTP będzie można robić pluginy ECOM udostępniające funkcjonalności Symbianowego API. Idea całkiem ciekawa biorąc pod uwagę że już napisano takie rozwiązania wykorzystując Pythona S60.

Dla widgetów WRT była już próba napisania takiego serwera HTTP który udostępniałby widgetom API z Pythona takich jak dostęp do bazy danych, wykorzystanie Bluetootha, do wykorzystanie syntezatora mowy. Cały koncept polega na tym żeby zainstalować sobie Mobile Web Serwer z Pythonem albo PAMP z PHP i napisać sobie widget WRT, który byłby w stanie komunikować się z lokalnym serwerem co opisano w artykule How to utilize device resources from a WRT widget. Również można wykorzystać własny miniserwer napisany w Pythonie dla Symbiana co jest opisane w artykule How to access S60 resources in WRT or Flash Lite, using PyS60

Można powiedzieć że same aplikacje w Pythonie dla Symbiana też mogą pełnić funkcje widgetów czyli małych aplikacji rozrywkowych. Przykładem takiego rozwiązania jest framework Flyer współpracujący z FlashLite. Półżartem półserio można zrobić coś jak Adobe AIR na Symbiana czytają poniższe artykuły How to package Flash content in a Widget i How-to communicate with Flash Lite from Javascript in widget (WRT)

Jak tworzyć widgety?

Zainstalować edytor Aptana i plugin do tworzenia widgetów WRT.
Warto na początek wziąć udział w szkoleniu eLearningowym Nokii o widgetach Widgets for the S60 Platform E-learning Następnie ściągnąć sobie aktualna dokumentację Web Developer's Library. Trzeba dowiedzieć się jak importuje się widgety WRT i zacząć naukę na przykładach. Szczególnie polecam dla zaawansowanych RouteWidget Example AccuWidget Example Hue Widget Example a także przykłady aplikacji z fundacji Symbian SEE 2009 Widget OSCON 2009 Schedule Example Widget. Warto też postudiować wiki Forum Nokii i jak Fundacji Symbian