J2ME%20CLDC%20MIDP%201.0 - PowerPoint PPT Presentation

About This Presentation
Title:

J2ME%20CLDC%20MIDP%201.0

Description:

J2ME CLDC MIDP 1.0 B a ej Pietrzak blazej.pietrzak_at_cs.put.poznan.pl Plan prezentacji Przegl d technologii Java J2ME CLDC MIDP 1.0 OTA Provisioning CLDC MIDP 1.0 ... – PowerPoint PPT presentation

Number of Views:117
Avg rating:3.0/5.0
Slides: 46
Provided by: BP90
Category:
Tags: 20cldc | 20midp | j2me | file | j2me

less

Transcript and Presenter's Notes

Title: J2ME%20CLDC%20MIDP%201.0


1
J2ME CLDC MIDP 1.0
  • Blazej Pietrzak blazej.pietrzak_at_cs.put.poznan.pl

2
Plan prezentacji
  • Przeglad technologii Java
  • J2ME CLDC MIDP 1.0
  • OTA Provisioning
  • CLDC MIDP 1.0 API
  • Problemyimplementacyjne

3
Przeglad 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 urzadzen
  • 160kB 512 kB pamieci dla platformy Java
  • Procesor 16-bit lub 32-bit
  • Niskie zuzycie energii
  • Dostep do sieci, czesto bezprzewodowej, o niskiej
    przepustowosci(czesto 9600 bps i nizszej)

8
CLDC Zakres
  • Podstawowe biblioteki Java
  • java.lang., java.util.
  • Wejscie / Wyjscie
  • java.io.
  • Siec (tylko interfejs)
  • Generic ConnectionFramework
  • Bezpieczenstwo
  • 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 Bezpieczenstwo
  • Weryfikacja pobranych klas
  • Aplikacje uruchamiane sa w piaskownicy (ang.
    Sandbox)
  • Klasy w chronionych pakietach systemowych nie
    moga byc 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
  • Obsluga bledów
  • brak wiekszosci podklas java.lang.Error
  • Bledy sa obslugiwane w sposób zalezny od
    urzadzenia

12
CLDC Ograniczenia c.d.
  • Brak Java Native Interface (JNI)
  • Brak class-loaders zdefiniowanych przez
    uzytkownika
  • Brak mechanizmu refleksji (ang. reflection)
  • Brak obslugi grup watków i watków demonów
  • Brak slabych referencji (ang. weak references)

13
CLDC/KVM Weryfikacja klas
14
CLDC/KVM Weryfikacja klas c.d.
  • Do klasy dodany jest atrybut stack map nie
    wystepujacy w J2SE
  • Zwiekszony rozmiar klasy o okolo 5
  • Szybciej niz w J2SE
  • mniejsze zuzycie pamieci niz w J2SE
  • ten sam poziom bezpieczenstwa co w J2SE
  • Klasy moga nadal byc uruchamiane w J2SE

15
MIDP Charakterystyka MID
  • Wyswietlacz (wymagania minimalne)
  • Rozmiar 96x54 pikseli
  • Glebia koloru 1-bit
  • Ksztalt piksela (Aspect ratio) okolo 11
  • Wejscie
  • One-handed keyboard(ITU-T phone keypad)
  • Two-handed keyboard (QWERTY keyboard)
  • Ekran dotykowy

16
MIDP - Zakres
  • Interfejs uzytkownika
  • Structured (Screen)
  • wysokopoziomowy dostep
  • wieksza przenoszalnosc
  • Unstructured (Canvas)
  • niskopoziomowy dostep
  • mniejsza przenoszalnosc
  • Generic ConnectionFramework
  • protokól http

17
MIDP Zakres c.d.
  • Dostep do pamieci stalej urzadzenia
  • Record Store
  • Dane zapisywane w postaci rekordów
  • Mozliwosc prostego filtrowania rekordów
  • Cykl zycia aplikacji
  • MIDlet
  • System properties
  • microedition.locale

18
OTA Provisioning
  • MIDlet Suite - dystrybucja aplikacji J2ME
  • .jad JAva Descriptor
  • .jar JAva aRchive

19
OTA Provisioning c.d.
20
OTA Provisioning c.d.
21
OTA Provisioning c.d.
  • HTTP 401 (unauthorized) lub 407 (proxy
    authentication required)
  • Implementacja przynajmniejBasic Authentication
    Scheme
  • cookie jako identyfikator sesji
  • MIME
  • text/vnd.sun.j2me.app-descriptor jad
  • Kodowanie przynajmniej UTF-8

