LABORATORIUM TEMAT ĆWICZENIA: Wykorzystanie języka programowania JAVA do tworzenia multimedialnych i interaktywnych stron usługi WWW

Wielkość: px
Rozpocząć pokaz od strony:

Download "LABORATORIUM TEMAT ĆWICZENIA: Wykorzystanie języka programowania JAVA do tworzenia multimedialnych i interaktywnych stron usługi WWW"

Transkrypt

1 PROGRAMOWANIE SYSTEMÓW ROZPROSZONYCH TEMAT ĆWICZENIA: Wykorzystanie języka programowania JAVA do tworzenia multimedialnych i interaktywnych stron usługi WWW

2 1. Cel ćwiczenia Celem ćwiczenia jest wprowadzenie osób ćwiczących w zagadnienia dotyczące programowania w języku Java. Język ten moŝe być wykorzystany do tworzenia zarówno samodzielnych aplikacji jak i tak zwanych appletów czyli programów umieszczanych na stronach WWW. Dzięki ćwiczeniu moŝna zorientować się w jaki sposób działają applety, jak moŝna je umieszczać na stronie WWW, jak konfigurować applety a takŝe w jaki sposób wprowadza się obsługę zdarzeń umoŝliwiających interakcyjną pracę z appletumi. 2. Literatura [1] Sieć Internet. [2] Arthur van Hoff, Sami Shaio, Orca Starbuck: Java, Helion, [3] Jason Wehling, Vidya Bharat, and others: Late Night Advanced Java, Ziff-Davis Press, Wykorzystanie języka programowania JAVA do tworzenia stron WWW 2

3 3. Wprowadzenie teoretyczne Język programowania Java powstał w firmie SUN Microsystems. Pierwotnie był on pomyślany jako język oprogramowania dla urządzeń domowych powszechnego uŝytku (telewizory, wideo itp.). Siłą rzeczy musiał więc uwzględniać fakt, Ŝe oprogramowanie napisane dzięki niemu będzie musiało pracować na róŝnym sprzęcie. Rozwiązanie w którym dla kaŝdego sprzętu stosuje się inny język oprogramowania jest oczywiście nieefektywne. Język Java dzięki swym załoŝeniom i budowie doskonale spełnia wymagania, aby oprogramowanie napisane w tym języku mogło być uruchamiane na róŝnym sprzęcie. Taka właściwość oferowana przez język Java okazała się doskonałą cechą do zastosowania na róŝnych platformach sprzętowych współczesnych komputerów. Co więcej, okazało się równieŝ, Ŝe skoro w ogólnoświatowej sieci teleinformatycznej (Internet) stosuje się róŝne komputery to moŝna w niej zastosować oprogramowanie napisane w języku Java, gdyŝ ten język zapewnia nam przenośność oprogramowania na róŝne platformy. W tej chwili język Java wykorzystywany jest w trojaki sposób. Pierwszy z nich polega na stosowaniu języka Java do budowy samodzielnych aplikacji. W takim przypadku naleŝy najpierw napisać źródło programu w Javie a następnie skompilować program do postaci kodu pośredniego. Zastosowanie kodu pośredniego daje moŝliwość stosowania tego samego programu na wielu platformach. Aby uruchomić aplikację zapisaną w postaci kodu pośredniego musimy dysponować interpreterem kodu pośredniego Javy. Takie interpretery powstały dla wielu komputerów i systemów operacyjnych. Interpreter jest odpowiedzialny za przetłumaczenie kodu pośredniego na postać wynikową i uruchomienie aplikacji. Inną filozofią wykorzystania programów zapisanych w języku Java jest budowanie tak zwanych appletów. Są one bardzo podobne do aplikacji napisanych w języku Java z jedną zasadniczą róŝnicą: nie są one samodzielnymi aplikacjami a do ich uruchomienia niezbędny jest specjalny program. Taki program moŝe być samodzielną przeglądarką appletów lub teŝ moŝe stanowić część przeglądarki stron WWW na których moŝna umieścić appletu. Applety wykorzystują te same biblioteki klas co aplikacje. MoŜna więc w prosty sposób (przy zachowaniu ogólnych zasad) zamieniać applety w samodzielne aplikacje i odwrotnie. Trzecim podejściem do programowania w języku Java jest wykorzystanie tak zwanego języka JavaScript. Filozofia ta związana jest nierozerwalnie z wykorzystaniem języka Java w sieci Internet. Ciało programu napisanego w JavaScript jest bezpośrednio zapisywane na stronie WWW. Zadaniem przeglądarki stron WWW jest odpowiednia interpretacja zawartości strony. JavaScript stosuje ograniczony zasób klas i ich metod stosowanych w normalnym języku Java. Java jest językiem zorientowanym obiektowo. W standardowych bibliotekach zdefiniowano wiele klas, które są wystarczające do tworzenia nawet bardzo zaawansowanych aplikacji czy appletów. We współczesnej informatyce większość Wykorzystanie języka programowania JAVA do tworzenia stron WWW 3

