Wszystkie aplikacje napisane w J2ME pracuja w tzw. piaskownicy (sandbox), w ktorej maja ograniczony dostep do zasobow urzadzenia. Restrykcje te odnosza sie do potencjalnie groznych API (np. WMA) lub wybranych metod konfiguracji CLDC (zwykle metody dostepu do Internetu).
Specyfikacja MIDP J2ME wyroznia dwa zestawy MIDletow:
1. niezaufane (untrusted) - kazda aplikacja, ktora NIE jest zaufana (trusted). Mozliwe jest jej uruchomienie, ale z odpowiednimi ograniczeniami. W MIDP1.0 podstawowym ograniczeniem jest dostep do HttpConnection, a dokladniej do Connector.open("http://");. W MIDP2.0 restrykcje obejmuja tez obsluge polaczenia szyfrowanego HTTPS i SSL oraz low-level networking (sockety TCP/IP, datagramy UDP/IP).
Najczesciej zablokowany jest dostep do portow 80 (HTTP), 443 (HTTPS), 8080 (proxy) dla polaczen TCP. SonyEricsson, dla przykladu, dodatkowo blokuje polaczenia UDP na portach 9000, 9001, 9003.
W tym przypadku uzytkownik musi osobiscie wyrazic zgode na udzielenie danej aplikacji dostepu do zasobow. Dostawca MIDletu moze zglosic zadanie przydzielenia uprawnien, umieszczajac odpowiednie wpisy w deskryptorze aplikacji (.jad) lub w manifescie pliku .jar.
2. zaufane (trusted) - MIDlet, ktory jest podpisany certyfikatem. Pomijajac szczegoly sprawdzania podpisu (musi byc spelnionych kilka warunkow), wspomne tylko, ze autentycznosc certyfikatu sprawdzana jest na podstawie "certyfikatu nadrzednego" (root certificate) umieszczonego w telefonie (np. GEOTrust, VeriSIGN). Niektorzy producenci daja mozliwosc dodawania wlasnych certyfikatow.
Jesli aplikacja MIDP2.0 zostanie uznana jako zaufana, przypisywana jest do tzw. "domeny ochrony" (protection domain), ktora okresla, jakie uprawnienia moga byc nadane automatycznie (Allowed) a jakie uzytkownik ma przydzielic osobiscie (User). Domeny definiowane sa wewnetrznie, przez producentow urzadzen.
Kazdy, zaufany lub niezaufany, MIDlet ma dostep do podstawowego API, ktore obejmuje pakiety:
- javax.microedition.rms
- javax.microedition.midlet
- javax.microedition.lcdui
- javax.microedition.lcdui.game
- javax.microedition.media
- javax.microedition.media.control
Projektant aplikacji J2ME moze recznie zarzadac dostepu do okreslonego API lub jego czesci. Do tego celu sluza parametry: MIDlet-Permissions i MIDlet-Permissions-Opt. Pierwszy wskazuje uprawnienia, ktore sa niezbedne do dzialania aplikacji. Drugi wymienia zestaw uprawnien, ktore sa opcjonalne (ich brak oznacza jedynie ograniczona funkcjonalnosc aplikacji).
Przykladowy plik deskryptora .jad:
MIDlet-1: SocketMidlet, , mobile.test.http.SocketMidlet
MIDlet-Jar-Size: 1024
MIDlet-Jar-URL: SocketMidlet.jar
MIDlet-Name: SocketMidlet
MIDlet-Permissions: javax.microedition.io.Connector.socket
MIDlet-Vendor: Vendor
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
W srodowisku NetBeans wystarczy wybrac wlasciwosci danego projektu J2ME, potem Application Descriptor i w zakladce API Permissions dodac odpowiednie uprawnienia.
Pozdr.