piątek, 29 września 2006

Jak sprawić, żeby Google obsługiwał aplikacje Flex?

Joe Berkowitz z firmy Allurent przedstawił kompoment UrlKit.
Idea tego polega na tym aby obsługiwać aplikacje Flex z poziomu adresów URL (coś tak jak mod_rewrite dla aplikacji w PHP). Do tej pory aplikacje Flash 8 obsługiwały w przeglądarkach interfejs ExternalInterface. Pozwało to na komunikację Flash Playera z przeglądarką (tak jak wykorzystanie przycisków Back Forward w przeglądarce). Można było użyć różnych sposobów na powiązanie paska adresów z tym co ma pokazać Flash Player. Przeważnie to powodowało przeładowywanie strony na której znajdował się Flash Player.
Rowiązanie zastosowane w kompomencie UrlKit jest bardzo unikalne. Dzięki temu można wysłać informację o stanie aplikacji. Każdy stan aplikacji Flex może mieć swój adres URL - chyba tego nie można powiedzieć o aplikacjach AJAX. Możliwe jest przełączanie pomiędzy stanami aplikacji Flex z poziomu przycisków przeglądarki.
Majac różne adresy URL możemy sprawić że odpowiednie informacje też pojawią się na stronie internetowej niezaleznie od tego czy użytkownik ma urchomioną obsługę JavaScriptu. Cała rzecz polega na tym że adresy URL są bardzo specyficzne.
Podczas poruszania się po aplikacji Flex skrypty generują nowy adres URL.
Oto przykład


http://joeberkovitz.com/projects/urlkit/
sample/Bookmarks.html#/StatesExample

otwiera pierwszą zakładkę o nazwie StatesExample, natomiast

http://joeberkovitz.com/projects/urlkit/sample/
Bookmarks.html#/StatesAndFormsExample/sideA;
lowPrice=75;used=t;new=t;brand=Acme;size=medium

przechowuje informacje o stanie danych w zakładce StatesAndFormsExample/sideA

Cała sztuka teraz polefa na przygotowaniu odpowiedniej zawartości strony na której jest dana aplikacja Flex. Warto przygotować tak tworzenie serwisu WWW żeby zawierał obsługę kotwic w hiperłaczach (dzięki napisaniu parsera tych adresów).
http://www.jakisadres.pl/Bookmarks.php#/StatesExample

Teraz roboty sieciowe wchodza na te strony. Pobierają zawartość treściową z tymi linkami wskazującymi na dany stan aplikacji Flex. W taki sposób można przygotować serwis zgodny w dół i zgodny na przyszłość. Co to znaczy? Że zawartośc treściowa serwisu będzie zachowana dla każdego. A jak ktoś ma plugin Flash Player i uruchomioną obsługę JavaScript, to za 10 lat jego aplikacja też będzie nadal obsługiwana.

Uwagi dla programistów: obecna wersja UrlKit działa dobrze pod Internet Explorerem i Firefoxem 1.5 pod Windows. Tworząc aplikację trzeba przewidziec wszystkie możliwe kombinacje adresów występujących w aplikacji Flex i przygotować alternetywną zawartość treściową dla robotów Google (i kazdego kto nie będzie mógł obsługiwać aplikacji Flex).

czwartek, 14 września 2006

RIA - Rich Internet Application

W cieniu marketingowych zachwytów nad Web 2.0 rozwija się cicha walka technologiczna nad tym, która technologia jest w stanie spełnić najbardziej oczekiwania klientów oczekujących coraz lepszych rozwiązań multimedialnych.

Obecny model tworzenia oprogramowania ewoluje w kierunku tworzenia aplikacji uruchamianych w przeglądarkach internetowych. Istnieje też nacisk żeby bogaty interfejs użytkownika aplikacji na komputerze w różnych środowiskach wygladał tak samo.

