Różne postacie Javy

Java to następny etap w ewolucji architektury klient/serwer, ale niekoniecznie tylko na stacji klienta - na pewno również na serwerze

Java to następny etap w ewolucji architektury klient/serwer, ale niekoniecznie tylko na stacji klienta - na pewno również na serwerze.

Informatyk zapytany: "Co to jest Java?", prawie automatycznie odpowie: "Język programowania". Istotnie, wszyscy się zgadzają w tym zakresie - nie tylko twórcy tego języka, ale również Microsoft.

Niewielu starszych informatyków pamięta, że co najmniej 15 lat minęło, zanim język C zaistniał jako powszechne narzędzie do programowania aplikacji, pokonując języki dawnych generacji. Tymczasem Java, język, który pojawił się zaledwie kilka lat temu, osiągnął obecnie poziom dojrzałości (mierzony liczbą gotowych bibliotek, komponentów, narzędzi do tworzenia aplikacji, gotowych systemów i aplikacji) zbliżony do C/C++. Wielu programistów przechodzi na ten język, co oznacza, że niedługo Java stanie się uniwersalnym językiem programowania, zastępując C i C++, które zresztą przewyższa w wielu punktach.

Środowisko uruchamiania aplikacji

Z Javą ściśle wiąże się pojęcie maszyny wirtualnej, czyli interpretera kodu bajtowego Java, tłumaczącego go na instrukcje maszynowe komputera, na którym działa urządzenie. Podejście to wydaje się sensowne, gdyż zwalnia programistę od rozważania, na jakim komputerze i systemie operacyjnym będzie działać jego aplikacja.

Maszyna wirtualna ma jednak wady. Dotychczas nikomu nie udało się jej wyposażyć w takie środki przyspieszania działania, aby kod aplikacji Java i kod takiej samej aplikacji, napisanej np. w C/C++ i skompilowanej do kodu maszynowego, pracowały równie szybko. Wszystkie dostępne maszyny z kompilatorami na bieżąco (just-in-time) działają wolno. Wprawdzie Sun Microsystems zapowiada dostarczanie bardzo szybkiej maszyny wirtualnej HotSpot jeszcze w br., ale w przeciwieństwie do innych maszyn wirtualnych trzeba za nią płacić.

Przenośność czy szybkość działania

Spór - przenośność czy szybkość działania to właściwe podłoże procesu między Microsoftem a Sunem. Może on też zdecydować o przyszłości Javy. Microsoft ceni język Java i dostarcza różne narzędzia programistyczne, umożliwiające pisanie aplikacji w tym języku. Natomiast niechętnie stosuje maszynę wirtualną Java - tylko tam, gdzie nie da się bez niej obejść, np. w programie Internet Explorer. Nie ma w tym nic dziwnego, gdyż maszyna wirtualna podważa sens istnienia systemu operacyjnego Windows, działającego na ok. 90% komputerów w świecie.

Java i Windows

Od początku Java znakomicie nadawała się do rozwiązywania wielu problemów istotnych dla programisty, takich jak tzw. zbieranie śmieci (garbage collection), tj. usuwanie z pamięci obiektów już nie używanych, automatyczne sprawdzanie przekroczenia zakresów adresowania (co wynika z braku wskaźników) i in. Ponadto obiektowość języka Java pozwala na tworzenie za jej pomocą komponentów do wielu istniejących systemów składania aplikacji z komercyjnych i lokalnych komponentów, przyspieszając proces tworzenia aplikacji. Stąd olbrzymie zainteresowanie Javą ze strony programistów.

Jeżeli wszystkie programy będą pisane do współpracy z maszyną wirtualną Java, nie będzie potrzeby kupowania Windows. Microsoft dąży więc do zminimalizowania roli maszyny wirtualnej, ograniczenia jej funkcji lub usunięcia jej.

Praktycznie wszystkie stacje klienckie do aplikacji klient/serwer, a nierzadko również do aplikacji typu host-terminal, działają na PC z Windows. Programista, piszący program, może uważać, że będzie on używany w tym środowisku. Korzystna jest więc dla niego możliwość pisania aplikacji w Javie z wykorzystaniem wszystkich właściwości systemu operacyjnego stacji klienta.

I takie możliwości oferuje Microsoft - programowanie w Javie bez konieczności korzystania z maszyny wirtualnej. Nowa wersja pakietu narzędziowego Microsoft Visual J++ 6.0, która ma być dostępna na rynku pod koniec czerwca br., nie będzie zawierać maszyny wirtualnej, ma natomiast tworzyć bezpośrednio kod maszynowy, podobnie jak np. Visual C++ czy Visual Basic.

Visual J++ zawiera zestaw klas Windows Foundation Class for Java (WFC), ukrywających tradycyjne zestawy API z Windows pod warstwą abstrakcji Java. Programista może więc bezpośrednio pisać w Javie aplikacje dla Windows, nie posługując się maszyną wirtualną.

Java na serwerze

Sun promuje maszynę wirtualną o wielkich możliwościach funkcjonalnych, zdolną zastąpić system operacyjny. Podejście to ma jednak pewien mankament. Nie można bowiem całkowicie odizolować maszyny wirtualnej od środowiska, w którym działa, choćby dlatego że standardowa maszyna wirtualna Suna nie ma np. możliwości zapisywania ani odczytywania plików z dysku lokalnego, co praktycznie wyklucza jej współpracę ze standardowym PC.

Z tego powodu Sun dopuszcza możliwość współpracy maszyny wirtualnej z systemem operacyjnym komputera za pośrednictwem zestawu API o nazwie Java Native Interface (JNI). Pozwala on na współpracę aplikacji w Javie z systemem operacyjnym Solaris. Zapewne pojawią się również inne wdrożenia tego interfejsu do maszyn wirtualnych na inne komputery, np. na AS/400, promowany przez IBM jako tzw. megaserwer do uruchamiania aplikacji w sieci Web. IBM stosuje zresztą maszynę wirtualną Java jako metodę unifikacji wszystkich swoich platform serwerowych (MVS, AIX, AS/400 i OS/2).

W efekcie możliwe będzie pisanie komponentów i całych aplikacji w Javie, ściśle współpracujących z systemem operacyjnym na serwerze i zapewniających dostateczną wydajność aplikacjom klient/serwer, korzystającym z tzw. chudego klienta, tj. inteligentnego terminala graficznego z lokalną maszyną wirtualną.

Działania Microsoftu również zmierzają w tym samym kierunku, pozwalając na tworzenie aplikacji, komponentów lub bibliotek DLL dla serwera i stacji klienckich nie tylko dla systemu operacyjnego Windows, ale również dla pośredniej warstwy oprogramowania (middleware), np. serwera transakcji (Microsoft Transaction Server - MTS).

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200