Wprowadzenie
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 komputerze PC (pod kontrolą np.: systemu OS/2, Windows 95 lub Windows NT), na Macintosh'u, a także na maszynie UNIX'owej pod warunkiem, że jest tam również zainstalowany specjalny program interpretujący Javę.
Java zawiera elementy językowe ułatwiające pisanie programów przeznaczonych do pracy w sieci Internet. Do dyspozycji mamy zatem obsługę protokołów TCP/IP, co umożliwia łatwe korzystanie z zasobów znajdujących się na odległym komputerze. Java generuje bardzo mały "objętościowo" kod wynikowy, 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 bezpieczeństwo użytkownikowi ładującemu program z Internetu, poprzez wprowadzenie kontroli autentyczności kodu.
W języku Java zrealizowano paradygmat programowania zorientowanego obiektowo, z wbudowanymi mechanizmami współbieżności, obsługi sytuacji wyjątkowych i kontrolą przydziału pamięci. Tekstowo program w Javie wygląda podobnie, jak napisany języku C++. Każdy, kto posługuje się językiem C++ regularnie, nie będzie miał większych problemów z "przesiadką" na Javę. Jednak Java różni się od C++, mianowicie:
narzucono ograniczenia, które ułatwiają testowanie programów i czynią kod przejrzystym,
usunięto wskaźniki i uproszczono model zarządzania zasobami, np. pamięcią operacyjną,
usunięto niektóre konstrukcje języka C++ (np.: typedef, #define, goto, struct, union) oraz preprocesor, jako elementy niezgodne z paradygmatem programowania zorientowanego obiektowo oraz utrudniające zrozumienie i modyfikowanie kodu; można je zastąpić poprzez definicje klas,
usunięto możliwość przeciążania operatorów,
usunięto wielodziedziczenie (zastępując je mechanizmem implementacji interfejsów),
uwolniono programistę od konieczności alokacji i zwalniania pamięci,
"zlikwidowano" możliwość definiowania procedur i funkcji nie związanych z definicją żadnej klasy.
Ponadto, wynikiem kompilacji programów Javy jest kod pośredni nazywany kodem bajtowym Javy (ang. Java Byte Code) a nie kod maszynowy, jak w C++.
Programiści mają do dyspozycji setki języków programowania, od języków w pełni interpretowanych jak UNIX Shell, TCL, Perl i innych do języków niskiego poziomu jak C i C++.
W poniższej tabeli porównano właściwości Javy z właściwościami innymi języków programowania. Poniższe zestawienie przygotowano na podstawie materiałów zawartych w dokumencie HTML "The Java(tm) Language Environment: A White Paper" firmy Sun
Porównanie atrybutów Javy z własnościami innych językami programowania
Jak wynika z powyższego zestawienia, Java jest językiem programowania o dużych możliwościach, i dlatego idealnie nadaje się do pisania programów przeznaczonych dla sieci Internet, gdzie stała się najpopularniejszym i najczęściej wykorzystywanym językiem programowania.
Celem pracy jest próba systematycznego opisu języka, z podziałem na część abstrahującą od realizacji i część opisującą realizację, zwłaszcza, że w chwili rozpoczęcia pisania pracy nie było dobrej literatury opisującej język, a zdobywa on znaczną popularność i gwałtownie się rozwija. W kwietniu br. zmieniono i rozszerzono specyfikację języka, w pracy opisano te zmiany, a dotyczą one m.in.:
nowego modelu obsługi zdarzeń,
nowych klas strumieni wejściowych i wyjściowych obsługujących znaki kodowane w standardzie Unicode,
możliwości definiowania klas wewnętrznych lokalnych i anonimowych.
Jak dotąd, nie ma literatury w języku polskim, opisującej te zmiany. Dlatego praca może stanowić cenny materiał dydaktyczny dla studentów kierunków informatycznych, szczególnie, że pisanie programów działających i wykorzystujących zasoby sieci Internet jest w Javie proste.
Pracę podzielono na rozdziały, z których największy i najważniejszy jest rozdział 2, przedstawiający ogólną charakterystykę języka Java. W rozdziale 3 omówiono techniczne zagadnienia implementacji języka Java. Rozdział 4 pokazuje przykładowe zastosowania Javy do pisania programów działających w sieci Internet (aplet wykorzystujący protokół SMTP). W rozdziale 5 zebrano uwagi końcowe. W rozdziale 6 zestawiono pozycje literaturowe. Na końcu znajdują się dodatki, w których m.in. opisano standard kodowania znaków Unicode i przedstawiono zmiany wprowadzone w wersji Javy 1.1 w stosunku do wersji 1.0 języka, dotyczące biblioteki graficznej.
WWW.republika.pl/arturt/java/