Przypomina to trochę walkę o ustalenie nieformalnego standardu GUI internetu. XHTML jest ograniczony jeżeli chodzi o rozwój graficznego interfejsu użytkownia. PDF doskonale pełni rolę formatu danych dla wydruku, ale nie najlepeiej wygląda jego sprawa z interaktywnością. W to miejsce wchodzi format SWF. Format ten rozwinał sie od formatu graficznego poprzez elementy multimedialne aż ostatnio jako format do tworzenia aplikacji internetowych nowej generacji opartych między innymi na AJAX czy WebServices.

Aplikacje internetowe mają aspirację stawac się aplikacjami komputerowymi, oferując użytkownikowi lepszy graficzny interfejs użytkownika.
Technologia Ajax bazująca na przeglądarkach internetowych rozpoczeła ewolucję w kierunku RIA - Rich Internet Application, czyli bogatego interfejsu użytkownika. Aplikacje internetowe oparte na Ajax towarzyszyły wyzwania związane z dostępnością dla osób niepełnosprawnych korzystających z internetu, czy respektowaniem standardów sieciowych, a także z wyszukiwarkami internetowymi oraz obsługą zakładek. Do tego doszły problemy związane z obsługą programistyczną przegladarek internetowych (IE inaczej obsługuje technologie AJAX niż przeglądarki oparte na silniku Gecko czy Opera).

Koncepcja "napisz raz uruchom wszędzie" zaczyna spełniać się w aplikacjach internetowych od czasów apletów Java, więc pojawiła się potrzeba przeniesienia tego modelu na aplikacje komputerowe w różych środowiskach.

Jak wiadomo aplikacje internetowe pisze się w XHTML, stylach kaskadowych CSS, oraz w JavaScript. Więc postanowiono przenieść ten model programowania na aplikacje komputerowe. Pojawiły się rózne podejścia wykorzystujące programowanie w językach znacznikowych do tworzenia graficznego interfejsu graficznego. Oto lista technologii, które maja szanse rozwinąć się:

  • Adobe Flex i Adobe Apollo można kodować w MXML
  • OpenLaszlo koduje się w języku znacznikowym LZX
  • Mozilla i jej język znacznikowy XUL
  • Microsoft Windows Presentation Framework,który pozwala programować w XAML
Adobe Flex to platforma zaplanowana do tworzenia bogatgo interfejsu użytkownika w internecie. Ponieważ aplikacja ma postać pliku SWF istnieje możliwość uruchamiania jej w komputerach obsługująch Flash Playera 9. Adobe obecnie pracuje nad aplikacją, która pozwoli na wykorzystanie przez aplikacje komputerowe możliwości graficznego interfejsu użytkownika jakie oferuje Adobe Flex. Obecnie jest konkurencyjnt produkt Zinc 2.5 firmy Multidmedia, który oferuje taką funcjonalność.

OpenLaszlo staje się opensourcową alternetywą dla Adobe Flex. Jego zaletą jest to, że generuje kod SWF dla Flash Playera 6. Co oznacza, że to da się uruchomić wszędzie, a takze pozwala też na wygenerowanie kodu aplikacji DHTML wykorzystującego Ajax. Kolejnym plusem jest to, że może pracować jako aplikacja serwerowa (serwlet Javy) i jako aplikacja z linii poleceń. Kod w OpemLaszlo pisze się w języku znacznikowym LZX oraz programuje się w EcmaScript.
Ostatnio powstaje coraz więcej aplikacji opartych na OpenLaszlo (Pandora, Monster)

Microsoft korzystajac z przewagi konkurencyjnej i innowacyjnej może pozwolić sobie na rozwijanie dość kontrowersyjnych technologii. Jedną z takich technologii jest .NET 3.0 zawierające Windows Presentation Foundation (WPF). Jest to technologia umożliwiająca tworzenie bogatego interfejsu użytkownika zarówno w aplikacjach komputerowych i jak aplikacjach internetowych. Obecnie aplikacje internetowe .NET 3 można uruchamiać jako pliki XBAP w przegladarce Internet Explorer 7, a także po odpowiednim skonfigurowaniu w Internet Explorer 6.
Możliwości WPF świetnie ukazuje blog porównując jego możliwości do Adobe Flex. Pewnego czasu Microsoft pokazywał, że uproszczona wersja tej technologii pod nazwą Windows Presentation Foundation / Everywhere miała być uruchamiana wszędzie dzięki odpowiedznim wtyczkom w przegladarkach takich jak Firefox Opera (pod Windows MacOX czy PocketPC).

