Stanisław Findeisen

s.findeisen@students.mimuw.edu.pl

 

 

Potrzeby rynku

W obecnym czasie, obok tradycyjnego rynku komputerów PC, gwałtownie zyskuje na znaczeniu rynek małych urządzeń: telefony komórkowe, pagery, odtwarzacze CD, konsole do gier - wszystkie te urządzenia stają się coraz inteligentniejsze i zyskują nowe mozliwości. Daje się zaobserwować również stały trend "coraz gęstszego łączenia się w sieć" - dotyczy to zarówno urządzeń stosunkowo nowych, takich jak telefony komórkowe, gdzie - oprócz tradycyjnej funkcji komunikacyjnej - w standardzie są już róznorakie gry jedno- i wielo-osobowe, jak i "tradycyjnych urządzeń elektronicznych", takich jak telewizory (coraz powszechniejsza telewizja cyfrowa), lodówki (np. automatyczne robienie zakupów) czy odtwarzacze CD.

Jako że to właśnie platforma Javy jest najpowszechniej stosowanym rozwiązaniem dla tradycyjnych aplikacji sieciowych, coraz wyraźniejsza stała się potrzeba jej adaptacji dla mikro urządzeń.

 

Odpowiedź firmy SUN: The Java 2 Platform, Micro Edition

Java 2 Micro Edition jest nowym, bardzo niewielkim środowiskiem aplikacyjnym dla Javy w świecie mikro urządzeń. Dostępna jest szeroka gama odmian odpowiednich dla poszczególnych segmentów rynku.

Configurations

"Configuration" składa się z wirtualnej maszyny, rdzeniowych bibliotek, klas oraz API, i stanowi "zwykłą" platformę Javy która od strony użytkownika nie różni się wiele od tej używanej na komputerach PC. Na dzień dzisiejszy dostępne są dwie "konfiguracje":

 

Connected Limited Device Configuration

Dla urządzeń ze skromnymi zasobami, z 16-to lub 32-bitowym procesorem i ilością pamięci mieszczącą się w zakresie 160-512 kB. Dla Connected Limited Device Configuration zbudowana została specjalna maszyna wirtualna - K Virtual Machine (KVM). CLDC stosowana jest głownie w telefonach komórkowych, pagerach, organizerach i prostych urządzeniach w domu.

Connected Device Configuration

Connected Device Configuration stworzona została z myślą o urządzeniach o większych możliwościach - typowo 2MB pamięci lub więcej. W jej skład wchodzi większa maszyna - C Virtual Machine.

 

 

Profiles

Profile ("profil") to tworzone przez producentów urządzeń specyfikacje API dostępnego na urządzeniach ich klasy. W tym przypadku "klasa urządzenia" oznacza jego rodzaj, np. pralka, telefon czy robot-zabawka.

Profil zatem umożliwia konfigurację wirtualnej maszyny w ten sposób, by umożliwiała uruchamianie danego programu na wszystkich urządzeniach danego typu, a nie tylko na danym modelu.

Profile mogą również być tworzone dla grup współpracujących ze sobą aplikacji, działających na urządzeniach niekoniecznie należących do tej samej klasy - np. dobrze będzie jeśli ta sama aplikacja komunikująca się z bankiem będzie mogła działać zarówno na telefonie komórkowym jak i na pagerze, choć już niekoniecznie na misiu-zabawce. Można to osiągnąc właśnie przez utworzenie nowego profilu i zapewnienie jego wsparcia na docelowych urządzeniach, równolegle ze specyficznymi dla nich profilami "hardwareowymi".

Stąd jedne profile mogą być "bardziej hardwareowe", a inne "bardziej aplikacyjne". Aplikacje są pisane dla danego profilu, i mogą korzystać wyłącznie z API definiowanego przez ten profil. Producenci urządzeń decydują które profile chcą wspierać w swoich produktach, i są zobligowani do implementacji wszystkich możliwości definiowanych przez profile które wybiorą. Dzięki temu każda aplikacja napisana dla danego profilu będzie działać na wszystkich urządzeniach wspierających ten profil.

