Up: Zastosowanie Javy, przestrzeni krotek

Java i jej maszyna wirtualna a urządzenia przenośne

Java [18] jest językiem programowania zorientowanym obiektowo, do uruchomienia którego używa się specjalnie stworzonej maszyny wirtualnej (ang. JVM -- Java Virtual Machine). Maszyna wirtualna interpretuje skompilowany kod bajtowy (ang. bytecode) uzyskany po skompilowaniu programu w Javie. Jedną z zalet tego języka jest możliwość przenoszenia tego samego kodu źródłowego pomiędzy różnymi platformami systemowymi. Jedynym ograniczeniem w tym przypadku jest istnienie maszyny wirtualnej. W zależności od wielkości zasobów sprzętowych PDA lub telefonu komórkowego, istnieje możliwość zastosowania różnej wielkości bibliotek programistycznych i maszyn wirtualnych. Z tym związane są możliwe scenariusze zastosowania urządzenia, m.in. sposób komunikacji z otoczeniem, przechowywanie informacji, szybkość przetwarzania danych.

Rozwojem Javy i jej maszyny wirtualnej zainteresowali się producenci systemów wbudowanych i urządzeń przenośnych. W pracach nad rozwojem specyfikacji i oprogramowania biorą udział takie firmy jak Ericsson, Motorola, Nokia i Palm, które starają się określić standard i dogodny zbiór klas dla urządzeń przenośnych.

W ciągu ostatnich kilku lat na rynku informatycznym wzrosło zapotrzebowanie na różne implementacje maszyny wirtualnej Javy i specyfikacje bibliotek Javy. Związane jest to przede wszystkim z możliwościami urządzeń, na których używa się Javy. W tej części postaram się pokazać różne rozwiązania i skutki wynikając z ich zastosowania.

Rysunek 1.1: Budowa warstwowa środowiska dla aplikacji w Javie
\includegraphics[scale=0.45]{rys_12_2.eps}

Na rysunku 1.1 przedstawiono wzajemną zależność aplikacji w Javie, bibliotek Javy, maszyny wirtualnej i systemu operacyjnego. Jest to zależność typu warstwowego. Wszystkie te warstwy działają na urządzeniu. Na samym dole znajduje się system operacyjny urządzenia. Przykładowymi systemami operacyjnymi, które są interesujące dla urządzeń przenośnych, są między innymi PalmOS [32], WindowsCE, Linux. Powyżej systemu operacyjnego jest usytuowana maszyna wirtualna. Obecnie dostępne maszyny wirtualne, które zaprojektowano specjalnie dla urządzeń z ograniczoną pamięcią i połączeniem do sieci, to J9 firmy OTI [30] lub KVM firmy Sun [18]. Obie można uruchamiać z urządzeniami takimi jak PalmPilot i telefon komórkowy.

Kolejnym poziomem jest edycja platformy Javy określająca zestaw bibliotek udostępniających określony interfejs klas (ang. API -- Application Programming Interface). Zazwyczaj biblioteka klas przeznaczona dla bardziej ograniczonego urządzenia jest mniejsza. Nie jest to jednak do końca prawda, bo mniejsze edycje zawierają również implementacje klas, które nie są wspomagane w większych wersjach. Ze względu na PDA i telefon komórkowy interesujące są biblioteki Visual Age Micro Edition (VAME) firmy OTI i Java 2 Micro Edition (J2ME) firmy Sun, które zaimplementowano specjalnie dla tego typu urządzeń.

Następny poziom nazwano konfiguracją. Obecnie istnieją dwie konfiguracje dla wymienionych powyżej edycji platformy i są to Connected Device Configuration (CDC) i Connected Limited Device Configuration (CLDC). Konfiguracja określa API i parametry urządzenia, na którym ta konfiguracja będzie używana. Konfiguracją dla PDA i telefonów komórkowych jest CLDC.

Profil jest dodatkową definicją klas, które mogą być używane przez urządzenie. Na przykład aby użyć Remote Method Invocation (RMI) [33] z konfiguracją CDC należy dodać profil RMI. Profil przeznaczony dla telefonów komórkowych to Mobile Information Device Profile (MIDP), zaś dla PDA -- Personal Digital Assistant Profile (PDAP) dodany z konfiguracją CLDC. Więcej szczegółów na temat konfiguracji i profilów, które były potrzebne w mojej pracy, przedstawiam w następnych punktach.


Podrozdziały
sierpień 2001