Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

J2ME CLDC MIDP 1.0 Błażej Pietrzak

Podobne prezentacje


Prezentacja na temat: "J2ME CLDC MIDP 1.0 Błażej Pietrzak"— Zapis prezentacji:

1 J2ME CLDC MIDP 1.0 Błażej Pietrzak

2 Plan prezentacji Przegląd technologii Java J2ME CLDC MIDP 1.0 OTA Provisioning CLDC MIDP 1.0 API Problemy implementacyjne

3 Przegląd technologii Java

4 Skróty CLDC – Connected Limited Device Configuration CDC – Connected Device Configuration KVM – Kilobyte Java Virtual Machine JVM – Java Virtual Machine MID – Mobile Information Device MIDP - Mobile Information Device Profile

5 Stos J2ME

6 Stos J2ME - Konfiguracje

7 CLDC – Charakterystyka urządzeń 160kB – 512 kB pamięci dla platformy Java Procesor 16-bit lub 32-bit Niskie zużycie energii Dostęp do sieci, często bezprzewodowej, o niskiej przepustowości (często 9600 bps i niższej)

8 CLDC – Zakres Podstawowe biblioteki Java –java.lang.*, java.util.* Wejście / Wyjście –java.io.* Sieć (tylko interfejs) –Generic Connection Framework Bezpieczeństwo Lokalizacja (ang. Internationalization) –zapis/odczyt Unicode ze strumieni

9 CLDC – Zakres c.d. System properties java.lang.System.getProperty(key) microedition.platform microedition.encoding microedition.configuration microedition.profiles

10 CLDC – Bezpieczeństwo Weryfikacja pobranych klas Aplikacje uruchamiane są w piaskownicy (ang. Sandbox) Klasy w chronionych pakietach systemowych nie mogą być nadpisane przez aplikacje

11 CLDC – Ograniczenia Ograniczenia w stosunku do J2SE –Brak danych typu zmiennoprzecinkowego float double –Brak finalizacji (ang. finalization) instancji klas Object.finalize() nie istnieje –Obsługa błędów brak większości podklas java.lang.Error Błędy są obsługiwane w sposób zależny od urządzenia

12 CLDC – Ograniczenia c.d. –Brak Java Native Interface (JNI) –Brak class-loaders zdefiniowanych przez użytkownika –Brak mechanizmu refleksji (ang. reflection) –Brak obsługi grup wątków i wątków demonów –Brak słabych referencji (ang. weak references)

13 CLDC/KVM – Weryfikacja klas

14 CLDC/KVM – Weryfikacja klas c.d. Do klasy dodany jest atrybut stack map nie występujący w J2SE Zwiększony rozmiar klasy o około 5% Szybciej niż w J2SE mniejsze zużycie pamięci niż w J2SE ten sam poziom bezpieczeństwa co w J2SE Klasy mogą nadal być uruchamiane w J2SE

15 MIDP – Charakterystyka MID Wyświetlacz (wymagania minimalne) –Rozmiar 96x54 pikseli –Głębia koloru 1-bit –Kształt piksela (Aspect ratio) około 1:1 Wejście –One-handed keyboard (ITU-T phone keypad) –Two-handed keyboard (QWERTY keyboard) –Ekran dotykowy

16 MIDP - Zakres Interfejs użytkownika –Structured (Screen) wysokopoziomowy dostęp większa przenoszalność –Unstructured (Canvas) niskopoziomowy dostęp mniejsza przenoszalność Generic Connection Framework –protokół http

17 MIDP – Zakres c.d. Dostęp do pamięci stałej urządzenia –Record Store –Dane zapisywane w postaci rekordów –Możliwość prostego filtrowania rekordów Cykl życia aplikacji –MIDlet System properties –microedition.locale

18 OTA Provisioning MIDlet Suite - dystrybucja aplikacji J2ME –*.jadJAva Descriptor –*.jarJAva aRchive

19 OTA Provisioning – c.d.

20

21 HTTP 401 (unauthorized) lub 407 (proxy authentication required) Implementacja przynajmniej Basic Authentication Scheme cookie jako identyfikator sesji MIME text/vnd.sun.j2me.app-descriptor jad Kodowanie przynajmniej UTF-8

22 OTA Provisioning – c.d. Identyfikacja urządzenia –User-Agent –Accept-Language –Accept

23 OTA Provisioning – c.d. Plik JAD – wymagane atrybuty AtrybutOpis MIDlet-NameNazwa MIDlet Suite MIDlet-VersionNumer wersji MIDlet Suite MIDlet-VendorOrganizacja MIDlet- Nazwa, ikona, klasa MIDletu MIDlet-Jar-URLURL, z którego można pobrać plik jar MIDlet-Jar-SizeLiczba bajtów pliku jar MicroEdition-ConfigurationWymagany profil J2ME MicroEdition-ProfileWymagana konfiguracja J2ME

