Java

Podstawy

    Przesyłanie programów przez sieć wiąże się z możliwością zainfekowania komputera wirusem. Można by przypuszczać, że Java jest idealnym narzędziem do tworzenia i rozpowszechniania wirusów przez Internet. Na szczęście twórcy tego języka pomyśleli o tym i ograniczyli możliwości apletów, uniemożliwiając im np. wykonywanie operacji wejścia/wyjścia. Dzięki temu użytkownik uruchamiający aplet w przeglądarce zyskuje pewną gwarancję bezpieczeństwa jego systemu.

Cechą charakterystyczną Javy jest brak wskaźników do adresów pamięci, dzięki czemu programowanie staje się nie tylko łatwiejsze, lecz procedury Javy zostały pozbawione możliwości zmiany wartości parametrów. Wyeliminowanie wskaźników uniemożliwia również tworzenie wirusów oraz próby odczytywania zawartości pamięci innych komputerów pracujących w sieci.

Kolejną zaletą Javy jest niezależność apletów od systemu, w którym są uruchamiane. Kompilator Javy nie tworzy typowego kodu maszynowego (specyficznego dla określonego rodzaju procesora), lecz generuje tzw. "pseudokod", który jest interpretowany przez przeglądarkę i tłumaczony na instrukcje zrozumiałe dla komputera, na którym został uruchomiony. Niestety, ceną uniwersalności apletów Javy jest czas ich wykonywania; około 10 razy dłuższy od programów napisanych w języku C++.

   Java stwarza statycznym dotąd stronom WWW nowe możliwości interaktywności w Internecie. Dzięki jej zastosowaniu czytelnicy dokumentów HTML otrzymują pełniejszą kontrolę nad wyglądem odwiedzanych stron. Java bowiem znakomicie współpracuje z językiem formatowania dokumentów - HTML.

Pierwszy program

Tworzenie apletów Javy wymaga zastosowania edytora tekstów, który zapisuje pliki w standardzie znaków ASCII. Za jego pomocą należy utworzyć plik źródłowy o specyficznym rozszerzeniu: nazwa_pliku.java . Kod Twojego pierwszego programu może wyglądać następująco:

import java.awt.*;
import java.applet.*;
public class witaj extends Applet
 {
 public void paint(Graphics g)
	 {
	 g.drawString("Witaj !!!", 5, 25);
	 }
 }

Co po skompilowaniu powinno utworzyć aplet wyświetlający napis "Witaj !!!". Pamiętaj przy tym, aby podczas pisania kodu źródłowego nie pominąć żadnego nawiasu, średnika ani nie zmieniać wielkości liter. Kompilator Javy jest bowiem niezwykle czuły na wielkość znaków w tekście źródłowym. Uruchomienie apletu Javy wymaga utworzenia pliku HTML i umieszczeniu w nim następującego kodu:

   
  
<HTML><TITLE>Pierwszy program Javy</TITLE>
<APPLET code="witaj.class" width="200" height="100"></APPLET>
</HTML>

gdzie element <APPLET>określa nazwę pliku zawierającego aplet oraz rozmiary okna, w którym wyświetlany będzie napis.

Tworzenie programów wymaga umiejętności wykorzystywania bibliotek funkcji dostarczanych wraz z kompilatorem. Uwalnia to programistę od budowania własnych procedur kontrolujących np. mysz czy wykonujących podstawowe operacje graficzne. Zastosowanie funkcji bibliotecznej w swoim aplecie Javy wymaga użycia słowa kluczowego import, które informuje kompilator o nazwie biblioteki zawierającej potrzebną funkcję. Podczas kompilacji kodu źródłowego biblioteka ta zostanie dołączona do apletu. W powyższym przykładzie dołączono biblioteki 'awt', która zawiera procedury obsługi okien (np. wyświetlanie tekstu i grafiki, zmiana rozmiarów okien) oraz 'applet' zawierającą funkcje niezbędne dla przeglądarki.

Zmienne w Javie:

Aplety Javy przechowują niezbędne informacje w zmiennych. Każda zmienna zastosowana w programie musi mieć określony typ, który ustala rodzaj przechowywanych danych. Poniżej prezentuję listę typów zmiennych stosowanych w apletach Javy:

