Recenzje
Ajax. Biblia
Gruba, licząca ponad 600 stron księga, opatrzona tytułem niezrozumiałym dla zdecydowanej większości populacji, z dopiskiem "Biblia" robi z pewnością wrażenie. Oto mamy przed sobą źródło specjalistycznej wiedzy dostępnej tylko garstce pogarbionych dziwaków w grubych okularach. Nic bardziej mylnego - po lekturze książki Stevena Holznera Czytelnik ledwie zorientuje się, czym właściwie jest Ajaks (ang. Ajax).
No właśnie, czym jest Ajaks? W rzeczywistości efekty jego działania znają wszyscy użytkownicy internetu. Jeszcze nie tak dawno strony internetowe były siecią nieruchomych plansz zapełnionych tekstem, a potem również grafiką. Przejście między takimi planszami wiązało się z kliknięciem w hiperłącze, zniknięciem całej strony i pojawieniem się nowej, często nieznacznie tylko różniącej się od poprzedniej. Problem ten rozwiązywano z początku za pomocą tzw. ramek, które łączyły, niewidocznie dla użytkownika, kilka stron w jedną i każda z nich mogła być oddzielnie przeładowywana. Z czasem na stronach pojawiły się pierwsze elementy interaktywne, reagujące na ruch myszą bez przeładowywania strony np. rozwijane menu czy podświetlane linki. Wciąż jednak wszystkie dane były ładowane na stronę przed jej wyświetleniem, było to więc tylko odkrywanie ukrytych elementów, od początku obecnych w kodzie.
Chciałoby się powiedzieć - i wtedy pojawił się Ajaks, ale lepiej powiedzieć - i wtedy pojawiło się Google. Bowiem to właśnie ten koncern rozpoczął nowy etap rozwoju internetu. Od 2005 roku Google zaczęło wprowadzać swoje rewolucyjne usługi. Dzięki Google Suggest, w czasie wpisywania zapytania w pole wyszukiwarki strona "w locie" wyświetla najczęściej szukane hasła, w Google Maps stworzono interaktywną mapę, na której pojawiają się "dymki" z informacjami i "pineski" na wcześniej oznaczonych miejscach, Google Docs oferuje internetowe arkusze kalkulacyjne czy edytory tekstu. Rosnące jak grzyby po deszczu serwisy społecznościowe szybko przejęły nowe rozwiązania i dziś przestaje dziwić, że po wybraniu odnośnika strona zmienia się bez przeładowania, że formularze sprawdzają nam na bieżąco wprowadzane dane itd. Krótko mówiąc, strony zaczęły upodabniać do aplikacji deskopowych, w których interfejs jest stały, a treść dynamicznie się zmienia. Jest to jedna z głównych cech drugiej generacji stron internetowych zwanej Web 2.0. A techniką umożliwiającą pobranie danych z serwera bez odświeżania strony i dynamiczną zmianę części jej zawartości jest właśnie Ajaks.
Powyższe określenie nie jest może do końca ścisłe, bo Ajaks to właściwie twór teoretyczny, nazwa nowego podejścia do projektowania stron internetowych, przy wykorzystywaniu kilku technik, które ukształtowały się już w 1998 roku. Jednak dopiero w 2005 roku Jesse James Garrett pod raz pierwszy użył słowa "Ajax" w swoim artykule: "Ajax: A New Approach to Web Applications" ("Ajax: nowe podejście do aplikacji webowych"), w którym rozwinął ów skrót jako "Asynchroniczny JavaScript i XML", bo właśnie na tych technologiach, przy wsparciu innych, jak CSS czy model DOM, opiera się Ajaks.
Przejdźmy jednak wreszcie do książki Holznera, przed którym stanęło zadanie napisania podręcznika do podejścia, trendu, stylu - do kombinacji najróżniejszych technik projektowania stron www, które mogą współpracować z jeszcze innymi... Holzner miał dwie możliwości - albo założyć pewne minimum, które pozwoli mu pokazać, jak stare techniki zostały w nowy sposób połączone i twórczo wykorzystane, albo napisać książkę o wszystkich technikach składowych Ajaksa i potem spróbować to wszystko posklejać. Autor wybrał drugą opcję. Oczywiście założenie, że ktoś może i w ogóle chce nauczyć się Ajaksa, nie umiejąc w ogóle projektować stron internetowych porównałbym z pragnieniem malowania w stylu wczesnych impresjonistów francuskich bez przejścia kursu podstawowych technik malarskich. Holzner postawił jednak przed sobą mniej więcej takie właśnie zadanie i zaserwował Czytelnikom rajd przez wszystkie możliwe techniki projektowania, zarówno te, które są, jak i te, które nie są częścią Ajaksa.
Po zapoznaniu Czytelnika z tym, czego chce go nauczyć (rozdział 1), autor przechodzi do kursu JavaScriptu od podstaw, przejawiając wciąż duży optymizm w stosunku do swojego zadania. Jak pisze, "żeby zajmować się Ajaksem, potrzebna jest solidna znajomość podstaw JavaScriptu, a wszystko to, co trzeba wiedzieć o tym języku, zamieszczono w tym rozdziale". Owo "wszystko" to w tym i w innych przypadkach po prostu podstawowa składnia języka - operatorów, funkcji, instrukcji warunkowych czy pętli. Następne dwa rozdziały, niecałe 100 stron, to właściwy opis Ajaksa, przede wszystkim korzystania z obiektu JavaScriptu XmlHttpRequest, który służy do komunikacji z serwerem. I do tego miejsca jest jeszcze nieźle.
Drugą część, "Ajax w szczegółach", zajmują w całości różne biblioteki Ajaksa. W pierwszym rozdziale budujemy własną, co sprowadza się do umieszczenia kodu wypracowanego w pierwszej części w osobnym pliku z rozszerzeniem .js. W kolejnych rozdziałach poznajemy najróżniejsze, choć często też bardzo do siebie podobne, biblioteki Ajaksa dla JavaScriptu, PHP, Javy czy Ruby on Rails (różne języki programowania). Można sobie z tej menażerii coś wybrać, a pozostałe 100 stron ominąć i przejść do części trzeciej. Tam nauczymy się modelu DOM i XML - elementów rzeczywiście istotnych dla Ajaksa, ale dalej następuje także kurs CSS - techniki dziś dosyć podstawowej i wreszcie w czwartym rozdziale tej sekcji rozdziale autor umieszcza parę technik, o których jeszcze nie pisał, do czego jeszcze wrócę. Szczyt jednak osiąga w części ostatniej, której większość stanowi... kurs PHP, w którym ani razu nie pojawia się skrypt w Ajaksie. Wreszcie w ostatnich dwóch rozdziałach traktujących o bezpieczeństwie Holzner wprowadza kolejny język - Javę, już bez tłumaczenia jego składni, mimo że większość prezentowanych rozwiązań można by uzyskać także w... PHP, którego ledwie co autor nas "nauczył".
Gdyby jeszcze wszystkie te kursy były napisane bez zarzutu i wypełniały szczelnie 600 stron "Biblii" książka broniłaby się jako podręcznik dla początkujących. Niestety, już sama organizacja książki jest bardzo nieekonomiczna. Autor wprowadzając każdą nową linijkę kodu, cytuje całość lub część skryptu, pogrubiając tylko zmiany - w ten sposób jeden, niedługi zwykle kod jest wielokrotnie powielany, a każda jego linijka łopatologicznie tłumaczona. Przewracanie książek staje się więc z czasem główną czynnością Czytelnika. Z drugiej strony autorowi zdarza się wprowadzać niezrozumiałe części kodu z komentarzem typu "tego nie trzeba rozumieć" lub "wykracza to poza ramy tej książki". Tam więc, gdzie książka miała się zaczynać, autor już ją kończy.
I nic nie zasługuje tu na bezwarunkową pochwałę. Struktura jest klarowna, ale nie brakuje też niekonsekwencji i zaburzenia kolejności wprowadzanych zagadnień. Poziom kodu jest nierówny - zwykle nienajgorszy, ale dość wspomnieć rozdział czwarty części trzeciej, w którym autor zbiera różne wcześniej nie opisane techniki - większość z nich nie działa na innej przeglądarce niż Internet Explorer, czasem zgodnie z przewidywaniami autora, czasem nie. Tylko po co komu takie programowanie? Wreszcie, "Biblia" nie ma nastawienia praktycznego - właściwie przez większość czasu tłuczemy jeden i ten sam przykład typu "naciśnij przycisk, a pojawi się tekst" na tysiąc sposobów, a niezmiernie rzadko pojawiają się większe skrypty, które syntezowałyby nabywaną wiedzę, nie ma zaś takiego, który oferowałby więcej niż jedną funkcję i używałby wielu obiektów XmlHttpRequest.
Książka "Ajax. Biblia" jest właściwie niezłą pozycją - jasno napisaną, dobrze przełożoną i ładnie wydaną. Problem w tym, że nie wiem, dla kogo jest ona przeznaczona. Nowicjusze poznają z niej składnię wielu nowych języków, ale nie sądzę, by byli w stanie samodzielnie i poprawnie z nich wszystkich korzystać, bardziej zaawansowani użytkownicy będą zaś znudzeni przewracali kartki zapisane wiecznie tym samym kodem. Obie grupy jakoś nauczą się po tym wszystkim Ajaksa, choć trudno tu mówić o wyczerpującej wiedzy. Tylko że wobec tak ogromnej konkurencji na rynku literatury informatycznej, "jakoś" to chyba trochę za mało.