24 OTA Provisioning – c.d. Plik JAD – opcjonalne atrybuty AtrybutOpis MIDlet-Data-SizeMinimalna liczba bajtów pamięci MIDlet-Delete-ConfirmTreść pytania przy usuwaniu MIDlet Suite MIDlet-DescriptionOpis MIDlet Suite MIDlet-IconIkona MIDlet Suite MIDlet-Info-URLURL do dodatkowej informacji MIDlet-Install-NotifyStatus pobierania MIDlet Suite

25 OTA Provisioning – c.d. Fragment przykładowego pliku jad MIDlet-Name: Sample MIDlet-Version: 1.0 MIDlet-Vendor: BP MicroEdition-Profile: MIDP-1.0 MicroEdition-Configuration: CLDC MIDlet-1: Sokoban, /icons/Sokoban.png, com.bp.sokoban.Sokoban MIDlet-2: HttpTest,,com.bp.http.HttpTest

26 API - MIDlet Pakiet javax.microedition.midlet

27 API – interfejs użytkownika Command

28 API – interfejs użytkownika Command – c.d.

29 API – interfejs użytkownika Pakiet javax.microedition.lcdui

30 API – Hello World

31 API – HelloWorld.jad MIDlet-1: Hello World,, HelloWorldMIDlet MIDlet-Jar-Size: 100 MIDlet-Jar-URL: HelloWorld.jar MIDlet-Name: HelloWorld MIDlet-Vendor: BP MIDlet-Version: 1.0 text: JUG rulez!

32 API – HelloWorldMIDlet.java public class HelloWorldMIDlet extends MIDlet { private Displayable form = new HelloWorldForm(getAppProperty("text")); public HelloWorldMIDlet() { form.setCommandListener( new HelloWorldListener(this)); } protected void startApp() throws MIDletStateChangeException { Display.getDisplay(this).setCurrent(form); } protected void pauseApp() { } public void destroyApp(boolean unconditional) throws MIDletStateChangeException { notifyDestroyed(); }

33 API – HelloWorldForm.java import javax.microedition.lcdui.*; public class HelloWorldForm extends Form { public static final String EXIT = "Wyjście"; public HelloWorldForm(String text) { super("Hello World"); append((text == null) ? "" : text); addCommand(new Command(EXIT, Command.EXIT, 1)); }

34 API – HelloWorldListener.java public class HelloWorldListener implements CommandListener { private HelloWorldMIDlet owner = null; public HelloWorldListener(HelloWorldMIDlet owner) { this.owner = owner; } public void commandAction(Command c, Displayable d){ if (c.getLabel().equals(HelloWorldForm.EXIT)) { try { owner.destroyApp(false); } catch (MIDletStateChangeException ex) { } }

35 API – Generic Connection Framework Pakiet javax.microedition.io

36 API – Generic Connection Framework – Przykłady Connection conn = Connector.open({scheme}:[{target}][parms]); Pliki (StreamConnection) Connector.open(file://bp.txt); HTTP (HttpConnection) Connector.open(http://localhost:8080/); Sockets (DatagramConnection) Connector.open(socket:// :9000);

37 API – Record Store pakiet javax.microedition.rms

38 API – RecordStore – Przykład public class FilterComparator implements RecordFilter, RecordComparator { public boolean matches(byte[] candidate) { return (candidate[0] == A ? false : true; } public int compare(byte[] arg1, byte[] arg2){ if (arg1[0] > arg2[0]) { return 1; } if (arg1[0] == arg2[0]) { return 0; } if (arg1[0] < arg2[0]) { return –1; } }

39 API – RecordStore – Przykład public void openRecordStore(String name) { try { recordStore = RecordStore.openRecordStore(name, true); } catch (RecordStoreException ex) { } }

40 API – RecordStore – Przykład public void addPerson(String name, int age) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream outputStream = new DataOutputStream(baos); try { outputStream.writeInt(age); outputStream.writeUTF(name); } catch (IOException ex) { } byte[] b = baos.toByteArray(); try { recordStore.addRecord(b, 0, b.length); } catch (RecordStoreException ex) { } }

41 API – RecordStore – Przykład public void printPeople(RecordFilter filter, RecordComparator comparator) { RecordEnumeration re = null; ByteArrayInputStream bais = null; DataInputStream inputStream = null; try { re = recordStore.enumerateRecords(filter, comparator, true); while (re.hasNextElement()) { int id = re.nextRecordId(); bais = new ByteArrayInputStream( recordStore.getRecord(id)); inputStream = new DataInputStream(bais);...

42 API – RecordStore – Przykład try { int age = inputStream.readInt(); String name = inputStream.readUTF(); } catch (EOFException ex) { }....

43 Implementacja Problemy –Rozmiar pamięci –Szybkość działania –Rozmiar kodu –Rozmiar ekranu –Klawiatura –Błędy w implementacji KVM –Garbage Collector

44 Literatura Mobile Information Device Profile (MIDP) 1.0 Final MIDP APIs for Wireless Applications Applications for MIDs MIDP 1.0 Style Guide Forum Nokia Motocoder

45 Koniec Dziękuję za uwagę i oczekuję pytań


Pobierz ppt "J2ME CLDC MIDP 1.0 Błażej Pietrzak"

Podobne prezentacje


Reklamy Google