Mozilla oferuje międzyplaformową przeglądarkę z własnym językiem znacznikowym XUL do budowania wtyczek. Język XUL nie jest na tyle elastyczny aby budować w nim bogaty interfejs użytkownika. Można powiedzieć, że jest raczej rozszerzeniem XHTML do budowania aplikacji w oparciu o silnik Gecko.

Podsumowanie. W najbliższych latach bogaty interfejs uzytkownika aplikacji internetowych (i wkrótce aplikacji komputerowych) będzie rozwijać się w rywalizacji pomiędzy Adobe a Microsoftem. W tej sytuacji interesujące może być wskazanie obszarów
gdzie Adobe osiagnie przewagę: obsługa multimediów, natomiast Microsoft dzięki DirectX może osiagnąć przewagę w grafice 3D (co moze być dość dziwne) pod warunkiem że ktoś napisze jak uzywać grafiki 3D w aplikacjach internetowych, tak jak stało się z Ajax. Pożyjemy zobaczymy.

wtorek, 12 września 2006

Adobe Apollo

Ted pokazał jak ma wyglądać aplikacja Adobe Apollo. Maja to być pliki z rozszerzeniem *.air
Te pliki to spakowany zestaw zawierajacy plik *.swf pliki manifestu .xml a takze plik ikony *.ico Oto składnia pliku .xml

 <?xml version="1.0" encoding="utf-8" ?>
<application appid="com.adobe.ted.TagTV" version="0.7" xmlns="http://ns.adobe.com/apollo/application/1.0.M1">
  <properties>
  <name>TagTV - Flickr and YouTube Mashup</name>
  <description>
  <publisher>Ted Patrick</publisher>
  </properties>
  <rootcontent contenttype="application/x-shockwave-flash" windowmode="transparent">TagTV.swf</rootcontent>
  <icon contenttype="image/vnd.microsoft.icon">icon.ico</icon>
  </application>



No cóż zostało mi czekać na API do Adobe Apollo na Adobe Lab. Myślę, że to będzie tak samo duże jak API do Adobe Acrobat (czy jego serwerowego odpowiednika Adobe LiveCycle). W Adobe Acrobat API programowało sie w JavaScripcie. Jeżeli FlashPaper ma być następcą PDF to chyba szybko się na to nie zanosi. Chociaż dzięki darmowmu SDK Flex 2 można liczyć na to że ktoś opracuje jakiś generator Flash Papera. Z drugiej strony zastanawiam się nad tym, czy można byłoby do PHP dołaczyć plugin (rozszerzenie) generujący SWF na bazie języka HaXe. Wtedy mielibysmy OpenSourcowy odpowiednik FlashPapera i generatora aplikacji Adobe Apollo po stronie serwera.

piątek, 8 września 2006

Konferencja w Nowym Jorku "Real-World Flex"

Miesiac temu 14 sierpnia była konferencja zorganizowana przez SYS-CON Events "Real-World Flex" i Adobe.

Jeremy Geelan opublikował zdjęcia z tej konferencji. Dlaczego o niej piszę teraz? Bo chcę wskazać na firmy i ludzi związanych z rozwojem tej technologii. Takie spotkania są ważne, bo pozwalają na lepszą popularyzację tej technologii wsród kadry zarządzającej firmami informatycznymi i do szerokiej społeczności informatyków.

David Mendels z Adobe przedstawił wskazówki co do rozwoju serwerowych produktów opartych na Adobe LiveCycle oraz o jego możliwościach.

Yakov Fain i Dr. Victor Rasputnis z FarataSystems ukazali możliwosci jakie daje zastosowanie serwerowych technologii Java z Adobe Flex 2.

Christophe Coenraets z Adobe pokazał możliwości jakie daje zastosowanie AJAX z Flex na przykładzie frameworka Spry i Flex Ajax Bridge.

