Blog literacki, portal erotyczny - seks i humor nie z tej ziemi
Co warto
wiedzieć o Javie przed przystąpieniem do pisania programu ?
Wstęp
Narzędzia potrzebne
do pisania w Javie
Zawartosć
pakietu Java Developers Kit
Co to jest Hot Java?
Pakiety Javy
Zaczynamy pisanie
Zdarzenia
Deklaracja appletu w dokumencie
HTML
Typowa strukrura appletu
Wstęp
Java to nowoczesny, w pełni obiektowy język programowania, dziedziczący
wszystkie pozytywne cechy technologii obiektowej i pozwalający na płynne
przejście z etapu projektowania obiektowego do etapu pisania programu.
Tworzenie aplikacji odbywa się w kategoriach klas, obiektów, interfejsów
i pakietów. Klasa to definicja (szkielet) obiektu, określająca typy atrybutów
i metody (w podejściu strukturalnym zmienne i procedury). Obiekt to konkretny
egzemplarz danej klasy, dzięki któremu (za pośrednictwem wywołania dostępnych
metod) przeprowadzamy proces przetwarzania danych programu. Java pozwala
na definiowanie tzw. klas abstrakcyjnych, służących jedynie jako klasy
bazowe, które nie pozwalają na tworzenie obiektów. Wykorzystanie klas abstrakcyjnych
jest uzasadnione w przypadku programów zawierających wiele klas o podobnej
strukturze. (np. dla klas samochód_osobowy, samochód_dostawczy i samochód_sportowy
budujemy klasę bazową w postaci klasy abstrakcyjnej samochód). Uproszczoną
formą klasy abstrakcyjnej jest interfejs, dzięki któremu deklarujemy metody,
które zostaną zaimplementowane przez inne klasy. Zrezygnowano z mechanizmu
wielokrotnego dziedziczenia, który może być zastąpiony przez odpowiednie
użycie klas abstrakcyjnych i interfejsów. Podobnie jak w języku Ada wprowadzono
pojęcie pakietu. Grupowanie klas i interfejsów w pakiety znacznie zwiększa
czytelność kodu źródłowego programu. Po przeprowadzeniu kompilacji programu,
każda klasa umieszczana jest w oddzielnym pliku, dzięki czemu modyfikacja
jednej klasy nie pociąga za sobą rekompilacji pozostałych fragmentów programu,
w których występują odwołania do tej klasy. Wprowadzono spójny system podstawowych
typów danych. Dla programistów C/C++ ważną wydaje się być informacja, iż
Java nie zawiera typów danych: pointer, struct i union. Typy te mogą być
z powodzeniem zastąpione poprzez odpowiednie użycie klas i obiektów. Usunięcie
instrukcji goto całkowicie wymazuje wspomnienia o niestrukturalnych technikach
tworzenia oprogramowania.
Narzędzia
potrzebne do pisania w Javie
na początek
Do tworzenia appletów Javy jest potrzebny specjalny program zwany kompilatorem,
który przekształca instrukcje Javy, zrozumiałe dla człowieka, na tzw. bytecode
(kod bajtowy, kod wirtualny), czyli zera i jedynki, zrozumiałe dla przeglądarki.
Jesli się zamierza tworzyć programy w języku takim jak C++, trzeba kupić
kompilator tego języka u jego dystrybutora. Inaczej ma się rzecz z kompilatorem
Javy - Java Developers Kit, który można przekopiować bezpłatnie,
korzystając z internetu, a konkretnie ze strony WWW firmy sun o adresie:
http://java.sun.com. Strona ta pozwala
uzyskać wersje Javy przeznaczone dla systemów Windows 95, Windows NT (ale
nie ma wersji dla Windows 3.x !!!), Macintosha oraz systemów opartych
o UNIX (także wersję dla LINUX-a). Co najważniejsze Java Developers Kit
jest stale aktualizowany. Pozwala to korzystać z najnowszych wersji pakietu
bez ponoszenia dodatkowych opłat.
W zależnosci od rodzaju wersji kopiowanego pakietu Java Developers Kit
czynnosci, które trzeba wykonać w celu jego zaintalowania, różnią się od
siebie. Jednak na stronie WWW firmy Sun można znaleźć instrukje wyjasniające
krok po kroku przebieg instalacji pakietu dla danego rodzaju systemu.
Zawartosć
pakietu Java Developers Kit
na początek
W skład Java Developers Kit wchodzi kompilator Javy, którego można używać
do tworzenia appletów. Oprócz tego w pakiecie tym można znaleźć kilka programów
narzędziowych, tskich jak Applet Viewer, unożliwiający uruchamianie i wyswietlanie
appletów, debuger, pomagający znajdować i usuwać błędy w tworzonych appletach,
a także tak zwany generator dokumentów, upraszczający przygotowywanie dokumentacji
programów. Poniżej zestawiono kilka wybranych programów zawartych w pakiecie
Java Developers Kit.
Program
Zastosowanie
java
Interpreter Javy, pozwalający uruchamiać samodzielnie programy
javac
Kompilator Javy.
javadoc
Generator dokumentów Javy.
javah
generator plików C, tworzący pliki nagłówkowe oraz pliki źródłowe zawierające
tekst potrzebny do definiowania klas.
javap
Disasembler Javy.
jdb
Debuger Javy.
Oprócz kompilatora i programów narzędziowych Java Developers Kit zawiera
wiele przykładowych appletów, których tekst źródłowy warto analizować po
tp, aby pogłębić swoją znajomosć Javy.
Co to jest Hot Java?
na początek
Wielu użytkowników nie znających języka programowania Java myli go często
z Hot Javą, przeglądarką napisana w Javie.Krótko mówiąc, Java jest językiem
programowania używanym przez programistów do tworzenia programów i appletów,
podczas gdy Hot Java jest przeglądarką, taką samą, jak na przykład Netscape
Navigator. Tym co decyduje o niepowtarzalnosci Hot Javy, jest fakt, że
zostałą ona w całosci napisana w Javie. Kiedy rozpoczniesz testowanie tworzonych
appletów Javy, możesz uruchomić Hot Javę, gdyż firma Sun pozwala na jej
przekopiowanie ze swojej strony WWW.
Pakiety Javy
na początek
Mocną stroną Java są bogate biblioteki. Podstawowe pakiety, których
metody mogą zostać wykorzystane w trakcie tworzenia oprogramowania to:
java.lang
pakiet zawierający podstawowe klasy Java
(automatycznie importowany do każdego programu);
java.applet
pakiet pozwalający na tworzenie apletów
(ang. applet);
java.awt
(AWT - Abstract Window Toolkit) zintegrowany
pakiet klas przeznaczony do wspomagania tworzenia interfejsu graficznego
użytkownika
java.awt.peer
pakiet zawierający wyspecjalizowane dla
konkretnej platformy komponenty AWT
java.awt.image
pakiet przeznaczony do zarządzania i obróbki
obrazu
java.io
pakiet zawierający klasy pozwalające na
zarządzanie wejściowym i wyjściowym strumieniem danych (np. pisanie do
pliku)
java.net
pakiet wspomagający tworzenie programów
sieciowych (adresy URL, gniazdka TCP i UDP, adresy IP, ... )
java.util
pakiet świadczący inne usługi (np. generacja
liczb losowych, operacje na ciągach znaków, ...)
Zaczynamy
pisanie programu.
na początek
Najpowszechniejszą formą wykorzystania języka Java jest pisanie apletów
(ang. applet). Aplet to program, którego uruchomienie na określonej
platformie wymaga instalacji tzw. wirtualnej maszyny Java. Kod źródłowy
apletu nie podlega kompilacji do kodu wewnętrznego maszyny - aplet kompilowany
jest do postaci kodu pośredniego bytecode. Wirtualna maszyna
Java to nic innego jak interpreter tego kodu. Dzięki takiemu podejściu
aplety są całkowicie niezależne od przyjętej platformy sprzętowej i systemu
operacyjnego. Dystrybucja programów Java w sieci Internet odbywa się poprzez
wplatanie apletów do dokumentów HTML. Warunkiem oglądania efektu dołączenia
apletu do strony HTML jest posiadanie przeglądarki WWW, wyposażonej w interpreter
kodu pośredniego bytecode (np. Netscape Navigator 2.01 -
wersja dla Windows 95). Oprócz możliwości wywołania apletu na określonej
stronie, możemy także dokonać przekazania dowolnej ilość parametrów, określających
jego sposób działania. Oznacza to zatem, że jesteśmy w stanie tworzyć programy
uniwersalne. Niezwykle istotnym faktem jest brak dodatkowych wymagań względem
serwera WWW - cały ciężar realizacji apletu spoczywa na naszej, pracujacej
lokalnie przeglądarce WWW. Interpreter bytecode, pracuje w określonym
środowisku, zawierajacym szereg wykonywalnych programów, tworzących w pewnym
sensie bibliotekę klas Javy typu run-time. Dzieki temu, niekiedy
skomplikowane operacje mogą być wykonane za pomocą apletu zawierającego
kilka linii kodu.
Wszystkie aplety tworzone są jako klasy potomne klasy bazowej Applet.
Java jest szczególnie dogodnym narzędziem do przeprowadzania prezentacji
audiowizualnych. Klasa AudioClip dostarcza prostego mechanizmu odtwarzania
dźwięku.
AudioClip X; /* deklaracja obiektu klasy AudioClip */
X=getAudioClip(getDocumentBase(),./melodia.au); /* inicjalizacja
obiektu */
/* sterowanie odtwarzaniem dźwięku */
X.play();
X.loop();
X.stop();
W równie prosty sposób dokonujemy wyświetlania obrazów graficznych.
Image Y; /* deklaracja obiektu klasy Image */
Y=getImage(getCodeBase(),./obrazek.gif); /* inicjalizacja
obiektu */
public void paint(Graphics g)
{
...
/* wyświetla obraz (lewy górny róg w punkcie o współrzędnych
(10,60) */
g.drawImage(Y,10,60,this);
...
}
Przeprowadzenie prostej animacji sprowadza się to inicjalizacji wątku
(ang. thread) i wielokrotnego wyświetlania różnych obrazów graficznych
w tym samym miejscu ekranu.
Zdarzenia
na początek
Jak już wspomniałem wcześniej, Java pozwala na tworzenie w pełni interakcyjnych
aplikacji. Język oferuje znaczne udogodnienia w zakresie realizacji mechanizmu
odpowiedzi programu na zdarzenia wywołane przez określone działania użytkownika
(np. naciśnięcie przycisku myszki, w określonym polu ekranu, spowoduje
odtwarzanie dźwięku). Wyróżniamy zdarzenia niskiego i wysokiego poziomu.
Zdarzenia niskiego poziomu postrzegamy w kategoriach sprzętowych (np. fakt
naciśnięcia przycisku myszki). Mówiąc o zdarzeniach wysokiego poziomu,
mamy na myśli wszelkie działania użytkownika dokonywane na elementach interfejsu
graficznego programu (np. wpisanie tekstu w pole TextField). Kluczową rolę,
w odniesieniu do zagadnienia obsługi zdarzeń, odgrywa klasa Component
(pakiet AWT). Metody tej klasy pozwalają na przeprowadzenia sprawnej
reakcji systemu na wymuszenia użytkownika, a ich wykorzystanie sprowadza
się do dostosowania określonej metody do specyfiki programu. Metoda handleEvent()
jest najbardziej ogólną z nich i umożliwia na implementację obsługi niemal
każdego zdarzenia, jednak stosowanie jej wymaga od programisty dobrej znajomości
środowiska pracy programu. Użycie handleEvent() w przypadku aplikacji,
w których szczególnie zależy nam na poprawności pracy programu, może okazać
się zbyt ryzykowne, dlatego też istnieje zestaw prostych w zastosowaniu
metod, dedykowanych do obsługi tylko jednego, konkretnego zdarzenia:
mouseMove() - obsługa myszki
mouseDown()
mouseDrag()
mouseUp()
mouseEnter()
mouseExit()
keyUp() - obsługa klawiatury
keyDown()
getFocus()
lostFocus()
Na uwagę zasługuje także metoda action(), umożliwiająca realizację
obsługi zdarzeń wysokiego poziomu i zdarzeń warunkowych (np. równoczesne
naciśnięcie przycisku myszki i klawiatury). Każda z wymienionych powyżej
metod powinna posiadać przynajmniej jeden argument wywołania - obiekt Event.
Egzemplarz klasy Event tworzony jest automatycznie, wraz z wystąpieniem
dowolnego zdarzenia. Podstawowym zadaniem tego obiektu jest gromadzenie
danych o rodzaju zaistniałego zdarzenia, czasie jego wystąpienia, obiekcie
którego dotyczyło (np. zdarzenie wciśnięcia przycisku GUI odnosi
się do obiektu Button), itp. . Event stanowi bazę informacyjną
dla mechanizmu odpowiedzialnego za prowadzenie prawidłowej reakcji programu
na działania użytkownika.
Deklaracja
apletu w dokumencie HTML
na początek
<applet [parametry] > początek bloku deklaracji
[parametry]:
name="N" - lokalna nazwa programu w ramach dokumentu
HTML
code="C" - rzeczywista nazwa programu
codebase="B" - adres URL programu (nazwa serwera/katalog)
ALT="T" - tekst wyświetlany w razie braku możliwości uruchomienia
programu
align ="A" - miejsce wyświetlania programu względem sąsiadującego
tekstu: top , texttop , bottom , absbottom
, baseline , middle , absmiddle , left , right
.
width="W" - szerokość obszaru przydzielonego do wyświetlania
programu (na stronie HTML)
height="H" - wysokość obszaru przydzielonego do wyświetlania
programu (na stronie HTML)
vspace="V" - odległość od sąsiadującego tekstu w pionie
hspace="S" - odległość od sąsiadującego tekstu w poziomie
parametry określające działanie programu
< param name= "M" value="L">
gdzie: M - nazwa parametru , L - wartość parametru
</applet> koniec bloku deklaracji
Np.
<html> ...
<applet name="Animacja" code="Animacja.class" codebase="/usr/jaro/anim"
... width="140" height="100" align="Top">
<param name="szybkosc_animacji" value="500">
...
</applet>
<a href="file:/usr/jaro/Animacja.java"> Kod programu</a>
...
</html>
Typowa
struktura apletu Java
na początek
import java.awt.*; import java.applet.*;
public class mój_pierwszy_aplet extends Applet implements Runnable {
... ZADEKLARUJ ZMIENNE PROGRAMU
/* np. Thread wtek_mojego_programu; int szybkość_mojego_programu;
*/
public void init()
{
... OKREŚL WSTĘPNE WARTOŚCI ZMIENNYCH
/* np. szybkość_mojego_programu=100; */
... OKREŚL ROZMIAR POLA WYŚWIETLANEGO PROGRAMU
/* np. resize(100,100); */
}
... NAPISZ METODY PROGRAMU
/* np. public void metoda_mojego_apletu()
{
szybkość_mojego_programu++;
}
*/
/* wyświetlenie strony graficznej programu */
public void paint(Graphics g)
{
...
/* np.
g.drawString("Szybkość mojego programu ma wartość:",10,10); g.drawString(String.valueOf(szybkość_mojego_programu),80,10);
*/
}
public void start()
{
wtek_mojego_programu =new Thread(this);
wtek_mojego_programu .start();
}
public void stop()
{
wtek_mojego_programu .stop();
}
public void run()
{
while(true)
{
try {
Thread.currentThread().sleep(szybkość_mojego_programu);
}
catch (InterruptedException e ){}
... WYWOŁAJ METODY PROGRAMU
/* np. metoda_mojego_apletu(); */
/* aktualizacja grafiki */
repaint();
} } }
na początek