4 systemów operacyjnych posiada graficzny styk z uŝytkownikiem. Jest on wykonywany najczęściej w postaci okienek. Język Java posiada zestaw bibliotek, które umoŝliwiają łatwe tworzenie graficznych elementów styku z uŝytkownikiem. Operują one na abstrakcyjnych klasach przez co moŝliwe jest kodowanie w ten sam sposób postaci okienka i jego składowych zarówno dla aplikacji pisanych dla na przykład systemu Windows 95 jak i systemu Solaris stosowanego na UNIX owych stacjach firmy SUN. PoniewaŜ, jak to zaznaczono wcześniej, język Java znajduje szerokie zastosowanie w aplikacjach stosowanych w sieci Internet moŝna znaleźć duŝą bibliotekę klas do obsługi połączeń sieciowych. Applety Javy umieszczane na stronach WWW działają w ten sposób, iŝ w czasie ładowania strony na komputer na którym ma być ona przeglądana przesyłany jest równieŝ plik zawierający kod pośredni appletu wskazywanego przez stronę. Kod pośredni po załadowaniu jest weryfikowany, a następnie wykonywany przy uŝyciu interpretatora stanowiącego składową przeglądarki stron WWW. Sytuacja taka została przedstawiona na Rys. 1. Z takim działaniem appletu wiąŝe się nieodłącznie pojęcie bezpieczeństwa. Skoro programy Javy są wykonywane na komputerze osoby przeglądającej strony WWW, a dodatkowo mają bardzo rozbudowany mechanizm sieciowy to przy dostępie do zasobów systemowych komputera mogą narobić wiele szkody. Dlatego teŝ, na applety Javy nakłada się wiele ograniczeń i poddaje się je weryfikacji zanim zostaną uruchomione. Zagadnienia bezpieczeństwa przy korzystaniu z mechanizmów Javy są w dalszym ciągu przedmiotem badń i rozwoju. MoŜna jednak powiedzieć, Ŝe na obecnym etapie bezpieczeństwo to jest wielokrotnie większe niŝ przy stosowaniu techniki ActiveX firmy Microsoft. (Technika ActiveX umoŝliwia równieŝ tak jak Java osadzanie elementów aktywnych na stronach WWW). Rys. 1. Przekazywanie kodu appletu Inną przyczyną, dla której stosuje się applety Javy na stronach WWW jest urozmaicenie stron usługi WWW. Applety Javy wzbogacają strony nie tylko o efekty multimedialne, ale takŝe wprowadzają elementy interaktywności. Applety Javy mogą reagować na wciśnięcie klawiszy czy ruchy myszki, a tym samym aktywnego uczestniczenia w przeglądaniu informacji. Właśnie ta cecha języka Java plus moŝliwość bezpiecznego uruchamiania appletów praktycznie na dowolnym komputerze w sieci stanowi o jego przewadze nad innymi technikami. 4. Ogólne informacje dotyczące pracy w środowisku Javy Osoby ćwiczące przed przystąpieniem do wykonania ćwiczenia powinny zapoznać się ze składnią języka Java, a takŝe z klasami dostępnymi w standardowych Wykorzystanie języka programowania JAVA do tworzenia stron WWW 4

