Rozdział 54.
Podstawy języków
Java i JavaScript
Tim Parker
W tym rozdziale:
Co będzie Ci potrzebne?
Język Java
JavaScript i HTML
Zanim rozpoczniemy ten rozdział, wyjaśnijmy jedną rzecz: celem tego rozdziału nie jest nauczyć Cię programowania w języku Java. Temat ten wymagałby o wiele obszerniejszego omówienia. W tym rozdziale chcemy przedstawić koncepcję tego języka, jego zastosowania i niektóre aspekty posługiwania się nim.
Co to jest Java? Jest to język programowania opracowany przez firmę Sun Microsystems. W komunikatach dla prasy był on przedstawiany jako język „prosty, obiektowy, łatwy do zastosowania w systemach rozproszonych, interpretowany, mocny, bezpieczny, niezależny od architektury, przenośny, wydajny, wielowątkowy i dynamiczny”. Co to tak naprawdę oznacza? Zacznijmy od tego, że język Java został zaprojektowany jako język obiektowy prostszy w użyciu niż C++ czy Smalltalk, które są językami bardzo rozległymi i dość skomplikowanymi. Dzięki temu, że język Java jest prosty, jest on również mniej podatny na błędy niż inne języki programowania. To właśnie oznacza prostota i moc tego języka. Niewielki rozmiar przyczynia się również do wzrostu wydajności.
Java jest językiem interpretowanym, co oznacza, że każdy z wierszy kodu źródłowego jest kolejno odczytywany i wykonywany przez interpreter języka Java, nie jest natomiast tworzony nadający się do bezpośredniego uruchomienia plik wykonywalny. W zasadzie sprawa jest nieco uproszczona, ponieważ programy w języku Java są jakby połowicznie skompilowane (ang. pseudo-compiled) i są rozprowadzane w postaci binarnych plików pośrednich - rozszerzenie nazw plików zawierających tego typu kod ma postać .class. Takie rozwiązanie może być nieco wolniejsze niż użycie w pełni skompilowanych plików, ale dzięki użyciu języka niezależnego od platformy sprzętowej (co oznacza, że w kodzie programu nie występują żadne instrukcje specyficzne dla danego sprzętu) kod źródłowy w języku Java może działać w dowolnym systemie wyposażonym w interpreter tego języka. O tym właśnie mówią przymiotniki „niezależny od architektury” oraz „przenośny”. Łatwość zastosowania w systemach rozproszonych wynika bezpośrednio z przenośności i niezależności od architektury - kod źródłowy w języku Java, który ma zostać wykonany, może z łatwością być przesyłany z jednego systemu do innego za pośrednictwem sieci. Dzięki temu serwery mogą wysyłać kod programu do klientów, tworząc system rozproszony (program w języku Java działa po stronie klienta i odsyła wyniki działania do serwera).
Ponieważ programy w języku Java mogą zostać uruchomione praktycznie w każdym systemie operacyjnym, mogą wykorzystywać zalety tychże systemów - na przykład możliwość zastosowania wielowątkowości w systemach UNIX-owych. Choć sam język Java może być uważany za wielowątkowy, w praktyce wszystko zależy od systemu operacyjnego, w którym wykonywany jest program. Pozostało jeszcze bezpieczeństwo tego języka - było ono jednym z celów przyświecających jego twórcom. Potrzebna była metoda bezpiecznego przesyłania danych pomiędzy klientem i serwerem, więc język Java został zaprojektowany tak, by sprostać tym wymaganiom.
Aby zapewnić odpowiednie oprogramowanie po stronie klienta i serwera, odpowiedni komponent języka Java jest dołączany do aplikacji innego typu, głównie do przeglądarek internetowych. Zarówno Microsoft Internet Explorer, jak i Netscape Navigator zawierają interpreter języka Java (w postaci wtyczki, ang. plug-in). Kiedy wykryta zostanie transmisja kodu w języku Java, uruchamiany jest interpreter tego języka obsługujący nadchodzące dane.
JavaScript został wprowadzony na rynek nieco później niż sam język Java. Jest on wbudowany w większość przeglądarek internetowych obsługujących język Java. Poza nazwami, JavaScript i Java nie mają ze sobą wiele wspólnego. Wiele osób uważa, że JavaScript to okrojona wersja języka Java, ale jest to pogląd błędny. JavaScript to swego rodzaju rozszerzenie języka HTML pozwalające na tworzenie interaktywnych stron WWW w systemach o architekturze klient-serwer.
JavaScript ma wiele zastosowań decydujących o jego atrakcyjności - na przykład z jego pomocą można określić, co w danej chwili robi użytkownik. Kiedy opuszcza on stronę WWW albo wybiera któryś z przycisków, klient JavaScript może obsłużyć generowane komunikaty i uruchomić odpowiednie procedury. JavaScript nadaje się również znakomicie do zadań porządkowych i obsługi niektórych aspektów programowania wykraczających poza zakres języka HTML, na przykład obsługi łańcuchów znaków.
Co będzie Ci potrzebne?
Jeśli chcesz tworzyć programy w języku Java, będziesz potrzebował pakietu JDK (Java Development Kit). Zawiera on komplet programów niezbędnych do tworzenia, kompilowania i testowania apletów Javy. Oprócz JDK potrzebna będzie również przeglądarka WWW obsługująca język Java, dzięki której będziesz mógł oglądać efekty swojej pracy. Interpreter języka Java jest zaimplementowany w nowszych wersje przeglądarek Internet Explorer, Netscape Navigator i innych. Firma Sun opracowała również własną przeglądarkę obsługującą ten język, o nazwie HotJava, dostępną na stronach WWW firmy Sun.
|
Pakiet JDK jest dostępny na wielu stronach WWW i w węzłach FTP. Szukanie możesz rozpocząć od strony WWW firmy Sun, pod adresem http://java.sun.com, choć w większości węzłów oferujących oprogramowanie dla Linuxa (na przykład www.blackdown.org) dostępne są odnośniki prowadzące również do innych serwerów oferujących pakiet JDK. Jeśli potrzebna Ci jest przeglądarka WWW obsługująca język Java, zajrzyj na strony firm Netscape lub Microsoft lub na stronę firmy Sun (przeglądarka HotJava). Informacji o innych przeglądarkach i narzędziach wspomagających tworzenie programów w języku Java szukaj na stronach WWW poświęconych systemowi Linux. Jeśli chcesz załadować JDK za pośrednictwem FTP, połącz się z węzłem java.sun.com i przejdź do katalogu /pub, w którym znajdziesz potrzebne pliki. Niestety - jeśli spodziewasz się, że firma Sun wspiera JDK dla Linuxa, będziesz rozczarowany - odmawiają oni wszelkiego rodzaju pomocy. |
Na serwerze firmy Sun dostępne są również inne materiały przydatne przy tworzeniu aplikacji w języku Java, takie jak przykładowe programy, porady czy dokumenty zawierające odpowiedzi na często zadawane pytania. Dokument dostępny pod adresem http://java.sun.com/tutorial/java/index.html zawiera opis języka i jest doskonałym punktem wyjścia do jego nauki. Pakiet Java Development Kit jest darmowy, pod warunkiem, że nie jest wykorzystywany w celach komercyjnych; jeśli jednak zamierzasz publikować strony WWW oparte na języku Java, możesz potrzebować licencji. Szczegółowe informacje rozprowadzane są wraz z JDK.
Jeśli instalujesz JDK, upewnij się, że zainstalowane pliki wykonywalne znajdują się w katalogach wchodzących w skład ścieżki przeszukiwania. Najlepiej utwórz dowiązania do nich w katalogu /usr/bin. Początkujący programiści najczęściej popełniają błędy związane z używaniem klas i z tym, że nie przestrzegają właściwej wielkości liter. W języku Java, podobnie jak w systemach UNIX-owych, wielkość liter ma znaczenie, należy więc zwracać uwagę na ten aspekt tworzenia kodu źródłowego. Rozwiązania dotyczące użycia klas pochodzą z języka C++ i trzeba je opanować. Nie sposób nauczyć się języka Java bez dobrego podręcznika - na szczęście na rynku jest obecnie sporo książek na ten temat.
Jeśli chcesz używać języka JavaScript, będziesz potrzebował przeglądarki potrafiącej go obsłużyć (takiej jak na przykład Netscape Navigator w wersji 3.0 lub wyższej), dowolnego edytora tekstów potrafiącego zapisywać pliki w formacie ASCII i połączenia TCP/IP pozwalającego komunikować się z innymi komputerami w sieci lokalnej czy Internecie.
Język Java
Z punktu widzenia programisty Java jest bardzo okrojonym obiektowym językiem programowania. Język Java jest językiem obiektowym głównie dlatego, że obiektowe metody programowania sprawdzają się przy tworzeniu aplikacji opartych o architekturę klient-serwer. Dzięki temu uniknięto tworzenia struktur charakterystycznych dla języków proceduralnych, powodujących znaczne zwiększenie objętości programów i spowolnienie ich działania. Również dzięki programowaniu obiektowemu można obejść wiele problemów, które wymagałyby tworzenia odpowiednich procedur inicjalizacyjnych. Pozwala to w jeszcze większym stopniu zmniejszyć i przyspieszyć programy w języku Java. Opanowanie tego języka nie jest szczególnie trudne, prawdopodobnie jednak łatwiej będzie Ci zrozumieć panujące w nim reguły, jeśli znasz już jakiś język obiektowy, na przykład C++, ponieważ Java nie ma wiele wspólnego z takimi językami proceduralnymi, jak C czy BASIC.
Java nie jest do końca językiem obiektowym. Język Smalltalk, dla przykładu, uważany jest za język czysto obiektowy, ponieważ każdy jego aspekt opiera się na zastosowaniu obiektów i komunikatów, a wszystkie dane są reprezentowane przez obiekty. Język Java nie jest aż tak „ortodoksyjny”, dzięki czemu tworzone programy mogą być mniejsze. W języku Java proste typy danych dostępne również w języku C (liczby całkowite, rzeczywiste i znaki) są zaimplementowane w sposób nieobiektowy, ale wszystkie inne rozwiązania mają charakter obiektowy. Zaletą takiego rozwiązania jest fakt, że pozwala ono tworzyć mniejsze i szybsze programy.
Jak wspomniano wcześniej, Java jest językiem interpretowanym. Program w tym języku tworzy się tak samo jak w innych językach programowania, następnie przetwarza się go za pomocą swego rodzaju translatora, tworzącego binarny plik pośredni. Plik taki nazywa się klasą i nie nadaje się do bezpośredniego przeglądania, ale może być przesłany szybciej, niż kod źródłowy, na podstawie którego został on wytworzony. Kiedy przeglądarka zawierająca interpreter Javy odbiera plik klasy, uruchamia interpreter, który dekoduje poszczególne instrukcje i wykonuje je. W pewnym sensie Java jest zarówno językiem kompilowanym, jak i interpretowanym, podobnie jak wiele wcześniejszych języków programowania - programy w nich napisane były rozprowadzane w postaci pseudokodu wymagającego do poprawnego działania odpowiednich bibliotek czasu wykonania (kiedyś w taki sposób działało wiele kompilatorów języka Pascal). Program klienta, który dekoduje plik klasy, przeprowadza tłumaczenie ogólnych instrukcji zapisanych w tym pliku na instrukcje specyficzne dla sprzętu i systemu operacyjnego, w którym program ma zostać uruchomiony.
Oswojenie się z programowaniem w języku Java może zabrać dłuższą chwilę. Programy mogą często wydawać się zlepkiem instrukcji z języków C i C++, dlatego doświadczenie w programowaniu w obu tych językach będzie dość pomocne.
Mimo tego, Java jest językiem dość prostym i może być w krótkim czasie opanowana nawet przez użytkowników nie posiadających żadnego doświadczenia programistycznego. Najtrudniejszym aspektem zwykle okazuje się zrozumienie reguł rządzących programowaniem obiektowym i przyzwyczajenie się do nieco dziwnie wyglądającej składni (znanej z języków C i C++). Oto przykład króciutkiego programu w języku Java:
// AhojApp.java
class AhojApp {
public static void main (String args[]) {
System.out.println("Ahoj, przygodo!");
}
}
Powyższy program (nazwany AhojApp) definiuje tylko jedną metodę o nazwie main, która nie zwraca żadnej wartości (void), a jej treścią jest pojedyncza instrukcja powodująca wyświetlenie komunikatu Ahoj, przygodo. Pierwszy wiersz powyższego przykładu jest komentarzem. Jeśli chcesz skompilować powyższy kod źródłowy do pliku klasy, powinieneś uruchomić kompilator javac
javac AhojApp.java
który wygeneruje plik o nazwie AhojApp.class, nadający się do uruchomienia w dowolnej przeglądarce WWW obsługującej język Java lub też za pomocą programu klienta uruchamianego z wiersza poleceń:
java AhojApp
Powyższe polecenie nakazuje interpreterowi załadowanie pliku o nazwie AhojApp. class i uruchomienie go. Ten aplet musi być uruchamiany z wiersza poleceń, jeśli chcesz zobaczyć rezultaty jego działania.
Jak się pewno domyślasz, język Java jest o wiele bardziej złożony niż można by sądzić na podstawie tego przykładu, ale jeśli masz jakieś doświadczenie w programowaniu, zauważysz mnóstwo cech wspólnych z innymi językami (szczególnie takimi jak C i C++). Język Java jest dość bogaty i aby go opanować w pełni być może będziesz potrzebował nawet kilku tygodni, ale mimo wszystko dla większości użytkowników jest on łatwiejszy niż inne języki programowania.
JavaScript i HTML
Polecenia języka JavaScript są osadzane w dokumentach HTML (tworzenie dokumentów w języku HTML omówiliśmy dokładniej w rozdziale 53. „Podstawy języka HTML”) przez otoczenie ich znacznikami <SCRIPT> i </SCRIPT>. Mówiąc najbardziej ogólnie, składnia programu w języku JavaScript osadzonego w dokumencie HTML jest następująca:
<SCRIPT language="JavaScript">
polecenia języka JavaScript
</SCRIPT>
Pole language znacznika <SCRIPT> jest opcjonalne, ale warto je wstawiać by mieć pewność, że program zostanie prawidłowo rozpoznany przez przeglądarkę. Jeśli chcesz załadować skrypt w języku JavaScript podając jego adres URL, również ten adres powinieneś umieścić wewnątrz znacznika <SCRIPT>:
<SCRIPT language="JavaScript" src="http://www.jakis.adres.com">
Jeśli źródło JavaScript jest osadzone w pliku HTML, można pominąć pole src. Oto bardzo prosty przykładowy skrypt osadzony w dokumencie HTML (który również ze względu na przejrzystość przykładu został ograniczony do niezbędnego minimum):
<HTML>
<HEAD>
...
<SCRIPT language="JavaScript">
alert("Witaj na mojej stronie WWW!");
</SCRIPT>
</HEAD>
</HTML>
Funkcja alert() języka JavaScript powoduje wyświetlenie okienka dialogowego zawierającego prócz tekstu piktogram przedstawiający symbol wykrzyknika. Jest ona używana do przyciągnięcia uwagi użytkownika w sytuacjach, gdy podejmowana akcja ma kluczowe znaczenie, jest nieprawidłowa lub może spowodować problemy. Jak widać, funkcje w języku JavaScript wykorzystywane są podobnie jak w języku C. Możliwe jest również umieszczenie treści funkcji w osobnym pliku i odwołanie się do niej w dokumencie HTML.
Jeśli wywołujesz z dokumentu HTML funkcję zapisaną w jakimś innym pliku, powinieneś do jego nazwy dodać rozszerzenie .js. Warto trzymać się tej konwencji, ponieważ niektóre aplikacje (również MIME) potrafią poprawnie rozpoznać i obsłużyć pliki z rozszerzeniem .js.
Niestety, nie mamy do dość miejsca na to, aby zagłębiać się w szczegóły programowania w języku JavaScript - na szczęście na rynku dostępnych jest obecnie wiele książek poświęconych temu tematowi.
Podsumowanie
W tym rozdziale przedstawiliśmy języki Java i JavaScript, oba dostępne dla systemów linuxowych - zarówno w wersji dla serwera, jak i dla klienta. Programowanie w tych językach jest łatwiejsze dla użytkowników mających pewne doświadczenie; ich zastosowanie pozwala znacznie wzbogacić strony WWW i inne dokumenty HTML. Zresztą spróbuj sam - przecież potrzebne oprogramowanie jest darmowe.
Jeśli chcesz dowiedzieć się więcej o języku Perl, doskonale nadającym się do tworzenia skryptów CGI, zajrzyj do rozdziału 28. „Perl”.
Rozdział 26. „Programowanie w języku C” przybliży Ci nieco język C, który również może być wykorzystany do tworzenia skryptów CGI.
Język HTML jest omówiony dokładniej w rozdziale 53. „Podstawy języka HTML”.
Jeśli chcesz zabezpieczyć się przed możliwością utraty wszystkich napisanych przez Ciebie skryptów CGI, zajrzyj do rozdziału 45. „Kopie zapasowe”.
804 Część VII ♦ Konfiguracja węzła internetowego
804 E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\54.DOC
E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\54.DOC 807
Rozdzia³ 54. ♦ Podstawy języków Java i JavaScript 807