< Wprowadzenie do technologii J2MEMaszyna wirtualna CLDC - KVM >

Konfiguracja CLDC

Konrad Palczewski

Utworzony: 07-09-2003. Wersja: 1.0

Podstawy nt. konfiguracji CLDC: Zawarte pakiety i klasy, przeznaczenie konfiguracji, profile na niej budowane.




Wstęp do konfiguracji CLDC

CLDC jest konfiguracją opracowaną przez JCP dla urządzeń o bardzo ograniczonej mocy procesora i dostępnej ilości pamięci. Są to przede wszystkim telefony komórkowe i słabe PDA.

Dokładna dokumentacja dostępna jest pod adresem http://jcp.org/jsr/detail/30.jsp. Tutaj przedstawię tylko krótki wstęp niezbędny do zrozumienia kolejnych rozdziałów tego kursu.

Connected, Limited Device Configuration jest podstawą dla dwóch profili. Pierwszy - MID Profile - został już opracowany i jest implementowany w przenośnych urządzeniach. W planach jest jeszcze "wypuszczenie" profilu przeznaczonego specjalnie dla urządzeń klasy PDA - urządzeń jakże różnych od telefonów komórkowych.
Profil ten nazywa się PDA Profile i jego rozwój można obserwować na stronie Java Community Process: http://jcp.org/jsr/detail/75.jsp. Profil ten będzie umożliwiał dostęp do kalendarza, książki adresowej i listy spraw do zrobienia, a także będzie umożliwiał działanie w systemie plików urządzenia, pozwalając aplikacji działać np. na plikach wymienialnych kart pamięci. Obecnie urządzenia PDA implementują profil MIDP.

Poniższy szkic prezentuje prostą zależność opisywanej konfiguracji i jej profili:

Diagram prezentujący zależność konfiguracji CLDC i jej profili.
Konfiguracja CLDC i jej profile.

Zawartość CLDC

Widzimy, że konfiguracja CLDC definiuje bazę, na której zbudowane są jej profile. Definiując tę bazę, opierano się na standardowej wersji Javy (dokładnie na specyfikacji wersji 1.3).

Do CLDC przeniesiono klasy z trzech pakietów podstawowej wersji Javy:

  • java.io
  • java.lang
  • java.util

Widać, iż jest to minimalny zestaw pakietów. Nie zawiera np. żadnego interfejsu użytkownika. Taka funkcjonalność zostanie dodana przez profile.

Ponieważ nie wszystkie klasy z powyższych pakietów zostały przeniesione do CLDC, warto obejrzeć dokumentację i sprawdzić które klasy do J2ME nie trafiły.
Widzimy w niej, że wielu klas z przeniesionych pakietów brakuje. Niektóre klasy odrzucono, jako zbyt "zasobochłonne", inne ze względu na bezpieczeństwo. Nie przeniesiono również większości klas oznaczonych w Java 2 v1.3 jako "deprecated", czyli nie zalecanych do stosowania. W standardowej wersji Javy są one obecne ze względu na wymóg "zgodności wstecz", w przypadku technologii J2ME takiego wymogu brak.

W przypadku CLDC klasy, które dołączone są z J2SE mogą zostać zmodyfikowane. Nie można oczywiście rozszerzyć funkcjonalności klasy, ale można ją "odchudzić" pozbywając się metod i pól bądź działających na odrzuconych klasach (jak Double czy Float), bądź nie zalecanych w Java 2 w wersji 1.3.

Widzimy także, że dodano pakiet napisany "od zera". javax.microedition.io zawiera klasy i interfejsy wchodzące w skład tzw. GCF (Generic Connection Framework), który zapewnia dostęp do zewnętrznych sieci czy urządzeń. Konfiguracja CLDC nie wprowadza jednak protokołu HTTP. Wymóg obsługi tego protokołu przez urządzenia wprowadza profil MIDP.

CLDC w wersji 1.1

27.03.2003 grupa ekspercka ukryta pod JSR-139 opublikowała ostateczną wersję specyfikacji opracowywanej przez siebie konfiguracji CLDC 1.1.
Celem grupy nie było stworzenie konkurencyjnego modelu, ale uporządkowanie zawartości i dokumentacji wersji 1.0. CLDC 1.1 rozszerza więc CLDC 1.0, zachowując jednocześnie "zgodność wstecz". Poniżej przedstawię istotne różnice pomiędzy obiema wersjami:

  • Dodano obsługę wartości zmiennoprzecinkowych.
    Dodano klasy Float oraz Double, których bardzo brakowało w wersji poprzedniej. Zatroszczono się również o metody usunięte wcześniej ze względu na to, iż operowały na liczbach zmiennoprzecinkowych. Wróciły do swoich pierwotnych klas:)
  • Powróciła obsługa słabych referencji.
  • Rozszerzono klasę Thread.
    Teraz - jak w J2SE - wątki mają nazwy. Dodano metodę Thread.getName() do jej pobrania oraz dodano nowe konstruktory.
  • Specyfikacja mówi również o usuniętych błędach i odchudzonej dokumentacji.

Przede wszystkim poprzez dodanie działań na liczbach zmiennoprzecinkowych zwiększono wymagania w stosunku do urządzeń, na których CLDC 1.1 mialoby być implementowane.
Oczywiście chodzi przede wszystkim o pamięć. Zamiast - jak w przypadku CLDC 1.0 - 160kB dla samej platformy plus 32 dla sterty, wymagania CLDC 1.1 przewidują 192kB dla platformy i 32 dla sterty. Wymagane 8kB dla pamięci nieulotnej pozosteje bez zmian.
Inne wymogi dotyczące sprzętu, jak dostęp do internetu pozostają te same, co dla wersji 1.0.



Copyright (c) 2003 - 2005 Konrad Palczewski - kondziop (at) midlety.net
Wszelkie prawa zastrzeżone.
Designed by KefArts