5 bibliotekach tego języka. W tym miejscu zaznaczono tylko najniezbędniejsze informacje potrzebne do wykonania ćwiczenia. Osadzanie appletu na stronie WWW W ćwiczeniu przedstawiono prosty przykład animacji, która moŝe być wykonana przy uŝyciu języka Java. Animacja jest wykonywana przez applet, który naleŝy wywołać na stronie WWW. Osadzenie appletu na stronie WWW jest moŝliwe po zastosowaniu następujących kodów sterujących: <APPLET > CODE = nazwa_appletu.class (Nazwa pliku zawierającego skompilowany applet. Obowiązkowy) WIDTH HEIGHT = ile_pikseli (Szerokość appletu na ekranie. Obowiązkowy) - ile_pikseli (Wysokość appletu na ekranie. Obowiązkowy) CODEBASE = adres_url (Określa adres URL appletu. Jeśli ten atrybut nie występuje przyjmuje się domyślnie adres dokumentu z którego applet jest wywoływany. Nieobowiązkowy) ALT ALLIGN VSPACE HSPACE </APPLET> Konfigurowanie appletu = tekst alternatywny (Tekst, który zostanie wyświetlony na przeglądarkach nie obsługujących appletów Javy. Nieobowiązkowy) = połoŝenie_appletu (Określa gdzie na stronie WWW będzie znajdował się applet. MoŜliwe wartości to: LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM, ABSBOTTOM. Nieobowiązkowy) = ile_pikseli (Określa ile wolnej przestrzeni pozostanie w pionie wokół appletu. Nieobowiązkowy) = ile_pikseli (Określa ile wolnej przestrzeni pozostanie wokół appletu w poziomie. Zarówno ten jak i powyŝszy atrybut działają, gdy atrybut ALLIGN równa się LEFT lub RIGHT). Nieobowiązkowy JeŜeli applet jest konfigurowalny wtedy do appletu moŝna przekazać pewne wartości, które mogą być następnie przypisane zmiennym programu. W takiej sytuacji pomiędzy kodami sterującymi <APPLET></APPLET> powinna znaleźć się sekwencja linii: Wykorzystanie języka programowania JAVA do tworzenia stron WWW 5

6 <PARAM NAME = nazwa_parametru VALUE = wartość_parametru > Linii tych powinno być tyle ilu parametrom chcemy nadać określone wartości. W dobrze napisanym applecie, w momencie kiedy linia z danym parametrem nie występuje przy wywołaniu appletu, zmienna powinna przyjmować wartość domyślną. Wartość parametru odczytywana jest w applecie jako zmienna typu łańcuchowego (String). NaleŜy więc pamiętać aby przy nadawaniu wartości zmiennym liczbowym zmienić zmienną łańcuchową na liczbę. W programie do odczytania wartości określonego parametru słuŝy metoda obiektu klasy Applet - getparameter: String zmienna = getparameter ( nazwa_parametru ); Zmiana kodu źródłowego Składnia programów źródłowych napisanych w języku Java jest bardzo zbliŝona do składni jeŝyków C/C++. Osoby zaznajomione z tymi językami i programowaniem obiektowym nie powinny mieć problemów z pisaniem oprogramowania w Javie. W przykładowym programie deklarowane są zmienne zarówno typów prostych jak i strukturalnych (obiekty, tablice obiektów). Jak moŝna zauwaŝyć składnia ta nie odbiega od składni znanej z języków C/C++. W związku z tym osoby ćwiczące nie powinny mieć problemów ze zmianą kodu programu w zaznaczonych miejscach tak by spełnić warunki ćwiczenia. Applet, poniewaŝ nie jest samodzielną aplikacją, posiada metody wywoływane automatycznie. Są to metody init (), start (), stop (), i destroy (). Przechodzenie od metody do metody w czasie Ŝycia appletu przedstawia Rys. 2. Rys. 2. Cykl Ŝycia appletu Applet posiada równieŝ metodę paint (), która jest odpowiedzialna za wyświetlenie appletu na ekranie. Obsługa zdarzeń Obsługa zdarzeń związanych z ruchem myszki polega na dodaniu metody obsługującej dane zdarzenie. W ogólności metoda taka wygląda następująco: boolean mousezdarzenie (Event e, int x, int y) /*** kod obsługi zdarzenia ***/ return true; Wykorzystanie języka programowania JAVA do tworzenia stron WWW 6

