Wprowadzenie do języka programowania JAVA
Powstanie języka Java jest jednym z rezultatów szeroko zakrojonych prac projektowych związanych z
obsługą nowoczesnych urządzeń pracujących w czasie rzeczywistym. Urządzenia te potrzebowały ję-
zyka, który generuje niewielki kod wynikowy i jest niezależny od sprzętu. Pierwotnie, w systemach obsługujących te urządzenia używano języka C++, jednak ze względu na niedoskonałości kompilatorów C++ i różnice występujące między poszczególnymi jego realizacjami, powstał pomysł stworzenia
nowego języka, całkowicie niezależnego od sprzętu czyli np.: procesorów, układów wejścia-wyjścia i
systemu operacyjnego. Program napisany w Javie może być zatem wykonywany zarówno na kompu-
terze PC (pod kontrolą np.: systemu OS/2, Windows 95 lub nowszych), na Macintosh'u, a także na maszynie UNIX'owej pod warunkiem, że jest tam również zainstalowany specjalny program interpre-tujący Javę.
Java zawiera elementy językowe ułatwiające pisanie programów przeznaczonych do pracy w sieci In-
ternet. Do dyspozycji mamy zatem obsługę protokołów TCP/IP, co umożliwia łatwe korzystanie z za-
sobów znajdujących się na odległym komputerze. Java generuje bardzo mały "objętościowo" kod wy-
nikowy, co wiąże się z wymaganiem minimalizacji czasu przesyłania programu poprzez Internet,
szczególnie na liniach przesyłowych o małej przepustowości. Java jest językiem zapewniającym bez-pieczeństwo użytkownikowi ładującemu program z Internetu, poprzez wprowadzenie kontroli auten-
tyczności kodu.
W języku Java zrealizowano paradygmat programowania zorientowanego obiektowo, z wbudowany-
mi mechanizmami współbieżności, obsługi sytuacji wyjątkowych i kontrolą przydziału pamięci. Tek-stowo program w Javie wygląda podobnie, jak napisany języku C++.
Pochodzenie języka Java
Język ten został zaprojektowany i zaimplementowany przez małą grupę ludzi prowadzoną przez Jame-
sa Goslinga w laboratoriach Sun Microsystems w Mountin View, California. Oprócz swojej pracy nad
jezykiem, James Gosling jest autorem programu emacs pod UNIX oraz systemu okien NeWS.
Początkowo zespół ludzi rozwijających język Java miał na celu zaprojektowanie oprogramowania do
sprzętu elektronicznego. Szybko zorientowano się, że istniejące języki, takie jak C lub C++, nie nadają
się do tego celu.
Programy napisane w C lub C++ muszą zostać skompilowane dla określonego procesora. Kiedy nowy
procesor zostaje wypuszczony na rynek, większość oprogramowania musi zostać na nowo skompilo-
wana, aby wykorzystać w pełni możliwości nowego produktu. Jest tak, ponieważ raz skompilowany
program w C lub C++ nie jest łatwo przystosować do korzystania z nowych bibliotek funkcji. Gdy bi-
blioteki zostają zmienione, z reguły trzeba kompilować cały program od początku.
Oprogramowanie pisane dla sprzętów użytkowych musi działać na nowo produkowanych układach
elektronicznych, gdyż producenci są mocno ograniczani przez koszt komponentów. Jeśli koszt układu
staje się zbyt wysoki, należy zastąpić go natychmiast innym, bardziej efektywnym finansowo. Nawet małe skoki cen mogą stanowić dużą różnicę, jeśli sprzedajemy miliony egzemplarzy.
Innym problemem dotyczącym użycia tradycyjnych języków programowania do oprogramowania
sprzętów użytkowych jest to, że sprzęty te mają zazwyczaj długi czas użytkowania. Są przecież ciągle
działające tostery sprzed 50 lat. Wtyczka w dalszym ciągu pasuje do gniazdka, a kromki chleba ideal-
nie wchodzą w otwory tostera. Oprogramowanie natomiast cechuje się z reguły krótszym czasem ży-
cia i dlatego byłoby trudne zbudowanie tostera z wmontowanym komputerem w środku. Jeżeli kiedy-
kolwiek nowe oprogramowanie dla tostera zostałoby napisane, musiałoby ono być kompatybilne
wstecz, aby działało również na starych wersjach tych urządzeń.
Oprogramowanie dla urządzeń musi być niezawodne, dużo bardziej niż większość oprogramowania
dla komputerów. Jeśli takie urządzenie zawiedzie, producent zazwyczaj musi wymienić całą maszynę.
W 1990r. James Gosling zaczął prace nad projektowaniem nowego języka programowania, który był-
by właściwszy do oprogramowania sprzętu użytkowego niż tradycyjne języki jak C czy C++. Wyni-
1
kiem jest Java, szybki, niewielki i niezawodny język, który będzie działał na dowolnym układzie elek-tronicznym.
Skąd nazwa Java? Język Java pierwotnie otrzymał nazwę Oak (dąb) nadaną przez Jamesa Goslinga.
Jego inspiracją był wielki dąb rosnący tuż za oknem jego biura w Sun Microsystems.
Po pewnym czasie zespół pracujący nad nowym językiem odkrył, że Oak był już kiedyś nazwą języka
programowania. Trzeba było wymyślić jakieś nowe określenie na nowy język. Wbrew pozorom jest to
bardzo trudne - o czym przekonali się członkowie zespołu po wielu godzinach burzy mózgów. Osta-
tecznie pomysł nowej nazwy pojawił się w drodze do sklepu z kawą.
Java to zorientowany obiektowo język programowania zaprojektowany przez Sun Microsystems.
Obiekt - to konkretny lub abstrakcyjny byt, wyróżnialny w modelowanej rzeczywistości, posiadający:
- nazwę (ewentualnie)
- określone granice,
- atrybuty (właściwości),
- skojarzony z dopuszczalnymi operacjami, które mogą na nim działać – zatem mogący świad-
czyć określone usługi.
Usługa – to określone działanie (zachowanie) obiektu, które jest on zobowiązany przejawiać.
Obiekty współdziałają ze sobą wymieniając komunikaty.
Komunikat – to wąski i dobrze określony interfejs, opisujący współzależność działania obiektów.
Komunikaty zwykle żądają od obiektów wykonania określonych usług.
Klasa – model abstrakcyjny pewnej grupy obiektów, wyróżniających się tą samą strukturą i zachowa-
niem, jest to, więc to opis takich cech grupy podobnych obiektów, które są dla nich niezmienne.
Obiekt jest, więc egzemplarzem klasy, zachowującym jej właściwości.
Dane należące do klas i określające jej strukturę są reprezentowane przez zmienne egzemplarzowe, dzięki nim można pamiętać informacje o aktualnym stanie każdego obiektu. Natomiast rodzaj wyko-nywanego zadania i sposób uzyskiwania dostępu do danej klasy określają jej metody, czyli funkcje ko-rzystające ze zmiennych egzemplarzowych i przypominające podprogramy proceduralnych języków
programowania.
Program w Javie jest zawsze zestawem klas. Wyróżniamy:
- aplikacje – wykonywane przez JVM zainstalowaną na naszym komputerze,
czyli „wolno stojące” mogące sięgać do Internetu i intranetu za pomocą wbudowanych w Core
API „bibliotek sieciowych).
- aplety – wykonywane przez środowisko przeglądarki.
PIERWSZY PROGRAM
class WitajJavo
{
public static void main (String args[])
{
System.out.println(“Witamy na wykładzie z JAVY! ”);
}
}
Powyższy tekst zapisujemy w pliku WitajJavo.java.
Aby skompilować podany program piszemy:
C:\> javac WitajJavo.java
Kompilator utworzy plik o nazwie WitajJavo.class zawierający niezależny od procesora kod bajtowy naszego programu. Kod bajtowy jest pośrednią wersją programu, mającą postać ciągu instrukcji ma-szyny wirtualnej Javy, czyli pewnego nieistniejącego w rzeczywistości procesora, którego instrukcje są
zrozumiale dla interpretera Javy.
2
Pliku z kodem bajtowym nie można uruchomić bezpośrednio, tak jak innych programów, lecz trzeba go przekazać interpreterowi Javy – w tym przypadku programowi o nazwie java. W wierszu poleceń
podajemy tylko samą nazwę pliku z definicją klasy, bez rozszerzenia class:
C:\>java WitajJavo
Witamy na wykładzie z JAVY!
Nagłówek klasy WitajJavo
class WitajJavo
Ten wiersz rozpoczyna się od słowa kluczowego class, informującego kompilator o tym, że niżej znajduje się definicja nowej klasy. WitajJavo – to identyfikator klasy, umożliwiający odwoływanie się do niej w programie. Cała definicja klasy, obejmująca jej dane i instrukcje, znajduje się w następują-
cym po nazwie nawiasie klamrowym
Nagłówek metody main()
public static void main (String args[])
Słowo kluczowe public – jest to jeden ze specyfikatorów dostępu, określający stopień widocz-ności danej metody lub zmiennej. W tym przypadku słowo public oznacza, że metoda main() jest wi-doczna przez wszystkie inne elementy programu, czyli innymi słowy jest dla nich dostępna. Istnieją jeszcze dwa inne specyfikatory dostępu: private i protected.
Słowo kluczowe static – Dostęp do statycznych metod i zmiennych, czyli zadeklarowanych ze słowem kluczowym static, można uzyskiwać bez konieczności tworzenia obiektu klasy, do której na-leżą. W taki sposób musi być zawsze zadeklarowana metoda main(), gdyż interpreter Javy wywołuje
ją jeszcze przed utworzeniem jakiegokolwiek obiektu. Metody statyczne mogą odwoływać się wy-
łącznie do zmiennych statycznych i lokalnych.
Słowo kluczowe void – oznacza, że w tym przypadku metoda nie zwraca żadnej wartości (wy-
świetla jedynie komunikat).
Identyfikator main – oznacza nazwę metody.
Wszystkie parametry przekazywane metodom umieszcza się między otwierającym a zamykającym na-
wiasem okrągłym. Każdy parametr jest reprezentowany przez nazwę typu, spacje i identyfikator, a po-
szczególne parametry oddzielamy średnikiem. Funkcja main() naszego programu ma tylko jeden parametr, który ma nazwę args i jest tablicą egzemplarzy klasy String, umożliwiającej zapisywanie łań-
cuchów znakowych. Nawiasy kwadratowe [] za słowem args, oznaczają, że definiowany parametr jest
tablicą.
Metoda main() określa więc miejsce, od którego rozpoczyna się wykonywanie programu.
Wywołanie metody
System.out.println(“Witamy na wykładzie z JAVY! ”);
Instrukcja wywołująca metodę println(), która należy do obiektu out, będącego egzemplarzem klasy OutputStream i inicjalizowanym statycznie w klasie System.
Metoda kieruje dane do domyślnego strumienia wyjściowego systemu, w którym dany program został
uruchomiony (w naszym przypadku w oknie DOS-a).
Pierwszy zamykający nawias klamrowy kończy definicję metody main(), a ostatni z nawiasów defini-cję klasy WitajJavo.
Komentarze
- jednowierszowe- rozpoczynają się od znaków // i kończą na końcu wiersza (krótkie wyjaśnianie
pojedynczych instrukcji;
- wielowierszowe – umieszczone między parami znaków /* i /. Cały tekst znajdujący się między /* a
*/ jest przez komputer ignorowany;
- dokumentacyjne – umożliwiają automatyczne wygenerowanie dokumentacji interfejsu klasy za
pomocą programu o nazwie javadoc. Umieszcza się je przed deklaracjami publicznych klas, metod
3
i zmiennych. Każdy komentarz dokumentacyjny musi rozpoczynać się od znaków /** i kończyć
znakami */ (tak jak zwykle komentarze wielowierszowe).
o Wszystkie
e narzędzia potrzebne do programowania w Javie znajdują
się w bezpłatnym pakiecie SDK, który można pobrać z głównej witry-
ny Javy http://java.sun.com/j2se/
o Kompletny kurs Javy, omawiający większość związanych z nią tech-
nologii można pobrać ze strony http://java.sun.com/docs/books/tutorial/
Zawartość pakietu SDK (JDK):
Po zainstalowaniu pakietu Java 2 SDK, SE w katalogu j2sdk1.4.1 zostanie
umieszczony podkatalog bin zawierający szereg programów usługowych. Naj-
ważniejsze to:
javac – kompilator,
java - interpreter,
appletviewer – przeglądarka apletów,
javadoc - generator dokumentacji,
jdb – debuger,
jar – narzędzie do tworzenia archi-
wów
Do pisania treści programu możemy użyć dowolnego edytora tekstu, pozwalającego na zapisanie two-
rzonego dokumentu jako zwykłego pliku tekstowego, np. Notatnika Windows.
Możecie Państwo pobrać program FreeJava, który jest prostym IDE (zintegrowanym środowisko
programistycznym) pozwalającym na bezpośrednią pracę z kodem źródłowym.
Okno programu
jest podzielone
na trzy części:
okno
projektu
po lewej stronie
pozwala
na
kontrolę
po-
szczególnych
klas, metod i
plików, z pra-
wej strony jest
okno
edytora
kodu źródłowe-
go, a na dole
znajduje
się
okno komunika-
tów.
4