Co to jest Java i dlaczego w telefonach?
Rosnące możliwości obliczeniowe (szybkość używanych procesorów i pojemność pamięci)
i prezentacyjne (rozmiary wyświetlaczy i liczba kolorów) nowych modeli telefonów
spowodowały zainteresowanie ich producentów poszerzaniem obszaru zastosowań tych
urządzeń jako jednym ze sposobów uzyskiwania przewagi nad konkurencją.
Tworzenie aplikacji (programów użytkowych) dla dowolnego komputera (a współczesny
telefon komórkowy jest w istocie wyspecjalizowanym komputerem) wymaga dostępności
odpowiedniego środowiska programistycznego, pozwalającego na pisanie, uruchamianie,
testowanie i instalowanie programów w docelowym urządzeniu.
Jednym z takich środowisk jest środowisko opracowanego w firmie Sun Microsystems
języka Java, mające wśród licznych zalet jedną, nader istotną dla producentów
telefonów komórkowych, wypuszczających na rynek coraz to nowe modele tych urządzeń:
niezależność oprogramowania od sprzętu przy spełnieniu dobrze określonych warunków.
Programy są bowiem wykonywane nie bezpośrednio przez procesor urządzenia, a przez
zainstalowaną na nim tzw. wirtualną maszynę Java.
Oznacza to w praktyce brak konieczności wprowadzania w programie zmian i powtórnej jego
kompilacji (tłumaczenia na maszynowe rozkazy konkretnego procesora) przy istalowaniu
go kolejnym modelu urządzenia tej samej kategorii, mającym zainstalowaną analogiczną
wirtualną maszynę Java.
Możliwości i bariery
Wydajność (szybkość działania) aplikacji wykonywanych w środowisku Java jest siłą
rzeczy mniejsza niż identycznych funkcjonalnie programów, przetłumaczonych na wewnętrzny
język danego komputera i wykonywanych bezpośrednio przez jego procesor. Ta cecha
aplikacji napisanych w języku Java traci na znaczeniu w związku z coraz większą
wydajnością samych procesorów, wbudowywanych w telefony komórkowe.
Istotniejszą barierą rozwoju "pozatelefonicznych" zastosowań telefonów komórkowych
jest mała - jak dotąd - szybkość transmisji danych, przy jednocześnie wysokiej cenie
tej usługi. Nadziei na przełamanie tej bariery można upatrywać w rosnącej konkurencji
pomiędzy operatorami oraz w spodziewanym uruchomieniu sieci tzw. trzeciej generacji.
Coraz większa szybkość i malejący koszt transmisji danych, zwiększająca się pojemność informacyjna
wyświetlaczy oraz rosnąca podaż telefonów zgodnych ze specyfikacją
MIDP 2.0 pozwala założyć, że coraz częściej aplikacje instalowane w telefonach komórkowych będą
wykorzystywane do obsługi istotnej części działalności przedsiębiorstw handlowych, banków itp. -
wszędzie tam, gdzie konieczny jest szybki i bezpieczny dostęp do baz danych i związanych z nimi
usług, niezależnie od aktualnego miejsca pobytu użytkownika lub pracownika.
Podstawowe standardy
Implementacja języka i środowiska programistycznego Java, przeznaczona
dla urządzeń o ograniczonych zasobach i możliwościach komunikacyjnych,
nosi nazwę Java 2 Micro Edition - w skrócie J2ME. Środowisko to jest
definiowane przez dwie specyfikacje:
CLDC
(
ang. Connected Limited Device Configuration) i
MIDP
(
ang. Mobile Information Device Profile).
Większość telefonów komórkowych, na których jest dostępna J2ME, spełnia
wymagania specyfikacji CLDC w wersji
1.0:
- procesor 16 lub 32-bitowy
-
od 160 do 512 KB pamięci dostępnych łącznie dla implementacji języka
Java i samej aplikacji, przy czym 128 KB jest zarezerwowane na wirtualną
maszynę Javy (KVM) i biblioteki związane ze sprzętem;
-
połączenie z siecią, zazwyczaj bezprzewodowe, o niewielkiej przepustowości;
- interfejs użytkownika o ograniczonych możliwościach - niewielki wyświetlacz
o małej liczbie kolorów, kilka klawiszy sterujących.
- bateryjne źródło zasilania;
Do niedawna istniały jedynie telefony komórkowe zgodne ze specyfikacją
MIDP 1.0,
określającą zestaw klas i metod, z których mogą korzystać twórcy oprogramowania
dla tych telefonów.
MIDP 1.0
definiuje w szczególności:
- klasy i metody służące do organizacji komunikacji z użytkownikiem,
- organizację i obsługę nieulotnej bazy danych,
- obsługę połączeń sieciowych i dostępne protokoły.
Specyfikacja ta jest dość uboga, nie opisuje np. sposobu korzystania z wielu funkcji
dostępnych we współczesnych telefonach komórkowych. Ujemnym tego skutkiem
było wprowadzanie przez większość producentów telefonów własnych rozszerzeń
(pozwalających np. na wysyłanie SMS z poziomu aplikacji Java lub komunikację
pomiędzy telefonem a komputerem klasy PC), istotnie zmniejszających przenośność
(uniwersalność) aplikacji.
W 2002 roku została zatwierdzona wersja
2.0
specyfikacji MIDP. Znacznie w niej rozszerzono graficzne i dźwiękowe możliwości interfejsu, wprowadzono
obsługę wykorzystujących techniki kryptograficzne bezpiecznych protokołów
komunikacyjnych SSL i WTLS, standardem stała się spotykana dotąd jedynie
w rozszerzeniach poszczególnych producentów możliwość komunikacji z innymi
urządzeniami poprzez interfejs szeregowy.
Telefony zgodne ze specyfikacją
MIDP 2.0 zaczynają coraz liczniej
pojawiać się na rynku - jako przykład można wymienić modele Nokia 6230 i Siemens
SL65.
Efektem upowszechnienia się tej klasy telefonów może być ogólna dostępność
zaawansowanych aplikacji handlowych, bankowych itp., wykorzystujących
dostępne w tych urządzeniach techniki uwierzytelniania i bezpiecznej komunikacji.
Instalowanie aplikacji
Aplikacje napisane w języku Java mogą być zainstalowane w telefonie komórkowym
już na etapie jego produkcji (tzw. preinstalacja), jednak producenci zazwyczaj
ograniczają się do instalowania gier lub programów raczej trywialnych,
w rodzaju aplikacji przeliczającej stopnie Celsjusza na Fahrenheita i odwrotnie.
Chcąc zainstalować program samodzielnie, mamy do wyboru dwie metody:
-
instalacja przy użyciu dostarczonego przez producenta telefonu oprogramowania
obsługującego komunikację pomiędzy telefonem a komputerem osobistym;
-
instalacja z witryny sieciowej, np. z Internetu.
Pierwsza z wymienionych metod przydatna jest raczej dla autorów aplikacji,
testujących je na rzeczywistym sprzęcie, po etapie uruchamiania i wstępnego
testowania w środowisku symulacyjnym. Użytkownicy chcący zainstalować
gotową aplikację posługują się zazwyczaj drugą z tych metod, wykorzystującą
tzw. technologię OTAP -
ang. Over The Air Provisioning.
Skorzystanie z tej metody wymaga posiadania telefonu z włączoną usługą
transmisji danych (np. GPRS) i wbudowaną weń przeglądarką internetową.
Należy wtedy wybrać interesującą nas pozycję z menu wyświetlanego w witrynie
dostawcy oprogramowania lub bezpośrednio podać sieciowy adres (tzw. URL)
odpowiedniego pliku o nazwie zakończonej członem ".jad" (
ang. Java
Application Descriptor). Zainteresowanych szczegółami odsyłamy - chcąc
zachować rozsądne rozmiary tej rubryki - np. do dokumentu "
Over The Air User Initiated Provisioning Recommended Practice
for the Mobile Information Device Profile".
Bezpieczeństwo
Telefon komórkowy przechowuje wiele istotnych dla użytkownika danych,
mających zazwyczaj charakter tzw. "wrażliwych danych": lista kontaktów,
historia połączeń, treść odebranych i nadanych wiadomości SMS itp.
Telefon ten jednocześnie posiada rozbudowane możliwości komunikowania się
z zasobami różnych sieci, w tym publicznej sieci Internet.
Sytuacja,
w której uruchomiona aplikacja Java mogłaby bez wiedzy
i akceptacji użytkownika telefonu przekazywać dokądkolwiek jego prywatne dane (np. książkę
teleadresową) jest z oczywistych względów nie do przyjęcia. Z tego też
powodu autorzy specyfikacji J2ME oraz twórcy wszystkich implementacji
tego języka w telefonach komórkowych wielką wagę zawsze przywiązywali
do zabezpieczenia użytkowników aplikacji przed takimi zagrożeniami.
W szczególności żadna aplikacja nie może bez wiedzy i zgody użytkownika nawiązać połączenia
ze światem zewnętrznym, nie może też uzyskać dostępu do danych związanych
z innymi aplikacjami. Ograniczenia te dotyczą w równym stopniu wszystkich
aplikacji, w tym tzw. aplikacji "złośliwych", które mogą być napisane i rozpowszechniane
w przestępczych celach.
Specyfikacja
MIDP 2.0,
wzbogacając mechanizmy komunikacji pomiędzy aplikacją J2ME a otoczeniem,
poszerza jednocześnie możliwości kontroli jej zachowania. Interesującą
i użyteczną nowością jest możliwość nadania instalowanej aplikacji statusu
tzw. aplikacji zaufanej, jeżeli jej kod jest opatrzony cyfrowym podpisem
podmiotu, któremu ufamy. Autentyczność tego podpisu oraz integralność
i autentyczność opatrzonego nim kodu aplikacji jest weryfikowana przez urządzenie
(telefon) przed zainstalowaniem danej aplikacji.