7 Zdarzenie w nazwie metody moŝe wskazywać na wejście kursora myszki w obszar komponentu (appletu) - wtedy przyjmuje wartość Enetr. MoŜe równieŝ wskazywać na przesunięcie kursora myszki wewnątrz appletu i wtedy zamiast Zarzenie naleŝy wpisać Move. Większa liczba zdarzeń opisana jest w literaturze dotyczącej języka Java. Edycja i kompilacja Do edycji programu napisanego w Javie moŝna uŝyć dowolnego edytora tekstu, który nie generuje dodatkowych znaków sterujących. W systemie DOS moŝna skorzystać z edytora programu Norton Commander. Pod Windows moŝna korzystać na przykład z Notatnika. Do napisania programu w Javie moŝna wykorzystać takŝe edytory zintegrowanych środowisk programistycznych słuŝących do budowania aplikacji Javy. Środowiska takie to Symantec Cafe, Microcoft Visual J++ czy Java Workshop firmy SUN. Kompilacja programu w tych środowiskach odbywa się po wybraniu odpowiedniej opcji. JeŜeli ćwiczący nie będą korzystali z tych udogodnień pozostaje im do wykorzystania kompilator Javy dostarczany w pakiecie Java Development Kit (jdk). Plik zawierający kod źródłowy Javy kompiluje się w trybie MS-DOS z wykorzystaniem polecenia: C:> javac nazwa_pliku.java Zgodnie z wymogami języka Java nazwa_pliku musi być taka sama jak nazwa obiektu klasy Applet. W związku z tym, dla przykładu zawartego w tej instrukcji nazwa_pliku musi być zastąpiona przez Animacja. Po kompilacji powstaje plik zawierający kod pośredni. Będzie on nosił nazwę (dla przykładu z ćwiczenia) Animacja.class. Rozszerzenie class jest charakterystyczne dla plików zawierających kod pośredni. Aby obejrzeć appletu naleŝy uruchomić przeglądarkę stron WWW, która posiada moŝliwość uruchamiania appletów Javy. MoŜna równieŝ skorzystać z przeglądarki appletów dołączonej do pakietu jdk. Jest to program appletviewer. Załadowanie appletu do przeglądarki wygląda następująco: C:> appletviewer plik.html Argumentem wywołania jest w tym wypadku strona WWW, na której osadzono appletu, którego zamierza się oglądać. RównieŜ w przypadku korzystania z przeglądarki stron WWW naleŝy do niej załadować stronę WWW, na której osadzono appletu. Przy korzystaniu ze zintegrowanego środowiska do tworzenia appletów Javy do ich obejrzenia naleŝy wybrać opcję uruchomienia appletu. 5. Przebieg ćwiczenia: 1. Przygotować, przy pomocy programu do tworzenia lub obróbki plików graficznych pliki z imionami i nazwiskami osób ćwiczących. Pliki przygotować Wykorzystanie języka programowania JAVA do tworzenia stron WWW 7

8 w formacie gif. Plikom tym nadać jednolite nazwy z rozróŝnieniem numeru pliku na ostatnich dwóch pozycjach - na przykład: obrazek0001.gif obrazek0002.gif, itd. 2. Zanalizować dołączony wydruk programu. Na podstawie analizy określić jakie parametry appletu mogą być konfigurowane i jakie wartości mogą być przypisane tym parametrom. 3. Na podstawie punktu drugiego utworzyć strony WWW, na których będzie umieszczony applet (o rozmiarach pikseli). Na stronach powinien być umieszczony applet, którego wydruk znajduje się na końcu instrukcji. Na róŝnych stronach do appletu powinny być przekazywane róŝne parametry. 4. Przepisać źródło appletu dołączonego do tej instrukcji w dowolnym edytorze nie generującym dodatkowych znaków sterujących (na przykład Norton Commander). 5. Skompilować appletu. JeŜeli kompilacja się nie powiodła to naleŝy poprawić błędy i uruchomić ponownie kompilator. Procedurę powtarzać tak długo dopóki program nie zostanie skompilowany bez błędów. 6. Uruchomić przeglądarkę stron WWW z moŝliwością obsługi appletów napisanych w języku Java. 7. Załadować do przeglądarki stron WWW, po kolei strony utworzone w punkcie trzecim przebiegu ćwiczenia. 8. Zaobserwować zmiany zachowania się appletu w zaleŝności od róŝnych parametrów. JeŜeli applet nie uruchamia animacji oznacza to, iŝ zostały źle przekazane parametry do appletu. NaleŜy w takim przypadku sprawdzić parametry zdefiniowane na stronie WWW, a w szczególności te z nich, które odnoszą się do nazw plików graficznych i ich liczby. 9. Po analizie programu źródłowego wprowadzić takie zmiany aby umoŝliwić konfigurację kolejnego parametru appletu. (Wybrać dowolny parametr, ale taki, który da się konfigurować). 10. Skompilować program i po usunięciu ewentualnych błędów obejrzeć zachowanie się appletu po wprowadzeniu zmian. 11. Po analizie programu źródłowego wprowadzić do niego zmiany, które zmienią sposób wyświetlania plików graficznych w czasie animacji. Zmiany te powinny doprowadzić do Wykorzystanie języka programowania JAVA do tworzenia stron WWW 8

