niedziela, 13 kwietnia 2008

XHTML w FlashPlayerze

Często zdarza mi się czytać uwagi, że Flash Player nie nadaje się do wyświetlania (renderowania) stron w formacie XHTML wraz z obsługą CSS. Ale jak przeszukałem sporo informacji o tym, to się okazało że są już odpowiednie rozwiązania. Są to:
Deng X Browser - silnik renderujący XHTML/CSS/SVG/XForms (czyli obsługuje to czego jeszcze żadna przeglądarka internetowa nie parsuje do końca dobrze).
sFIR pozwala na wykorzystanie potencjału jaki tkwi w typografii - zestawienie przykładów. Głównym problemem było pogodzenie mechanizmów wyświetlania strony, tak żeby dobrze to wyglądało dla robotów - tak powstał pomysł SEFFS.

Natomiast obecnie są dostępne eksperymentalne rozwiązania dla Flex i ActionScript 3: Tall Tylera htmlwrapper oraz próba Adobe w tym kierunku - ale zaniechana o czym pisze Alex Harui. Dla programistów Flexa pozostaje rozwiązanie w postaci osadzania HTML w Flex. Można o tym poczytać u Brian Deitte bądź u Alistair Rutherford.

Ponieważ teraz prawie każda strona wymaga wykorzystania Java Scriptu, bo coraz więcej aplikacji internetowych jest tworzonych z użyciem AJAX. W tej sytuacji pozostaje pytanie czy warto tworzyć aplikacje internetowe osadzone w FlashPlayerze.

Argumenty za rozwojem tych bibliotek:

  • Stosowanie typografii (do tej pory nikt nie zrobił dobrego rozwiązania w tym zakresie)
  • Łatwość rozbudowy dokumentów XHTML w kierunku wykorzystania innych standardów np: SVG czy CSS3. Myślę, że na bazie Flash Playera / AIR szybciej powstałby silnik renderujący takie standardy jak MathML, XPath, XForms. Daje to potężną przewagę nad przeglądarkami bo korzyścią jest to że użytkownicy i twórcy stron nie musieliby narzekać że coś tam nie jest obsługiwane w IE5 czy IE6 (bo wszędzie będzie wyglądać identycznie). Dużym plusem może być też (hipotetycznie) że może stać się pierwszym silnikiem obsługującym HTML5.
  • Współpraca z AJAX jest możliwa na kilka sposobów. Użycie biblioteki Flex-Ajax Bridge pozwala programistom na dynamiczne tworzenie interfejsu użytkownika za pomocą komponentów Flexa. Innym rozwiązaniem jest wykorzystanie biblioteki as3corelib do obsługi danych w formacie JSON. Można poczytać o tym na blogach Mike Chambers czy Parranoidferret.com
  • Głębokie linkowanie - coraz więcej aplikacji internetowych wymaga stosowania czytelnego zapisu adresów URL. Aplikacje internetowe "osadzone" w Flash Playerze są często jakby niezależne od nawigacji w przeglądarce. Przecież wystarczy wykorzystać wbudowanych w Flex 3 bądź biblioteki UrlKit
Zastrzeżenia:
  • Silnik renderujący to nie wszystko. Coraz więcej aplikacji internetowych wymusza stosowanie JavaScriptu, napisano miliony linii kodu w JavaScripcie co może skutecznie zniechęcić do przechodzenia na ActionScript, a jak wiadomo FlashPlayer nie obsługuje JavaScriptu więc kod w JavaScript będzie musiał zostać przepisany na ActionScript. Kolejnym problemem może być obsługa DOM. Nie znalazłem jeszcze informacji o tym jak DOM znany z przeglądarek zastąpić e4x. Trzeba by napisać bibliotekę AS3 do obsługi DOM wykorzystującą e4x. No chyba, że ktoś już używał biblioteki as3query.
  • W przypadku popularności biblioteki htmlwrapper można by spodziewać wysypu "wtyczek", a ostatecznym przypadku powstawanie kodu CSS tylko dla obsługi przez Flash Playera, co teoretycznie oznacza, że każdy może standard rozszerzać o nowe rozwiązania.
  • Pozostaje też kwestia przebudowania oprogramowania po stronie serwera, może się okazać że wykorzystanie Flash Remoting okaże się lepszym rozwiązaniem niż budowanie aplikacji na AJAX. Tylko jeszcze nikt nie napisał pośrednika z AMF do aplikacji wykorzystującej AJAX.
  • Na koniec pozostają uprzedzenia i stereotypy. Nic nie poradzę na że sporo ludzi kojarzy Flasha i format SWF z animacjami oraz filmami niż z profesjonalnymi aplikacjami czy bibliotekami. Kolejne argumenty że strony oparte na FlashPlayerze nie dają się indeksować przez Google albo, że zawartość z pliku SWF jest niedostępna dla screenreaderów są wynikiem tego, że mało komu chce się dodać klika linijek kodu więcej.
  • Najważniejszą barierą w upowszechnieniu się tych bibliotek jest brak ludzi, którzy chcieliby to wykorzystać. Inaczej mówiąc brakuje ludzi którzy biegle znali się na programowaniu w ActionScript 3 oraz pisali o tym. Uważam że te problemy o których pisałem powyżej są do rozwiązania.

2 komentarze:

Sadek pisze...

Rewelacyjne zestawienie. O Dengu słyszałem wcześniej, ale SEFFS to dla mnie nowość, a w czasach, w których jesteśmy zmuszeni do projektowania stron/aplikacji "pod googla" może się ten mechanizm okazać zbawienny.

sema pisze...

Świetny wpis Michale...