boolean - przechowuje wartości logiczne TRUE lub FALSE;
byte - liczba z zakresu od -128 do 127;
char - pojedyńczy znak;
int- liczba z zakresu od -2 147 483 648 do 2 147 483 647;
float - liczba z zakresu od 1,7 x 10-38 do 3,4 x 1038;
double - liczba z zakresu od 1,7 x 10-308 do 3,4 x 10308;
short - liczba z zakresu od -32 768 do 32 767;
unsigned - liczba z zakresu od 0 do 65 535;

   Przed użyciem zmiennej w aplecie należy ją najpierw zadeklarować, czyli trzeba podać jej nazwę i typ danych, które będzie ona przechowywać; np.:

int age;
float price = 4.95;

przy czym w drugim przypadku zmiennej "price" została przypisana wartość
typu float.

Instrukcje sterujące

   W bardziej złożonych apletach konieczne będzie stosowanie instrukcji sterujących, które ułatwiają tworzenie skomplikowanych procedur. Instrukcje te nie różnią się zbytnio od stosowanych w innych językach programowania (np. C/C++); np.:


if (warunek)
 {
 instrukcja_1;
 instrukcja_2;
 instrukcja_n;
 }
else
 {
 instrucja;
 }
**********************
do
 instrukcja_1;
 instrukcja_n;
while (warunek);
**********************
for (wyrażenie; warunek; wyrażenie)
 {
 instrukcja_1;
 instrukcja_n:
 }

   Zaleca się przy tym w tekście źródłowym stosowania wcięć, dzięki którym łatwiej będzie zrozumieć sposób działania programu.

Funkcje:

   Używanie samych instrukcji sterujących nie jest wystarczającym sposobem budowania programów wykonujących złożone operacje. Dlatego należy dzielić złożoność zadań na odrębne funkcje, które będą realizować pojedyńcze zadania. Kiedy uruchomiony aplet będzie chciał wykonać takie zadanie, wówczas odwoła się do realizującej je funkcji. Jeżeli do wykonania żądanej operacji funkcja potrzebuje dodatkowych informacji, program przekazuje je za pośrednictwem dodatkowych parametrów.
   Java wymaga, aby każda deklaracja funkcji składała się z unikalnej nazwy funkcji poprzedzonej typem zwracanej przez nią zmiennej. Natomiast za nazwę powinna znajdować się lista jej parametrów umieszczona w nawiasach. Instrukcje wykonywane przez funkcję należy objąć klamrami:


typ_zwracanej_wartości nazwa_funkcji (lista parametrów) { instrukcja_funkcji_1; instrukcja_funkcji_2; instrukcja_funkcji_n; }

   Aby wykorzystać zaprojektowaną funkcję, należy wcześniej ją wywołać. Poniższy listing przedstawia sposób wywoływania procedury:


import java.awt.*;
import java.applet.*;
public class SayHello extends Applet
 {
 public void paint(Graphics g)
 {
 SayHello(g);
 }
 public void SayHello(Graphics g)
 {
 g.drawString("Hello World!", 5, 15);
 }
 }

   W tym listingu przeglądarka rozpocznie wykonywanie apletu od wywołania funkcji paint(), która odświeża wpierw okno apletu i wywołuje funkcję SayHello() wyświetlającą tekst. Jednocześnie z wywołaniem funkcja paint() przekazuje funkcji SayHello() zmienną "g", która zawiera kontekst graficzny niezbędny do wyświetlenia komunikatu na ekranie. Kontekst graficzny określa m.in. aktualnie używaną czcionkę, kolor, współrzędne wyświetlanego tekstu itp.
   Napotkanie wywołania funkcji podczas wykonywania apletu Javy spowoduje wykonanie instrukcji zawartych wewnątrz tej funkcji. Po ich wykonaniu nastąpi powrót do miejsca, z którego wywołano funkcję i wykonanie kolejnej instrukcji po tym wywołaniu. Aby wywoływana funkcja mogła zwrócić obliczony wynik, należy podczas jej deklarowania podać typ zwracanej wartości; np. poniższa funkcja zwraca średnią dwóch przekazanych jej liczb:


public float Srednia(int a, int b)
 {
 float result;
 result = (a + b) / 2;
 return(result);
 }

   Zwracana wartość przez funkcję

Srednia() jest typufloatJak widać funkcje w Javie zwracają wynik swojego działania za pomocą słowa kluczowego "return", które przekazując wartość kończy równocześnie działanie funkcji. Funkcja wywołująca może przypisać swojej zmiennej otrzymaną wartość w następujący sposób:

float wynik;
wynik = Srednia(a, b);

Można również bezpośrednio wyświetlić zwróconą wartość na ekranie za pomocą funkcji drawString();