9 Przesuwania w poziomie pliku graficznego zawierającego imię pierwszej z ćwiczących osób. W tym samym czasie w pionie powinien być przesuwany plik graficzny zawierający nazwisko osoby ćwiczącej. Po zniknięciu z pola widzenia obydwu plików, o których mowa powyŝej, naleŝy powtórzyć animację z plikami zawierającymi imię i nazwisko kolejnej ćwiczącej osoby. Powtórzyć animację dla wszystkich członków grupy ćwiczeniowej. Po wykonaniu animacji dla ostatniej osoby rozpocząć procedurę animacji od początku. 12. Skompilować program i po usunięciu ewentualnych błędów obejrzeć zachowanie się appletu po wprowadzeniu zmian. 13. Po analizie programu źródłowego wprowadzić zmianę polegającą na dodaniu reakcji apleta na kliknięcie myszą w obrębie appletu. Applet powinien wstrzymywać swoje działanie. 14. Skompilować program i po usunięciu ewentualnych błędów obejrzeć zachowanie się appletu po wprowadzeniu zmian. W sprawozdaniu z przebiegu ćwiczenia powinny się znaleźć: 1) Wydruk utworzonych w trakcie zajęć stron WWW. 2) Końcowy wydruk programu źródłowego appletu. 3) Spis wszystkich plików niezbędnych do uruchomienia appletu. 4) Opis początkowych parametrów przekazywanych do appletu oraz opis zachowania się appletu w reakcji na róŝne wartości parametrów. 5) Opis parametru, który został zdefiniowany przez ćwiczących wraz z opisem reakcji appletu na róŝne wartości tego parametru. 6) Opis wprowadzonych zmian dotyczących animacji. 7) Opis zmian prowadzących do interaktywnej pracy appletu. 8) Odpowiedzi na ewentualne pytania prowadzącego. Wykorzystanie języka programowania JAVA do tworzenia stron WWW 9

10 6. Program źródłowy appletu import java.applet.*; import java.awt.*; public class Animacja extends Applet implements Runnable /********************* Stałe appletu *******************************/ static int max_img = 20; //stałą zmienić tylko w przypadku, //gdy liczba obrazków do wyświetlenia //jest większa /**************** Zmienne typów prostych appletu *******************/ boolean loaded = false; //zmienna wskazująca czy załadowano //wszystkie obrazki do wyświetlenia int cur, ile; //zmienna wskazująca numer kolejnego //wyświetlanego obrazka //zmienna wskazująca ile faktycznie //obrazków będzie wyświetlanych //w czasie animacji /*************** Zmienne strukturalne appletu **********************/ String katalog, //zmienna wskazująca nazwę katalogu //w którym przechowywane są obrazki //do wyświetlania nazwa, //zmienna wskazująca początek nazw //plików z obrazkami rozszerzenie; //zmienna wskazująca rozszerzenie //plików graficznych Thread runner = null; //wątek animacji Image[] img = new Image [max_img]; Image osimg; Graphics osg; //tablica obrazków do animacji //tło animacji //obiekt graficzny na którym tworzona //jest animacja /********************* Zmienne uŝytkowników ************************/ int x = 0, y = 0; /********************** Konstruktor appletu ***********************/ public Animacja () setlayout (new BorderLayout ()); setfont (new Font ("Dialog", Font.BOLD Font.ITALIC, 20)); Wykorzystanie języka programowania JAVA do tworzenia stron WWW 10

