Czym jest Java?
COŚ Z HISTORII
Java została wymyślona w 1991 roku przez Jamesa Goslinga, Patricka Naughtona, Chrisa Wartha, Eda Franka i Mike'a Sheridana z Sun Microsystems. Opracowanie pierwszej działającej wersji trwało 18 miesięcy. Język ten początkowo został nazwany "Oak", ale w roku 1995 zmieniono mu nazwę na "Java". Między początkową implementacją języka Oak na jesieni 1992 roku i publicznym przedstawieniem Javy na wiosnę 1995 roku, znacznie więcej osób zajmowało się projektowaniem i rozwojem języka. Bill Joy, Arthur van Hoff, Jonathan Payne, Frank Yellin i Tim Lindholm byli głównymi współpracownikami w czasie dojrzewania prototypu. Pierwotnie bodźcem dla powstania Javy nie był wcale Internet, motywowała je potrzeba niezależnego od platformy (neutralnego pod względem architektury) języka, który mógłby być wykorzystany do tworzenia oprogramowania wbudowanego w różne urządzenia elektroniczne powszechnego użytku, takie jak kuchenki mikrofalowe czy pilot zdalnego sterowania. Potrzebne było proste i efektywne rozwiązanie. Próbując je znaleźć Gosling wraz z kolegami rozpoczął prace nad przenośnym, niezależnym od platformy językiem, który mógłby być użyty do utworzenia kodu działającego na różnych procesorach i w różnych środowiskach. Ostatecznie doprowadziło to do utworzenia Javy.
W czasie, gdy opracowywano szczegóły Javy, kluczową rolę dla jej przyszłości zaczął odgrywać drugi i ostatecznie znacznie ważniejszy czynnik. Była to sieć WWW. Wraz z pojawieniem się Internetu i sieci WWW stary problem przenośności powrócił z nową siłą.
W roku 1993 dla członków zespołu projektowego Javy stało się oczywiste, ze problemy przenośności występują także przy tworzeniu kodu dla Internetu. Uświadomienie tego spowodowało przeniesienie uwagi projektantów Javy z elektroniki powszechnego użytku na programowanie dla Internetu.
Pierwsze wykorzystujące Jave projekty:
Green - stworzenie przyjaznego interfejsu użytkownika do obsługi wszelkiego rodzaju urządzeń domowych
WebJava - przeglądarka stron WWW
W roku 1995 nastąpiło oficjalne przedstawienie nowej technologii.
Java od tamtego czasu wciąż bardzo dynamicznie się rozwija. Niedługo po opublikowaniu Javy 1.0 projektanci utworzyli Javę 1.1. Dodano w Javie 1.1 wiele nowych elementów bibliotecznych, przedefiniowano sposób obsługi zdarzeń przez aplety i przekonfigurowano wiele właściwości biblioteki 1.0. Uznano za niezalecane (przestarzałe) niektóre właściwości zdefiniowane przez Jave 1.0.
Kolejnym większym wydaniem była Java 2, jej pierwsze wydanie miało numer 1.2. W wersji tej dodano ponownie kilka nowych właściwości, takich jak Swing i Framework Coolections. Aktualnym wydaniem Javy jest Java 2 w wersji 1.3.
Zespół pracujący nad rozwojem język Java znajduje się w Paolo Alto i nieustannie pracuje.
JAVA JAKO UNIWERSALNY JĘZYK PROGRAMOWANIA
Składniowe podobieństwo do C/C++ czyni ją łatwą do opanowania przez programistów znających te języki. Jednocześnie Java ma ambicje udoskonalania swoich wzorców.
Programując w Javie w zasadzie nie musisz martwić się zarządzaniem pamięcią ponieważ w tym środowisku funkcjonuje automatyczne odśmiecanie - garbage collector, specjalny wątek, który w tle, niewidocznie
i automatycznie, dba o usuwnie przydzielonych wcześniej, a nie używanych obszarów pamięci. Java nie dopuszcza arytmetyki wskaznikowej, która pozwala na odwoływanie się do dowolnych obszarów pamięci i jest częstą przyczyną błędów.
W Javie nie ma wskaźników, są za to referencje, które mogą odnosić się do istniejącego obiektu, albo mają wartość "null"(w danym momencie nie odnoszą się do żadnego obiektu).
Ścisła kontorola typów na etapie kompilacji pozwala uniknąć prostych błędów, a konwersje przeprowadzone w fazie wykonania są bezpieczne, bowiem nigdy nie może zaistnieć sytuacja przekształcenia danych do niewłaściwego dla nich typu
(chodzi oczywiście o typy obiektowe, poprawność konwersji typów prostych jest gwarantowana przez kompilator).
Wymuszona przez kompilator obsługa wyjątków czyni programowanie w Javie jeszcze bardziej bezpiecznym i niezawodnym, a wbudowane w język podstawowe współbieżności umożliwiają łatwe tworzenie i synchronizowanie równolegle działających wątków.
Niewąpliwie jednak najważniejszą cechą Javy jako "czytsego języka" jest obiektowość. Ogólnie oznacza to, iż programy w Javie pisze się łatwiej i bardziej niezawodnie niż w językach nieobiektowych.
Niesty, Java nie jest językiem w pełni obiektowym. Występują w niej bowiem konstrukcje nieeobiektowe (np. typy proste), co powoduje niespójności.
Większość innych ważnych cech Javy, o których była mowa wyżej, wynika z wysokich wymogów bezpieczeństwa stawianych językowi przez jego twórców. Coś za coś - często oznacza to pewne ograniczenia swobody i elastyczności programisty, a także
(czasem nadmierne) zwiększenie pracochłonności pisania kodu.
Zalety Javy jako czystego języka programowania mogą być dyskusyjne. Ale nie dlatego warto uczyć się Javy, że jest to jęztk idelany(czy w ogóle takie istnieją?).
Dużo ważniejsza jest jej uniwersalność we wszystkich zastosowanich informatycznych. Uniwersalność zapewnia jej wieloplatformowość Javy oraz wyikająca stąd możliwość stworzenia przebogatych standardowych "bibliotek" na tle zintegrowanym z samą Javą, że praktycznie będących ich synonimem.
WIELOPLATFORMOWOŚĆ JAVY
Java jest językiem interpretowanym, co umożliwia wykonywanie "binarnych" kodów Javy bez rekompilacji praktycznie na wszystkich platformach systemowych.
Kod źródłowy (te pliki z rozszerzeniem .java) jest kompilowany przez kompilator Javy do kodu bajtowego (B-kodu, pliki z rozszerzeniem .class), ten ostatni zaś jest interpretowany przez tzw. wirtualną maszynę Javy- JVM (jest to program i/lub
odpowiednie biblioteki), zainstalowaną na daniej platformie systemowej lub wchodzącej w skład przeglądarki WWW.
Oznacza to, teoretycznie, że raz napisany i skompilowany program będzie działał tak samo na wszystkich platformach systemowych.
Jej praktyczna realizacja (mimo wielu trudności) jest coraz bliższa i coraz bardziej kusząca
(nieunikniona mniejsza efektywność i większa zasobożerność działania aplikacji javowych w porównaniu
z natywnymi jest równoważona przez rozwój sprzętu).
Sama wieloplatformowość języka interpretowanego nie jest czymś nadzwyczajnym.
Ale twórcy Javy wyciągnęli z tej cech bardzo konsekwentne wnioski. Stworzyli bogaty zestaw standardowych
bibliotek i narzędziwowych interfejsów programistycznych (API), które umożliwiają w jednolity, niezależny
od platformy sposób programować graficzne interfejsy użytkownika (GUI), dostęp do baz danych, działania
w sieci.
Podstawowy (ogromny zresztą) zestaw bibliotek nazywa
się Java Core API (albo JDK, bądź Java 2 SDK). Oprócz tego wprowadzono prosty mechanizm nazywany
Java Extension Framework, który umożliwia rozszerzanie standardowego pakietu o nowe (także standardowe:) ) biblioteki.