g.drawString("średnia wynosi: " +Srednia(a,b), 2, 25);

   Przy czym należy tu wspomnieć, iż jeśli funkcja nie zwraca żadnej wartości, to podczas jej deklarowania nie określa się typu tej wartości; np.:


nazwa_funkcji (lista parametrów)
             {
              instrukcja_funkcji_1;
              instrukcja_funkcji_2;
              instrukcja_funkcji_n;
             }

Podstawowe funkcje Javy:

   Znaczna większość apletów Javy wykorzystuje podstawowe funkcje biblioteczne, które postaram się teraz zaprezentować.
   Każdy aplet rozpoczyna pracę od wykonywania początkowych instrukcji funkcji init().Służy ona przede wszystkim do zainicjowania wszystkich zmiennych apletu:


 public void init()
 {
 // deklaracje zmiennych;
 }

   Po jej wykonaniu aplet wywołuje funkcję start(),która tworzy wątki apletu zajmujące się wykonywaniem dalszych instrukcji. Poniższa funkcja start() tworzy i uruchamia jeden wątek apletu:


Thread thrWatek = null;
public void start()
 {
 if (thrWatek == null)
 {
 // utwórz wątek
 thrWatek = new Thread(this);
 // uruchom wątek
 someThread.start();
 }
 }

   Rozpoczęcie programu napisanego w języku Java wiąże się z wywołaniem funkcji start(); natomiast jego zakończenie to wywołanie funkcji stop().Jej zadaniem jest zatrzymywanie pracy wątków w żądanej kolejności:


  public void stop()
 {
 if (aniThread != null)
 {
 aniThread.stop();
 aniThread = null;
 }
 }

Takie przypisanie pozwala usuwać z pamięci niepotrzebne obiekty.

   Programy działające w środowisku Windows wywołują specjalną funkcję w celu odświeżania własnych okien (np. podczas minimalizacji i maksymalizacji okna, przesuwania lub zmiany rozmiarów). Zadaniem tej funkcji o nazwie paint();jest m.in. odrysowywanie grafiki w oknie oraz całej pozostałej zawartości. Aplet Javy może odświeżać zawartość własnego okna za każdym razem, gdy mu to nakażemy. Należy w tym celu wywołać funkcję repaint(); która wywołuje funkcję paint();

Wstawianie Apletu w kod HTML:

<APPLET> parametry </APPLET>
Tag pozwala na dołączenie programów (apletów) napisanych w języku JAVA do dokumentów HTML. Tag ma następujące parametry:

  • "położenie" - parametr określa położenie pola wyniku działania apletu w dokumencie HTML i przyjmuje wartości:
    bottom - aplet zostanie umieszczony w aktualnym miejscu tak, że jego krawędź będzie na poziomie podstawy lini
    middle - aplet zostanie umieszczony w aktualnym miejscu centrycznie w stosunku do lini
    - aplet zostanie umieszczony z lewej strony akapitu, natomiast tekst będzie oblewał aplet z prawej strony
    right - aplet zostanie umieszczony z prawej strony akapitu, natomiast tekst będzie oblewał aplet z lewej strony
    top - aplet zostanie umieszczony w aktualnym miejscu tak, że górna jego krawedź będzie na poziomie górnej krawędzi lini
  • "tekst"- parametr pozwala na wyświetlenie tekstu w miejsce apletu Java wtedy gdy używamy przeglądarki nie akceptującej apletów Java lub przeglądarki tekstowej, np:LYNX
  • CODEBASE="URL" - parametr określa miejsce w którym znajduje się aplet
  • CODE="plik" - parametr określa nazwę pliku z apletem, który chcemy dołączyć do dokumentu HTML
  • NAME="nazwa"- parametr określa nazwę apletu
  • HEIGHT="wysokość" - parametr określa wysokość pola w pikselach, w którym będzie wyświetlony aplet
  • HSPACE="n"- parametr ustala odległość tekstu od apletu o n pikseli w lewo i prawo
  • VSPACE="n" - parametr ustala odległość tekstu od apletu o n pikseli w górę i w dół
  • WIDTH="szerokość" - parametr określa szerokość pola w pikselach, w którym będzie wyświetlony aplet
<PARAM>
Tag pozwala na przekazywanie parametrów dla apletu. Tag stosuje się wewnątrz tagu i ma parametry:
  • NAME="nazwa" - parametr określa nazwę przekazywanego parametru
  • VALUE="wartość" - parametr określa wartość przekazywanego parametru apletów