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)