Każdy profil tworzony jest dla konkretnej configuration - obecnie jest to Connected Limited Device Configuration albo Connected Device Configuration.

Z punktu widzenia programisty profil to nic innego jak API i biblioteka dostępnych klas.

Związek między Java 2 Standard Edition, Connected Device Configuration i Connected Limited Device Configuration

 

Jak widać na obrazku, większość funkcjonalności Connected Device Configuration i Connected Limited Device Configuration została "odziedziczona" po Java 2 Standard Edition. Każda "dziedziczona" klasa musi być dokładnie taka sama lub być podzbiorem "nadklasy" z J2SE. Oprócz tego CDC i CLDC mogą wprowadzać dodatkową funkcjonalność specyficzną dla mikro urządzeń.

Warto zwrócić również uwagę na to, że Connected Device Configuration jest nadzbiorem Connected Limited Device Configuration - umożliwia to kompatybilność w górę. Wynika z tego m.in. to, że każdy profile działający na CLDC może działać również na CDC (p. MIDP - niżej).

 

Więcej o Connected Limited Device Configuration

Connected Limited Device Configuration obejmuje niektóre klasy z następujących obszarów:

Nie obejmuje natomiast:

Podstawowym istniejącym profilem dla Connected Limited Device Configuration jest Mobile Information Device Profile (MIDP), który omówiony zostanie w osobnym referacie.

 

Więcej o Connected Device Configuration

Connected Device Configuration jest nadzbiorem Connected Limited Device Configuration i obejmuje m.in. klasy następujących obszarów:

Samo CDC nie implementuje pełnej funkcjonalności J2SE dla w/w pakietów. Dlatego CDC rozszerza się o Foundation Profile:

Podstawowym istniejącym profilem dla Connected Device Configuration jest Foundation Profile. Przeznaczony jest on dla aplikacji wymagających pełnej implementacji wirtualnej maszyny, włączając w to Java 2 Platform Standard Edition API. Foundation Profile zawiera następujące pakiety:

 

Java TV Technology, czyli telewizja interaktywna

Wraz z rozwojem telewizji cyfrowej producenci zyskują duże pole do popisu jeśli chodzi o możliwości "programu telewizyjnego". Możliwe jest np. wraz z danymi audio/video przesyłanie aplikacji, która następnie zostanie uruchomiona lokalnie w telewizorze.

Technologia Java TV bazuje na tradycyjnej technologii Javy - składa się z maszyny wirtualnej oraz kilku specyficznych dla telewizji bibliotek.

 

Zależności między poszczególnymi elementami odbiornika telewizji cyfrowej korzystającego z technologii Java TV.

 

Java Card Technology, czyli aplikacje na karcie

Warto zwrócic uwagę, że karty same w sobie nie mają zasilania. Jak więc wygląda cykl życia wirtualnej maszyny działającej na takiej karcie? Otóż dzięki zastosowaniu technologii pamięci trwałej (np. EEPROM) stan maszyny jest po prostu automatycznie zapisywany na karcie przy odłączeniu zasilania. Jest on następnie odczytywany przy ponownym "uruchomieniu" karty.

Oprócz tego niuansu Java Card Virtual Machine nie różni się w istotny sposób od tradycyjnej Java Virtual Machine.

 

Java 2 Micro Edition Wireless Toolkit

Zbiór narzędzi udostępniających programistom środowisko emulacyjne, dokumentację i przykłady przydatne do tworzenia aplikacji dla CLDC/MIDP. W znakomity sposob może zostać zintegrowany np. z Forte For Java.

 

Bibliografia

Najbardziej komprehentnym znanym mi źródłem informacji nt. Java 2 Micro Edition i pokrewnych technologii jest http://java.sun.com/j2me . W szczególności znajduje się tam szczegółowa dokumentacja API dla poszczególnych konfiguracji i profili.