01 J2ME Overview

Embed Size (px)

Citation preview

  • 8/2/2019 01 J2ME Overview

    1/42

    Tng quan v cng ngh J2ME

    v kin trc J2METhS. Trnh Cng Duy

    i hc Bch Khoa NngKhoa Cng Ngh Thng Tin

  • 8/2/2019 01 J2ME Overview

    2/42

    Tng quan v J2ME (J2ME Overview)

    JavaL ngn ng c pht trin bi cng tySun Microsystems

    N i hi phi c mt my o (Virtualmachine) bin dch m ngun (sourcecodes) v to ra m bytecode (generatebytecode)

    C php tng t C++

  • 8/2/2019 01 J2ME Overview

    3/42

    Lch s pht trin JAVA

    Vo nhng nm u ca thp k 90, da trn ngn ngC++, Sun xy dng mt ngn ng mi ly tn l Oaknhm pht trin cc ng dng dnh cho cc thit bkhng dy v giao tip cng hng ngoi.

    Sun lc b i cc thnh phn ca ngn ng C++nh con tr v vic qun l b nh nhm h tr cho ccthit b gii hn v b nh v b vi x l.

    Vo nm 1995, Sun i tn ngn ng Oak thnh Java.

  • 8/2/2019 01 J2ME Overview

    4/42

    Cc phin bn ca JavaThng 12/1998, nhm h tr cho cc loi thit b c dunglng b nh v tc b vi x l khc nhau, Sun

    Microsystem nh ngha cc phin bn chun :J2EE (nn tng Java 2, phin bn doanh nghip -Java 2 Platform, Enterprise Edition): chy trn mych ln vi sc mnh x l v dung lng b nh

    ln, h tr gn lin vi servlet, jsp v XML.J2SE (phin bn chun Java 2 Platform,Standard Edition): c dng trn cc my tnh cnhn v laptop. Cc my ny mc d khng mnh

    hn cc my ch ln song chng vn mnh hnnhiu so vi thit b di ng. N c th chy trn cch iu hnh Linux, Solaris, Microsoft Windows.

    J2ME (phin bn thu nh - Java 2 Platform, MicroEdition): l phin bn rt gn ca Java dnh cho ccthit b di ng b gii hn v b nh v b x l.

  • 8/2/2019 01 J2ME Overview

    5/42

    Kin trc tng qut ton b nn tng Java 2

  • 8/2/2019 01 J2ME Overview

    6/42

    Cch lm vic ca Java

  • 8/2/2019 01 J2ME Overview

    7/42

    Cch lm vic ca Java

  • 8/2/2019 01 J2ME Overview

    8/42

    J2MEChun J2ME chia cc thit b lm hai loi :

    Thit b thng tin di ng, c nhn (Personal, MobileInformation devices) c kh nng truyn thng trn mngmt cch ri rc nh: in thoi di ng (Mobilephones), my nhn tin hai chiu (two-way pagers), mytr l c nhn dng k thut s (personal digital

    asisstants-PDAs). Loi ny dng cho mt mc ch cbit, thng gii hn v chc nng, v da trn cuhnh CLDC ( Connected Limited Device Configuration).

    Thit b thng tin kt ni chia s (shared connectionInformation devices): c kt ni c nh v lin tcnh set-top boxes, Internet TVs, Internet enabledscreen phones, high end communicators, h thngiu hng xe hi. Loi ny h tr v giao din ngidng v da trn cu hnh CDC ( Connected Device

    Configuration).

  • 8/2/2019 01 J2ME Overview

    9/42

    J2ME

    Ta ch xt phin bn CLDC, phin bn J2ME ny dnh

    cho cc thit b c b nh gii hn nh in thoi ding. (Ni chung n dng cho cc thit b di ng hotng bng ngun pin). Phin bn ny ca Java cn t bnh hn phin bn CDC.

    J2ME c thit k chy trn cc in thoi di ngc cu hnh ti thiu nh sau:

    B nh tng cng: 128-512 KB

    B x l: 16 n 32 bit

    Tc x l: 8-32 MHzNng lng: gii hn, hot ng bng pin

    Bng thng: gii hn, khong 9600 bps

  • 8/2/2019 01 J2ME Overview

    10/42

  • 8/2/2019 01 J2ME Overview

    11/42

    Kin trc ca Java 2v cc thit b m tng phin bn h tr

  • 8/2/2019 01 J2ME Overview

    12/42

    Kin trc ca J2ME

    Mc tiu chnh ca J2ME l cho php lp trnh vin vitcc ng dng c lp vi thit b di ng, khng cnquan tm n cc thit b phn cng tht s.

    V d nh mt lp trnh vin vit chng trnh game cho

    in thoi Samsung th c th sa i chng trnh camnh mt cch ti thiu nht c th chy trn inthoi Nokia.

    t c mc tiu ny, J2ME xy dng cc tng(layer) khc nhau che giu i vic thc hin phncng khi nh pht trin.

  • 8/2/2019 01 J2ME Overview

    13/42

    Kin trc ca J2MEKin trc ca J2ME gm cc tng chnh l:

    MIDP (Mobile Information Device Profile)

    CLDC(Connected limited device configuration),

    JVM(Java Virtual Machine)

  • 8/2/2019 01 J2ME Overview

    14/42

    Kin trc ca J2ME

    Device Hardware Layer:

    chnh l cc thit b di ng tht s vi cu hnhphn cng, b nh v tc x l.

    Khng phi l mt phn ca J2ME nhng tngny l ni xut pht, cc thit b di ng khcnhau c th c b vi x l khc nhau vi cc tpm lnh khc nhau

    mc tiu ca J2ME l cung cp mt chun chott c cc loi thit b di ng khc nhau.

  • 8/2/2019 01 J2ME Overview

    15/42

    Kin trc ca J2ME

    Java Virtual Machine layer:

    khi m ngun Java c bin dch n c chuyni thnh m bytecode.

    M bytecode ny sau c chuyn thnh ngnng my ca thit b di ng.

    Tng my o Java bao gm KVM (Kilobyte VirtualMachine) l b bin dch m bytecode c nhim vchuyn m bytecode ca chng trnh Java thnhngn ng my chy trn cc thit b di ng.

    Tng ny cung cp mt s chun ha cho cc thit bdi ng ng dng J2ME sau ny khi bin dchc th hot ng trn bt k thit b di ng no cJ2ME KVM.

  • 8/2/2019 01 J2ME Overview

    16/42

    Kin trc ca J2ME

    Configuration Layer:

    nh ngha giao din ngn ng Java (Java languageinterface) c bn cho php chng trnh Javachy trn thit b di ng.

    y l mt tp cc API nh ngha li ca ngn ng

    J2ME. Lp trnh vin c th s dng cc lp vphng thc ca cc API ny tuy nhin tp cc APIhu dng hn c cha trong tng profile.

    Hin nay Sun a ra 2 dng Configuration:

    CLDC - Connected Limited DeviceConfiguration.

    CDC - Connected Device Configuration .

  • 8/2/2019 01 J2ME Overview

    17/42

    Kin trc ca J2MEProfile Layer:

    m rng Configuration bng cch thm vo cc lp h tr cc tnh nng cho tng thit b chuyn bit.

    Mc ch l xy dng trn lp cu hnh v cung cpnhiu th vin ng dng hn, MIDP nh ngha cc

    API ring bit cho thit b di ng.

    Cng c th c cc hin trng v cc API khc ngoiMIDP c dng cho ng dng.

    V d, c th c hin trng PDA nh ngha cc lp vphng thc hu dng cho vic to cc ng dng

    PDA (lch, s hn, s a ch,). Cng c th c mthin trng nh ngha cc API cho vic to cc ngdng Bluetooth: Chun hin trng PDA l c t JSR- 75 v chun bluetooth API l c t JSR - 82 vi

    JSR l vit tt ca Java Specification Request

  • 8/2/2019 01 J2ME Overview

    18/42

    My o Java

    My o Java (KVM : Kilobyte Virtual Machine) c btngun t h thng tm kim c gi l Spotless cpht trin u tin ti Sun Microsoft Laboratories. Hthng Spotless thc thi h thng Java cho PalmConnected Organizer. KVM l my o Java linh hot,gn nh c thit k cho cc thit b kt ni mng cb nh nh, ti nguyn gii hn. KVM c thit k vicc c im:

    Yu cu b nh ch khong 40-80 kilobytes.

    Yu cu b nh ng khong: 20-40 kilobytes.

    B vi x l 16/32 bit vi tc ch 25MHz.

  • 8/2/2019 01 J2ME Overview

    19/42

    My o Java

    Vai tr ca my o Java (KVM) l dch m bytecodec sinh ra t chng trnh Java bin dch sangngn ng my. Chnh KVM chun ha output ca ccchng trnh Java cho cc thit b di ng khc nhau cth coi b vi x l v cc tp lnh khc nhau. Khng cKVM, cc chng trnh Java phi c bin dch thnhcc tp lnh cho mi thit b di ng. Nh vy, lp trnhvin phi xy dng nhiu ch cho mi loi thit b ding

  • 8/2/2019 01 J2ME Overview

    20/42

  • 8/2/2019 01 J2ME Overview

    21/42

    So snh gia CLDC v CDC

  • 8/2/2019 01 J2ME Overview

    22/42

    Cu hnh

    C 2 dng cu hnh k trn u cha my o Java (Java VirtualMachine) v tp hp cc lp Java c bn cung cp mt mitrng cho cc ng dng J2ME.

    Tuy nhin, i vi cc thit b cp thp, do hn ch v ti nguynnh b nh v b x l nn khng th yu cu my o h tr tt c

    cc tnh nng nh vi my o ca J2SE.V d, cc thit b thuc CLDC khng c phn cng yu cu ccphp tnh ton du phy ng, nn my o thuc CLDC khng cyu cu h tr kiu float v double. Ngha l, th vin CLDC khngh tr lpjava.lang.Float, phng thc Object.finalize( ) cng khngc h tr.

  • 8/2/2019 01 J2ME Overview

    23/42

  • 8/2/2019 01 J2ME Overview

    24/42

    So snh gia CLDC v CDC

    CLDC CDC

    Ram >=32K, =256K

    Rom >=128k, =512k

    Ngun

    nng lng

    C gii hn (ngun pin) Khng gii hn

    Network Chm Nhanh

  • 8/2/2019 01 J2ME Overview

    25/42

    Profile

    Profile m rng Configuration bng cch thmvo cc class b tr cc tnh nng cho tngthit b chuyn bit. C 2 Configuration u cnhng profile lin quan v t nhng profile nyc th dng cc class ln nhau.

    Do mi profile nh ngha mt tp hp cc classkhc nhau, nn thng ta khng th chuyn mtng dng Java vit cho mt profile ny v chytrn mt my h tr mt profile khc. Cng vi l

    do , bn khng th ly mt ng dng vit trnJ2SE hay J2EE v chy trn cc my h trJ2ME

  • 8/2/2019 01 J2ME Overview

    26/42

    Mt s Profile tiu biu

    MIDP (Mobile Information Device Profile): b sung cc

    tnh nng nh h tr kt ni, cc thnh phn h tr giaodin ngi dng vo CLDC.

    PDA Profile: tng t MIDP, nhng vi th trng lcc my PDA vi mn hnh v b nh ln hn.

    Foundation Profile: cho php m rng cc tnh nngca CDC vi phn ln cc th vin ca b Core Java21.3

    Ngoi ra cn c Personal Basis Profile, Personal Profile,

    RMI Profile, Game Profile.

  • 8/2/2019 01 J2ME Overview

    27/42

    Mt s Profile tiu biu

  • 8/2/2019 01 J2ME Overview

    28/42

    MIDP

    y l Profile c nh ngha dnh ring cho cc thitb di ng v l thnh phn chnh trong J2ME

    Nhng chc nng MIDP cung cp:Cc lp v kiu d liu: phn ln cc lp m cc lp trnh vin

    Java quen thuc vn cn c gi li v d nh cc lp tronggijava.util nh Stack, Vector v Hastable cng nhEnumeration .

    H tr i tng Display: ng nh tn gi mt chng trnhMIDP s h tr duy nht mt i tng Display l i tngqun l vic hin th d liu trn mn hnh in thoi.

    H tr Form v cc giao din ngi dng.

    H tr Timer vAlert

    Cung cp tnh nng Record Management System (RMS) chovic lu tr d liu.

  • 8/2/2019 01 J2ME Overview

    29/42

    MIDP

    Nhng chc nng MIDP khng th lm c:Php tnh du chm ng (floating point): php tnh ny i hirt nhiu ti nguyn CPU v phn ln cc CPU cho cc thit bdi ng khng h tr php tnh ny, do MIDP cng khng c.

    B np class (Class Loader).

    H tr t kha finalize( ) nh trong J2SE: vic dn dp tinguyn trc khi n b xa do lp trnh vin thc hin.

    Khng h tr JNI (Java Native Interface).

    H tr hn ch thao tc bt li.

    Phn ln cc th vin API cho Swing v AWT khng th sdng c trong MIDP.

    Khng h tr cc tnh nng qun l tp tin v th mc, trongthc t l cc thit b J2ME khng c h tr cc thit b lu trthng thng nh cng. Tuy nhin, iu khng c ngha

    l phi mt i mi d liu quan trng mi khi tt my, Sun cung cp mt chc nng khc tng ng gi l Record

  • 8/2/2019 01 J2ME Overview

    30/42

    MIDP 2.0

    Thng 11 nm 2003 Sun tung ra MIDP 2.0 vi hng lot tnhnng khc c cung cp thm so vi phin bn 1.0.

    Mt s cc ci tin ni bt so vi MIDP 1.0:

    Nng cp cc tnh nng bo mt nh:

    Download qua mng an ton hn thng qua vic h tr giao

    thc HTTPS.Kim sot vic kt ni gia my di ng v server, v d ccchng trnh khng th kt ni ti server nu khng c schp nhn ca ngi dng.

    Thm cc API h tr Multimedia. Mt trong nhng ci tin nibt nht ca MIDP 2.0 l tp cc API media ca n. Cc APIny l mt tp con ch h tr m thanh ca Mobile Media API(MMAPI).

    M rng cc tnh nng ca Form . Nhiu ci tin c avo APIjavax.microedition.lcdui trong MIDP 2.0, nhng cc thay

    i ln nht (ngoi API cho game) l trong Form v Item .

  • 8/2/2019 01 J2ME Overview

    31/42

    MIDP 2.0

    Mt s cc ci tin ni bt so vi MIDP 1.0:H tr cc lp trnh vin game bng cch tung ra Game API.c hng li nht t Game API trong MIDP 2.0 khng ch lcc lp trnh vin game m cn cc lp trnh vin cn s dngcc tnh nng ha cao cp.

    H tr kiu nh RGB: mt trong nhng ci tin hp dn cho ccnh pht trin MIDP l vic biu din hnh nh di dng ccmng s nguyn, cho php MIDlet thao tc vi d liu hnh nhmt cch trc tip.

  • 8/2/2019 01 J2ME Overview

    32/42

    Tin trnh xy dng MIDlet

  • 8/2/2019 01 J2ME Overview

    33/42

    Qu trnh pht trin ng dng MIDlet vi IDE

    Lp trnh vin : to ra cc tp tin ngun Java (*.java).Trn IDE:

    B bin dch Java (Java Compiler): bin dch mngun java thnh bytecode. M bytecode ny s

    c KVM dch thnh m my. M bytecode bindch c lu trong cc tp tin *.class v s c tp tin*.class sinh ra cho mi lp java.

    B tin kim tra (Preverifier): kim tra tnh hp l ca

    m bytecode. Mt trong nhng yu cu an ton caJ2ME l bo m m bytecode chuyn cho KVM lhp l v khng truy xut cc lp hay b nh ngoigii hn ca chng. Do , tt c cc lp u phic tin kim tra trc khi chng c th a ln

    thit b di ng.

  • 8/2/2019 01 J2ME Overview

    34/42

    Qu trnh pht trin ng dng MIDlet vi IDE

    Trn IDE:To tp tin JAR: IDE s to mt tp tin JAR cha ccthng tin sau:

    Tt c cc tp tin *.class.

    Cc hnh nh ca ng dng.Cc tp tin d liu c th c yu cu bi ng dng.

    Mt tp tin k khai (manifest.mf) cung cp m t vng dng cho b qun l trn thit b di ng.

    Tp tin JAR c bn hoc c phn phi nngi dng.

  • 8/2/2019 01 J2ME Overview

    35/42

    Qu trnh pht trin ng dng MIDlet vi IDE

    Ngi dng: download ng dng v thit b di ng.Trn thit b di ng: trc khi ng dng cdownload v thit b di ng, b tin kim tra s kim tram bytecode c hp l hay khng; nu hp l, b qun

    l ng dng s lu chng trnh vo thit b di ng.KVM: Khi ngi dng thc thi ng dng, b qun l ngdng s chuyn ng dng cho KVM chy trn thit bdi ng. KVM s dch m bytecode sang ngn ng myca thit b di ng chy.

  • 8/2/2019 01 J2ME Overview

    36/42

    Mi trng pht trin J2ME

    J2ME Wireless Toolkithttp://java.sun.com/j2me/download.html

    JDK 1.5 hoc mi hn

    http://java.sun.com/j2se/1.5/download.html

    http://java.sun.com/j2se/1.5/download.htmlhttp://java.sun.com/j2me/download.html
  • 8/2/2019 01 J2ME Overview

    37/42

  • 8/2/2019 01 J2ME Overview

    38/42

    J2ME Wireless Toolkit

    Giao din ca chng trnh

  • 8/2/2019 01 J2ME Overview

    39/42

    J2ME Wireless Toolkit

    New Project, nhp vo tn Project v Class:

    Khng nht thit phi to trng tn class vi tn Project.Trn ca s chng trnh s hin th cc thng bo vvic to cc th mc phc v cho vic xy dng v thcthi m chng trnh

  • 8/2/2019 01 J2ME Overview

    40/42

    V d n gin

    import javax.microedition.lcdui.*;import javax.microedition.midlet.*;

    publicclassTestMidlet

    extendsMIDlet

    implementsCommandListener{privateForm mMainForm;publicTestMidlet() {

    mMainForm = newForm("Lap trinh voi J2ME");

    mMainForm.append(newStringItem(null, "Hello world!, MIDP!"));

    mMainForm.addCommand(newCommand("Exit", Command.EXIT, 0));

    mMainForm.setCommandListenerthis

  • 8/2/2019 01 J2ME Overview

    41/42

    V d n gin (tt)

    publicvoidstartApp() {Display.getDisplay(this).setCurrent(mMainForm);

    }

    publicvoidpauseApp() {}

    publicvoiddestroyApp(boolean unconditional) {}

    publicvoidcommandAction(Command c, Displayable s) {

    notifyDestroyed();}

    }

  • 8/2/2019 01 J2ME Overview

    42/42

    J2ME Wireless Toolkit

    Copy source ny vo th mc cha m ngun caproject.

    Build v run chng trnh