Radej Daniel - wymiana wiedzy

Transkrypt

Radej Daniel - wymiana wiedzy
Radej Daniel, Pańczyk Beata
Rola JavaScript w tworzeniu warstw
aplikacji internetowych
1.
Wstęp
Twórcy witryn internetowych wykorzystują do prezentowania przekazywanych
treści wszystkie dostępne dla współczesnego sprzętu elektronicznego media – tekst,
dźwięk, grafikę i animowany obraz. Do przekazywania każdej formy prezentacji
informacji wykorzystywane są różne technologie o różnych możliwościach, a często
łączy się dwie lub więcej aby uatrakcyjnić wygląd i ułatwić odbiór treści
użytkownikowi witryny.
Do opisu struktury poszczególnych elementów i informacji zawartych na stronie
internetowej wykorzystywany jest język znaczników hipertekstu HTML (ang.
HyperText Markup Language). Język ten jest rozpoznawany przez wszystkie
współczesne
przeglądarki
internetowe
niezależnie
od
sprzętu,
czy
systemu
operacyjnego końcowego użytkownika.
Do opisu widoczności, położenia i wyglądu poszczególnych elementów zawartych
w dokumencie HTML wykorzystuje się kaskadowe arkusze stylów (ang. Cascading
Style Sheet, CSS). Współcześnie praktycznie każda strona internetowa składa się z co
najmniej tych dwóch technologii (HTML i CSS), umożliwiają one określenie wyglądu
i zawartości statycznej strony internetowej.
Duże witryny internetowe mogą składać się często z setek czy tysięcy podstron,
a treść na każdej z nich może ulegać znaczącym zmianom wielokrotnie w ciągu jednego
dnia; na potrzeby między innymi takich serwisów powstał język PHP (ang. Personal
- 1 / 11 -
Home Page) umożliwiający generowanie treści strony internetowej po stronie serwera
na bieżąco na podstawie akcji użytkownika aplikacji, bazy danych i reguł
zaprogramowanych przez twórcę aplikacji. Alternatywą dla PHP są komercyjne
rozwiązania takie jak JavaServer Pages (JSP), czy Active Server Pages (ASP).
W statycznej stronie internetowej aby zmienić strukturę, zawartość, bądź wygląd
dokumentu pobranego przez przeglądarkę konieczne jest ponowne pobranie go
z serwera (w niewielkim zakresie do zmiany widocznych treści można stosować
odpowiednio przygotowane arkusze stylów). Dlatego powstały tak zwane języki
skryptowe umożliwiające manipulowanie strukturą, treścią i wyglądem pobranego już
dokumentu, a nawet można pobierać nowe elementy i wstawiać je bezpośrednio we
właściwe miejsce w strukturze dokumentu bez konieczności ponownego pobrania
całego
dokumentu.
Najpopularniejszym
takim
językiem
wykorzystywanym
w dokumentach HTML jest JavaScript (z jego odmianą JScript – zaimplementowaną
w przeglądarce Internet Explorer od wersji 5.5 do 8 - według zapowiedzi Microsoftu
Internet Explorer 9 jest zgodny ze standardem JavaScript, jednakże w praktyce nadal
występują znaczące różnice zarówno w dostępnych funkcjach języka, zwracanych przez
nie wartościach, jak również w wydajności wykonywanych skryptów).
Niemal każda współczesna strona internetowa zawiera elementy graficzne
w postaci wyświetlanych obrazków, czy animacji. Przeglądarki internetowe obsługują
wiele formatów zapisu obrazu (m.in. jpg, png, gif) i wyświetlają je jako integralne
elementy dokumentu. Współcześnie niemal nieodzownym rozszerzeniem oferowanych
przez przeglądarki internetowe funkcjonalności stała się obsługa multimedialnych
animacji Flash, która umożliwia na stronach internetowych odtwarzanie bogatych
wizualnie animacji, filmów, czy gier umieszczanych w dokumencie HTML za pomocą
elementu (<object> </object>). Funkcjonalność ta jest zwykle realizowana za pomocą
specjalnej wtyczki (dodatku do oprogramowania rozszerzającego jego możliwości)
instalowanej dodatkowo przez użytkownika.
Podobny do animacji Flash efekt można uzyskać korzystając z apletów napisanych
w języku Java, które do prawidłowego działania wymagają zainstalowanego w systemie
użytkownika oprogramowania Java Runtime Enviroment (JRE) wykorzystywanego
przez przeglądarkę do wyświetlania pożądanych treści.
Aby uzyskać określony efekt na stronie internetowej można wykorzystać różne
technologie (bądź ich połączenie). Na przykład do wyświetlenia mapy miasta można
wykorzystać: aplet Java, aplikację Flash lub skrypty języka JavaScript (w formie
obrazka czy obrazków przesuwanych w granicach ramki obiektu HTML). Ponadto
nawet w ramach jednej technologii, pożądany efekt można uzyskać na wiele różnych
sposobów. Każde z wymienionych rozwiązań wiąże się z różnymi możliwościami
i komplikacjami jakie napotka twórca oraz użytkownik takiej witryny.
2.
Technologie i narzędzia
2.1.
HTML – warstwa prezentacji
Każda strona internetowa w swojej konstrukcji wykorzystuje jedną z wersji tego
języka do opisu struktury, rozmieszczenia i wyglądu prezentowanych informacji
(przynajmniej do pewnego stopnia, gdyż współcześnie zaleca się definiowanie wyglądu
dokumentu HTML za pomocą arkuszy stylów CSS). Swoją popularność zawdzięcza
przede wszystkim wieloplatformowości (praktycznie na każdy system operacyjny
powstały przeglądarki internetowe obsługujące ten język, a zazwyczaj wiele jego wersji
– współczesne przeglądarki zazwyczaj obsługują jednocześnie standardy: HTML 4.01,
XHTML 1.0, XHTML 1.1 oraz w coraz większym stopniu pozostający aktualnie
w fazie tworzenia HTML 5) i łatwości użycia (nie jest to typowy język programowania
i do posługiwania się nim nie są wymagane specjalistyczne umiejętności z zakresu
programowania). Język HTML jest szeroko wykorzystywany nie tylko w internecie,
niejednokrotnie dokumentacja programów (pliki pomocy) znajdująca się lokalnie na
komputerze użytkownika, jest dostarczana w formie plików HTML, wygląd niektórych
programów jest projektowany formie dokumentu HTML i wiele innych.
HTML jest językiem hipertekstowym, to znaczy składa się z powiązanych ze sobą
fragmentów w sposób pozwalający na przeglądanie ich w dowolnej kolejności. Witryna
internetowa składa się zwykle z wielu powiązanych ze sobą linkami pojedynczych stron
tworzących logicznie pogrupowaną całość. Każda pojedyncza strona jest plikiem
tekstowym o określonej strukturze, na którą składają się tak zwane znaczniki (wraz
z ich atrybutami i wartościami tych atrybutów) określające strukturę treści oraz
zawartość dokumentu.
Współcześnie trwają prace nad standardem HTML 5 (aktualnie opublikowanym
w formie szkicu) i wspieranym przez coraz więcej popularnych przeglądarek. Standard
ten wprowadza wiele nowości (jak obsługa strumieni audio i video bezpośrednio przez
przeglądarkę, a nie jak dotychczas za pomocą zewnętrznych dodatków i rozszerzeń do
przeglądarek jak flash czy aplety Java, możliwość rysowania obiekcie canvas – za
pomocą skryptów JavaScript) oraz doprecyzowuje wiele nieścisłości w specyfikacji
HTML 4.01
(przede
wszystkim
dotyczących
ujednolicenia
obsługi
błędów
w dokumentach przez przeglądarki).
2.2.
CSS – warstwa prezentacji
Kaskadowe Arkusze stylów (CSS, ang. Cascading Style Sheet) są uzupełnieniem
języka HTML – stosuje się je do określenia wyglądu i rozmieszczenia każdego
z elementów dokumentu. Na przykład: język HTML pozwala na poinformowanie, że
obrazek jest elementem akapitu, a style stosuje się do określenia wielkości, koloru
i kroju czcionki akapitu, odstępów między wierszami, marginesów obrazka czy
opływania go tekstem.
Dzięki swojej prostocie i znacznym możliwościom arkusze stylów stały się
niezwykle popularnym narzędziem w tworzeniu dokumentów HTML (i XML, bo style
często są wykorzystywane również w dokumentach tego typu).
Standard CSS 2.1 (wersja 2.0 nie doczekała się stabilnej publikacji) rozbudował
poprzednią
wersję
o nowe
selektory
i własności
zwiększające
możliwości
manipulowania elementami dokumentu oraz tak zwane arkusze medialne (pozwalające
określać odrębnie wygląd dokumentu w zależności od wyświetlanego medium, jak
ekran, drukarka czy urządzenia Braille'a).
Arkusze stylów składają się z selektorów (określających docelową grupę
elementów, której ma dotyczyć dany fragment kodu) i deklaracji (informacji, w jaki
sposób te elementy mają być wyświetlane); każda deklaracja składa się z własności
i wartości. Rysunek 1.1 przedstawia prosty przykład składni i możliwości arkuszy
stylów wraz z prezentacją jego wyglądu na rysunku 1.2.
Rys. 1. Przykład połączenia języków HTML i CSS
Rys. 2. Przykład połączenia języków HTML i CSS – wygląd dokumentu
Style nazywane są kaskadowymi ze względu na hierarchię ich ważności
i możliwość nadpisywania własności zdefiniowanymi w arkuszach stylów o niższym
priorytecie własnościami zawartymi w selektorach arkuszy o wyższym priorytecie
(stara wartość jest wówczas po prostu zastępowana przez nową).
2.3.
PHP – warstwa funkcjonalna
PHP jest skryptowym językiem programowania zaprojektowanym z myślą
o generowaniu stron internetowych na bieżąco, na żądanie klienta przez serwer WWW.
Istnieją również implementacje języka działające w formie wiersza poleceń oraz
w środowisku graficznym. Dzięki zintegrowanej obsłudze baz danych, plików
tekstowych, dokumentów XML oraz innych serwisów WWW, PHP jest wygodnym
i funkcjonalnym narzędziem do tworzenia aplikacji internetowych. Dodatkową jego
zaletą jest cena – jest to w pełni darmowe narzędzie rozwijane przede wszystkim przez
fanów, w związku z czym jest to szczególnie popularny wśród prywatnych
użytkowników i małych firm język do projektowania witryn internetowych (tam gdzie
statyczna strona internetowa nie jest wystarczającym rozwiązaniem).
Aktualna wersja to PHP 5.3, w której poprawiono szereg błędów i wprowadzono
drobne nowości ułatwiające programowanie witryn internetowych.
Do niedawna prowadzone były zaawansowane prace nad kolejną wersją języka
PHP 6, w której ma zostać wprowadzone pełne wsparcie Unicode, system cache'owania
kodu i ogólnie ujednolicić język, jednakże w związku z problemami w implementacji
oraz sporami pomiędzy twórcami, prace zostały zawieszone.
Współcześnie szacuje się, że PHP jest wykorzystywany przez około 75%
wszystkich witryn internetowych, co czyni to rozwiązanie zdecydowanym liderem
wśród rozwiązań generujących strony internetowe i oferującym podobne możliwości
jak komercyjne projekty JavaServer Pages, czy Active Server Pages.
3.
JavaScript – warstwa prezentacji i funkcjonalna
JavaScript jest skryptowym językiem programowania zaprojektowanym przez
firmę Netscape w drugiej połowie lat 90 z myślą o wykorzystaniu na stronach
internetowych.
JavaScript
umożliwia
interakcję
na
stronie
internetowej
z użytkownikiem i między innymi sprawdzanie poprawności danych wprowadzonych
w formularzach, manipulowanie zawartością i własnościami elementów dokumentu
HTML; pracuje w środowisku przeglądarki w ramach danego dokumentu, tym samym
nie dając możliwości na przykład na dostęp witryny internetowej do plików na
komputerze użytkownika, czy ingerowanie w pracę innych uruchomionych programów
bądź stron internetowych. Nieco zmodyfikowana wersja języka JavaScript jest
wykorzystywana w aplikacji Adobe Flash pod nazwą ActionScript.
Podstawą implementacji języka JavaScript jest standard ECMAScript (rozwijany
przez organizację ECMA), jednak poszczególne jego realizacje różnią się między sobą
(szczególnie JScript zaimplementowany w przeglądarce Internet Explorer Microsoftu).
Pierwszym opublikowanym standardem ECMAScript była wersja 1 z czerwca
1997 roku; zawierała ona opis języka JavaScript stworzonego i opublikowanego przez
Netscape w marcu 1996 roku razem z przeglądarką Netscape Navigator 2.0 (ta wersja
doczekała się implementacji również w przeglądarce Internet Explorer 3.0 wydanej pół
roku po premierze Netscape, jednak ze względu na to, że Microsoft nie wykupił praw
do nazwy JavaScript implementacja praktycznie niczym się nie różniąca od
JavaScript 1.0 została nazwana JScript).
Kolejna wersja standardu pochodzi z 1998 roku i zawiera przede wszystkim drobne
poprawki wymuszone przez dostosowanie specyfikacji języka do wymogów standardów
ISO (ECMAScript 2 został zatwierdzony jako standard ISO 16262). Wersję tą
zaimplementowano w przeglądarkach Netscape Navigator 4.06, Internet Explorer 4.0
(jako JScript 3.0), Internet Explorer 5.0 (jako JScript 5.0) oraz Internet Explorer 5.01
(jako JScript 5.1).
ECMAScript 3 został opublikowany w grudniu 1999 roku, wprowadzono w tej
wersji wiele nowości do języka, między innymi obsługę wyrażeń regularnych,
mechanizmy wyjątków, nowe typy pętli, literały tablic i obiektów oraz pełne wsparcie
dla standardu DOM (ang. Document Object Model, pol. Obiektowy Model Dokumentu).
Standard ten został wprowadzony w przeglądarkach Netscape Navigator 6.0, Mozilla
Firefox 1.0, Internet Explorer 5.5 (jako JScript 5.5), Internet Explorer 6 (jako
JScript 5.6), Internet Explorer 7 (jako JScript 5.7), Internet Explorer 8 (jako JScript 5.8),
Opera 6.0 (i późniejszych), Safari 3.0 (i późniejszych wersjach) oraz Google Chrome.
Na podstawie tej wersji standardu
powstały implementacje JavaScript 1.5
(wprowadzona we wszystkich wyżej wymienionych przeglądarkach) z późniejszymi
zmianami wprowadzającymi do języka niewielkie nowości i poprawki w składni:
JavaScript 1.6, JavaScript 1.7, JavaScript 1.8, JavaScript 1.8.1 oraz JavaScript 1.8.2.
Prace nad standardem ECMAScript 4 zostały przerwane ze względu na znaczące
różnice w wizji języka wśród jego czołowych twórców oraz nadmierne jego
skomplikowanie.
Opublikowany w grudniu 2009 roku standard ECMAScript 5 wprowadza tryb
ścisły (ang. Strict Mode) – podzbiór języka, który ma zapewnić lepsze sprawdzanie
błędów, zapewnia lepsze wsparcie dla rzeczywistych potrzeb twórców witryn
internetowych, a także wprowadza wiele nowych funkcjonalności takich jak metody
dostępowe (często potocznie nazywane Set i Get, wykorzystywane w programowaniu
obiektowym), wsparcie dla biblioteki JSON oraz pełniejsze wsparcie dla właściwości
obiektów. Opublikowana w połowie 2011 roku poprawka ECMAScript 5.1 zapewnia
pełną kompatybilność wsteczną z poprzednim standardem (ECMAScript 3).
W kolejnych wersjach języka najprawdopodobniej zostanie wprowadzone wsparcie
dla klas (co pozwoli na pełniejsze wdrożenie do języka paradygmatu programowania
obiektowego), system modułów, możliwość deklarowania typu zmiennych (aktualnie
typ zmiennej jest uzależniony od wartości przechowywanej w danym momencie),
generatory i iteratory.
Każdy użytkownik strony internetowej może korzystać z innej przeglądarki
i twórca witryny praktycznie nie ma na to wpływu, co przy takiej mnogości standardów
(10 wersji JavaScript i 9 wersji JScript) często prowadzi do problemów związanych
z kompatybilnością skryptów uruchamianych w różnych przeglądarkach (skrypt
prawidłowo działający w jednej może być niekompatybilny ze wszystkimi bądź częścią
pozostałych przeglądarek). Doprowadziło to do sytuacji, w której twórcy stron
internetowych często są zmuszeni do sprawdzania z jakiej przeglądarki korzysta
użytkownik i pisania fragmentów kodu specjalnie pod każdą z nich. Przykładem takiej
konieczności może być korzystanie z technologii AJAX (Rys. 1.3). Taki stan rzeczy
sprawił, że wielu twórców stron internetowych unika korzystania z języka JavaScript
bądź wykorzystuje tak zwane frameworki zapewniające kompatybilność ze wszystkimi
przeglądarkami i w znacznym stopniu ukrywające różnice w implementacji języka
w poszczególnych przeglądarkach. Odbywa się to jednak kosztem wydajności
wykonywanych skryptów oraz koniecznością pobierania przez klienta dodatkowych,
często obszernych bibliotek, co może się przełożyć na trudności bądź wręcz niemożność
implementacji pewnych typów aplikacji za pomocą języka JavaScript).
Rys. 3. Przykład funkcji JavaScript tworzącej obiekt realizujący połączenia
w technologii AJAX
Podobne problemy związane z różnymi realizacjami przy pracy z językiem
JavaScript są dosyć częste (zwłaszcza w przeglądarkach Microsoftu), ale zgodnie
z zapowiedziami twórców poszczególnych przeglądarek w najbliższym czasie ma się to
zmienić. Microsoft w przeglądarce Internet Explorer 9 w znacznym stopniu poprawił
kompatybilność JScript ze standardem ECMAScript (dotyczy to również pełnej obsługi
technologii HTML i CSS), jednakże wielu użytkowników w dalszym ciągu korzysta ze
starszych
wersji
przeglądarki
zmuszając
tym
samym
twórców
witryn
do
dostosowywania tworzonego kodu do różnych przeglądarek. Coraz częściej mówi się
o konieczności ujednolicenia różnych implementacji standardu aby ułatwić jego
wykorzystanie (takie głosy często pochodzą od samych twórców poszczególnych
przeglądarek). Można mieć nadzieję, że w niedalekiej przyszłości możliwości i sposób
działania poszczególnych implementacji standardu w przeglądarkach internetowych
zostanie w pełni dostosowany do powszechnie obowiązującego standardu, a jedyne
różnice między nimi będą dotyczyły wsparcia dla wersji języka ciągle pozostających
w fazie projektowania oraz wydajności.
4.
Wzorce projektowe
Wzorzec projektowy jest to ogólny, sprawdzony, uniwersalny i powszechnie
uznawany za najlepszy sposób rozwiązania często pojawiającego się problemu
(zagadnienia) przy projektowaniu oprogramowania. Nie jest to gotowe rozwiązanie,
a jedynie ogólny opis i zbiór zaleceń ogólnie opisujących jak należy projektować
poszczególne fragmenty kodu aplikacji aby problem, którego dotyczy dany wzorzec,
rozwiązać w sposób możliwie wydajny, przejrzysty i łatwo modyfikowalny (również
przez innych programistów). Stosowanie wzorców projektowych ułatwia i przyspiesza
pracę całego zespołu. Wzorce projektowe w programowaniu obiektowym (przeważająca
większość wzorców projektowych jest dedykowana dla paradygmatu programowania
obiektowego) zazwyczaj obrazują sposób powiązania ze sobą poszczególnych klas
i obiektów, bez nazywania, czy definiowania ich konkretnych instancji.
Można wyróżnić wiele grup wzorców projektowych, z których każda będzie
dotyczyła różnych zagadnień oraz obejmowała inny zakres aplikacji (od całej aplikacji
aż do funkcjonalności, a nawet pojedynczych klas i obiektów).
Najczęściej wyróżniane grupy to:
•
wzorce konstrukcyjne – opisują proces tworzenia nowych klas i obiektów, ich
zadaniem jest tworzenie, inicjalizacja, konfiguracja i usuwanie obiektów;
•
wzorce strukturalne – opisują strukturę współpracujących ze sobą klas
i obiektów;
•
wzorce czynności – opisują sposób zachowania i funkcje każdego spośród
współpracujących ze sobą obiektów.
Innym sposobem podziału wzorców projektowych jest kategoryzacja ich
w zależności od tego czy dotyczą one klas (wzorce klasowe), czy obiektów (wzorce
obiektowe). Jednoznaczne zakwalifikowanie konkretnego wzorca do pojedynczej grupy
(w przyjętej metodzie klasyfikacji) może okazać się trudne lub wręcz niemożliwe (np.
jeden wzorzec może dotyczyć wykorzystania zarówno klas jak i obiektów), dlatego też
powyższa klasyfikacja jest to tylko umowny sposób grupowania wzorców ułatwiający
rozeznanie się wśród dostępnych możliwości.
Wzorce projektowe znacząco ułatwiają wielokrotne wykorzystanie kodu oraz
współpracę programistów i projektantów, zwłaszcza w dużych projektach, poprzez
wprowadzenie pewnych standardów rozwiązań oraz sposobów tworzenia i grupowania
kodu aplikacji, a tym samym znacząco ułatwiają późniejszą analizę kodu i poprawę
zawartych w nim błędów.
O wzorcach projektowymi w informatyce jako pierwsi mówili Kent Beck oraz
Ward Cunningham, którzy zaczęli eksperymentować nad możliwościami wprowadzenia
gotowych wzorców do programowania a wyniki swojej pracy zaprezentowali na
konferencji OOPSLA (ang. Object-Oriented Programming, Systems, Languages &
Applications) w 1987 roku. Wzorce projektowe zdobyły popularność w połowie lat
90-tych XX wieku po opublikowaniu książki „Inżynieria oprogramowania: Wzorce
projektowe” (ang. „Design Patterns: Elements of reusable Object-Oriented Software”)
przez tzw. Bandę Czterech: Ericha Gamma, Richarda Helma, Ralpha Jonsona i Johna
Vlissidesa.
5.
Podsumowanie
Niniejszy artykuł stanowi krótkie wprowadzenie do problematyki wykorzystania
języka JavaScript w tworzeniu warstwy prezentacji i warstwy funkcjonalnej aplikacji
internetowej, co jest tematem realizowanej pracy magisterskiej. W pracy zostanie
zasadniczo dokonany przegląd i wybór odpowiednich wzorców projektowych oraz ich
implementacja w języku JavaScript.
Literatura
1. Lecky-Thompson E., Elde-Goodman H., Nowicki S. D., Cove A., "PHP
zaawansowane programowanie", Gliwice 2005.
2. Hogan B. P., "HTML5 & CSS3", Dallas United States of America 2010.
3. Goodman D., Morrison M., "JavaScript Bible", Indianapolis United States of
America, 2007
4. Welling L., Thomson L. "PHP i MySQL: Tworzenie stron WWW", Vademecum
Profesjonalisty, wyd. IV Gliwice 2009.
5. Lecky - Thompson E., Eide Goodman H, Nowicki S. D., Cove A. PHP5.
Zaawansowane programowanie, Gliwice 2005.
6. http://en.wikipedia.org/wiki/Software_design_pattern.

Podobne dokumenty