22
OTA Provisioning c.d.
  • Identyfikacja urzadzenia
  • User-Agent
  • Accept-Language
  • Accept

23
OTA Provisioning c.d.
  • Plik JAD wymagane atrybuty

Atrybut Opis
MIDlet-Name Nazwa MIDlet Suite
MIDlet-Version Numer wersji MIDlet Suite
MIDlet-Vendor Organizacja
MIDlet-ltngt Nazwa, ikona, klasa ltngt MIDletu
MIDlet-Jar-URL URL, z którego mozna pobrac plik jar
MIDlet-Jar-Size Liczba bajtów pliku jar
MicroEdition-Configuration Wymagany profil J2ME
MicroEdition-Profile Wymagana konfiguracja J2ME
24
OTA Provisioning c.d.
  • Plik JAD opcjonalne atrybuty

Atrybut Opis
MIDlet-Data-Size Minimalna liczba bajtów pamieci
MIDlet-Delete-Confirm Tresc pytania przy usuwaniu MIDlet Suite
MIDlet-Description Opis MIDlet Suite
MIDlet-Icon Ikona MIDlet Suite
MIDlet-Info-URL URL do dodatkowej informacji
MIDlet-Install-Notify Status pobierania MIDlet Suite
25
OTA Provisioning c.d.
  • Fragment przykladowego pliku jad
  • MIDlet-Name Sample
  • MIDlet-Version 1.0
  • MIDlet-Vendor BP
  • MicroEdition-Profile MIDP-1.0
  • MicroEdition-Configuration CLDC-1.0
  • ...
  • 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 uzytkownikaCommand
28
API interfejs uzytkownikaCommand c.d.
29
API interfejs uzytkownika
  • 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 "Wyjscie"
  • 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.EXI
    T))
  • try
  • owner.destroyApp(false)
  • catch (MIDletStateChangeException
    ex)

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

36
API Generic Connection Framework Przyklady
  • Connection conn Connector.open(schemetarget
    parms)
  • Pliki
  • (StreamConnection) Connector.open(file//bp.txt)
  • HTTP
  • (HttpConnection) Connector.open(http//localhost
    8080/)
  • Sockets
  • (DatagramConnection) Connector.open(socket//129.
    14.11.29000)

37
API Record Store
  • pakiet javax.microedition.rms

38
API RecordStore Przyklad
  • public class FilterComparator
  • implements RecordFilter, RecordComparator
  • public boolean matches(byte candidate)
  • return (candidate0 A ?
  • false true
  • public int compare(byte arg1, byte arg2)
  • if (arg10 gt arg20) return 1
  • if (arg10 arg20) return 0
  • if (arg10 lt arg20) return 1

39
API RecordStore Przyklad
  • public void openRecordStore(String name)
  • try
  • recordStore
  • RecordStore.openRecordStore(name,
  • true)
  • catch (RecordStoreException ex)

40
API RecordStore Przyklad
  • 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 Przyklad
  • 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 Przyklad
  • try
  • int age inputStream.readInt()
  • String name inputStream.readUTF()
  • catch (EOFException ex)
  • ....

43
Implementacja
  • Problemy
  • Rozmiar pamieci
  • Szybkosc dzialania
  • Rozmiar kodu
  • Rozmiar ekranu
  • Klawiatura
  • Bledy w implementacji KVM
  • Garbage Collector

44
Literatura
  • Mobile Information Device Profile (MIDP) 1.0
    Final http//jcp.org/aboutJava/communityprocess/fi
    nal/jsr037/index.html
  • MIDP APIs for Wireless Applicationshttp//java.su
    n.com/products/midp/midp-wirelessapps-wp.pdf
  • Applications for MIDshttp//java.sun.com/products
    /midp/midpwp.pdf
  • MIDP 1.0 Style Guidehttp//java.sun.com/j2me/docs
    /zip/style-guide-html.zip
  • Forum Nokiahttp//www.forum.nokia.com/
  • Motocoderhttp//developers.motorola.com/developer
    s/default.asp

45
Koniec
  • Dziekuje za uwage i oczekuje pytan ?
Write a Comment
User Comments (0)
About PowerShow.com