Jesse Randall Warden niezależny konsultant opisał jakie korzyści niesie dla designerów (grafików) stosowanie Flexa.

Dave Wolf z Cynergy Systems - firma ta przedstawiła korzyści jakie niesie wykorzystanie Adobe Flex 2 do tworzenia interesujących interfejsów użytkownika na przykładzie swoich produktów

Fumi Matsumoto z Allurent przedstawił jak można wykorzystać Flex do budowania aplikacji e-commerce na przykładzie aplikacji Allurent Buy (można to potraktować jako studium użyteczności aplikacji internetowych).

Mansour Raad z ESRI wykazał że aplikacje oparte na Flex świetnie nadają sie do budowania interaktywnych map dla użytkowników i ludzi biznesu na przykładzie ArcWeb Services Explorer Polecam obejrzenie tej aplikacji Flex.

Luis Polanco z Adobe przedstawił kierunki rozwoju aplikacji opartych na Flex 2 na przykładzie produktu który kryje się pod kodowa nazwą Apollo

środa, 6 września 2006

Brevity

Chyba na dobre zapanowała moda na tworzenie nowych języków metaprogramowania. Co to oznacza? Dla programistów ActionScript to oznacza "uproszczenie" kodowania. Adobe rozwineło język MXML, aby programiści nie musieli pisać setek linii kodu w ActionScript, wystarczy że parser plików MXML wygeneruje je do postaci kodu w ActionScript, a następnie je skompiluje do formatu SWF.

Jaka z tego korzyść? Można napisać własny język programowania i własny framework a potem to wszystko przekształcać do kodu AS, który i tak zostanie skompilowany do postaci SWF. Przecież przeksztalcaniem kodu z własnego języka programowania do postaci AS może zajmować się własny parser.

Keith Peters napisał framework AS3 do efektów graficznych o nazwie Brevity. Parser i edytor do tego zostały napisane w Pythonie. Jego działanie jest jest proste. Piszesz kod w języku Brevity, który jest uproszczoną wersja ActionScriptu. Podczas pisania kodu skupiasz się na możliwościach jakie daje Ci ten framework.

Oto kawałek kodu w Brevity:

function init()
{
var box:Box3D = new Box3D(50, 50, 50);
box.randomSpin(-3, 3);
box.move();
}

i mamy już po przetworzeniu i skompilowaniu obracajacy sie sześcian.

Ta koncepcja wydaje się bardzo interesująca z tego powodu że istnieją już analogiczne przykłady tworzenia metajęzyka programowania który pozwala ludziom szybciej pisać aplikacje graficzne Processing (oparty na J2SE) czy Phrogram (oparty na .NET)

środa, 30 sierpnia 2006

Ruch open source wokół platformy Flash

Odtąd kiedy Macromedia zaczeła rozwijać Flasha jako narzedzie programistyczne spotkało sie to z dużym zainteresowaniem wsród programistów. Małe rozmiary (co zadzwięcza kompresji i binarnej postaci danych) plików SWF sprawiało że ten format stał się nieformalnym standardem multimedialnej prezentacji danych.

Obecnie wiele produktów ruchu opensource stara się wykorzystywać możliwości jakie daje Flash Player. Oprócz formatu SWF jeszcze obsługuje dane w postaci AMF (binarny odpowiednik serializacji danych) i obsługa protokołu RTMP (Real Time Messaging Protocol)

Są obecnie 2 duże społeczności opensource które intensywnie dzielą swię swoją pracą, aby przyspieszyć rozwój: lab.adobe.com i OSFlash.org

Największą popularnoiść uzyskał MTASC kompilator plików ActionScript 2. Jego największa zaletą było to że byl kompilatorem z linii polecen, co sprawiało że łatwo można było go dopasować do możliwości jakie oferują rózne edytory