11 add ("North", new Label (" Rozproszonych")); Laboratorium Programowania Systemów /********** Zainicjowanie zmiennych przy ładowaniu apleta **********/ public void init () String rs; rs = getparameter ("Ile_obrazków"); if (rs == null) ile = max_img; else ile = Integer.parseInt (rs); rs = getparameter ("Pierwszy_obrazek"); if (rs == null) cur = 0; else cur = Integer.parseInt (rs); String autorzy = getparameter ("Autorzy"); if (autorzy == null) autorzy = "A któŝ to napisał!!!"; add ("South", new Label (autorzy)); katalog = getparameter ("Katalog"); if (katalog == null) katalog = "obrazki"; nazwa = getparameter ("Nazwa"); if (nazwa == null) nazwa = "obrazek00"; rozszerzenie = getparameter ("Rozszerzenie"); if (rozszerzenie == null) Wykorzystanie języka programowania JAVA do tworzenia stron WWW 11

12 rozszerzenie = "gif"; Dimension d = size (); resize (d.width, d.height - 40); osimg = createimage (this.size ().width, this.size ().height); osg = osimg.getgraphics (); /************* Uruchomienie nowego wątku przy starcie apleta *******/ public void start () if (runner == null) runner = new Thread (this); runner.start (); /***************** Zatrzymanie wątku przy zatrzymaniu apleta *******/ public void stop () if (runner!= null) runner.stop (); runner = null; /*********************** Uruchomienie animacji *********************/ public void run () int i; if (! loaded) repaint (); MediaTracker mt = new MediaTracker (this); /**** Załadowanie obrazków do animacji do tablicy ******/ for (i = 1; i <= ile; i ++) String strimage = katalog + "/" + nazwa + ((i < 10)? "0" : "") + i + "." + rozszerzenie; img [i - 1] = getimage (getdocumentbase (), strimage); mt.addimage (img [i - 1], 0); Wykorzystanie języka programowania JAVA do tworzenia stron WWW 12

13 try mt.waitforall (); loaded =!mt.iserrorany (); catch (InterruptedException e) if (! loaded) stop (); (getgraphics ()).drawstring ("Error loading images!", 10, 40); return; repaint (); while (true) try repaint (10); catch (InterruptedException e) stop (); /******** Metoda do której uŝytkownik wpisuje kod animacji *********/ public void displayimage (Graphics g) /********* Bez zmian **********/ if (! loaded) return; /******** Koniec bez zmian ****/ /********Ten kod naleŝy zmienić *****/ Dimension d = size (); int w = d.width / 10; int h = d.height / 10; int Krok_poziomy = d.width / 50; int Krok_pionowy = d.height / 50; Wykorzystanie języka programowania JAVA do tworzenia stron WWW 13

14 if (x >= d.width) x = 0; if (y >= d.height) y = 0; x = x + Krok_poziomy; y = y + Krok_pionowy; osg.drawimage (img [cur], x, (d.height / 2), w, h, this); osg.drawimage (img [cur], (d.width / 2), y, w, h, this); osg.setcolor (Color.yellow); osg.filloval (150 + Krok_poziomy, Krok_pionowy, 50, 50); osg.setcolor (Color.red); for (int i = 0; i < 10; i ++) osg.filloval ((int) (Math.random () * d.width), (int) (Math.random () * d.height), 5, 5); /********* Bez zmian **********/ cur ++; if (cur == ile) cur = 0; /******** Koniec bez zmian ****/ /******************* Metoda odświeŝająca applet ********************/ public void update (Graphics g) paint (g); /************ Metoda powodująca wyrysowanie appletu na ekranie *****/ public void paint (Graphics g) if (loaded) osg.setcolor (new Color (0, 100, 0)); osg.fillrect (0, 0, this.size ().width, this.size ().height); displayimage (g); g.drawimage (osimg, 0, 0, this); Wykorzystanie języka programowania JAVA do tworzenia stron WWW 14

15 else g.drawstring ("Loading images...", 10, 20); /******* Tu wpisać metodę do obsługi zdarzenia (ruchu myszki) ******/ Wykorzystanie języka programowania JAVA do tworzenia stron WWW 15