Programiści szybko przystosowali platformę programistyczną Eclipse do możliwości oferowanych przez MTASC . Powstał ASDT jako darmowy edytor ActionScriptu. (Istnieje jeszcze jego komercyjny odpowiednik FDT). Ponieważ platforma Eclipse bardzo wolno pracuje na starszych komputerach, niektórzy programiści wola korzystać z FlashDevelop, który też oferuje podkolorywowanie składni i jak autouzupełnianie.

Jednym z najbardziej perspektywistycznych projektów jest Red5. Prosta aplikacja służąca do transmisji danych w formacie multimedialnym (takich jak wideo czy dzwięk) wykorzystując to że Flash Player może obsługiwać obraz z kamer i jak dzwięk z mikrofonu. Jego celem jest obsługa protokolu RTMP.

Dla programistów tworzących wielkie aplikacje internetowe dla przedsiębiorstw dostępne sa 2 frameworki: ARP (dla plikacji pisanych w ActionScript 2.0) i jak Cairngorm 2 (dla aplikacji pisanych w ActionScripcie3). Ich główną siła jest to że umożliwiają wykorzystanie wzrorców projektowych takich jak Model-Control-View czy wykorzystanie testów jednostkowych

Z drugiej strony rozwijają się też projekty które oferują własny model tworzenia i obsługiwania kompomentów Mam tutaj na myśli ASWing i jakActionStep czy bardziej znana platforma OpenLaszlo. Ich współną cechą jest to że można tworzyć wygląd aplikacji za pomocą języka znacznikowego.

Istotną cechą jest "rozszerzalność" aplikacji napisanych we Flashu. Polega to na tym że taka aplikacja zachowuje się jak program komputerowy umożliwiając użytkownikowi np zapisywanie stanu aplikacji na dysku twardym. To jest możliwe dzięki projektowi Screenweawer. Pozwala to na tworzenie interesujących graficznie aplikacji użytkownika. Istnieje też jego komercyjny odpowiednik Multidmedia.

Obecnie na fali fascynacji technologią AJAX pojawiają się propozycje wykorzystujące możliwości komunikacji PlashPlayera z przeglądarkami pozwalając programistom wpływać na wygląd aplikacji flashowej z poziomu JavaScriptu ze strony internetowej. Ich cechą jest to że rozszerzają możliwosci pracy aplikacji AJAX w trybie offline. Są to biblioteki typu AFLAX czy Flex Ajax Bridge.



piątek, 25 sierpnia 2006

Osadzanie dokumentów HTML wewnątrz SWF

Idea osadzania dokumentów HTML czy PDF w aplikacjach zawsze intrygowała użytkowników i jak programistów. Otóż można przeglądać dokument HTML "osadzony" wewnątrz pliku SWF za to odpowiada komponent IFrame stworzony przez Christophe Coenraets A Brian Deite w swoim blogu też pokazał przykład jak ma to funkcjonować. Ciekawe wyjaśnienia są w jego wpisach z lutego i jak z maja a także jego ostatnia wersja komponentu dla Flex 2 Jego demo można obejrzeć i ściągnąć kod zródłowy

Kod składa się z trzech plików - pliku html który zawiera kod JavaSscript do uruchomienia pliku SWF a także pole w którym załadowana jest ukryta ramka. Ta ukryta ramka jest potrzebna z powodów obejścia zabezpieczeń związanych z obsługą domen przez FlashPlayera 9. Zmiany w przewijanych stronach zachodzą na poziomie przeglądarki co pozwala na uzyskanie wrażenia że to Flash Player odtwarza strony WWW. Plik IFrameDemo.mxml jest plikiem z którego tworzy się plik SWF. Zawiera w sobie dane w postaci XML z których będzie korzystać komponent Tree. Te dane można uzyskać w różny sposób np pobrać taki dokument z sieci. Dane w komponencie Tree informują o stronach które mają być załadowane do komponentu IFrame.
Plik IFrame.mxml zawiera właściwie kod skryptu komponentu pozwalający się na komunikowanie się ze stroną www na której znajduje się plik SWF korzystający z tego komponentu. Skrypty ActionScriptu tego komponentu wywołują skrypty JavaScript w celu pobrania danych z ukrytej ramki na tej stronie czy przechodzenia do kolejnych stron.