No Slide Title

Download Report

Transcript No Slide Title

Learning Wirelesss Java,
O'REILLY, Qusay H.Mahmoud
Wireless - bevielė
•Bevielių technologijų apžvalga
•J2ME apžvalga
•The Connected Limited
Device Configuration (CLDC)
•The Mobile Information
Device Profile (MIDP)
• MIDlet-ų kūrimas
Bevielis Internetas WAN/LAN
JAV
CDPD,
Mobitex,
DataTAC, WAP
ES
WAP
Japonija
i-mode (PDC-P)
PROTOCOL
visur
PRESENTATION
HDML & WML
WML
Handheld
Wireless
Dynamic
Markup
Markup Language Language
cHTML
Compact
Hypertext
Markup
Language
J2ME
MIDlet
GUI
Components
Kokie protokolai ir kur naudojami?
• imode: 60% pasaulio bevielio Interneto vartotojų
• WAP: 39% pasaulio bevielio Interneto vartotojų
• PALM: 1% pasaulio bevielio Interneto vartotojų
•WAP gamintojų inicijuotas standartizuoti
informacijos bevieliui perdavimui
•WML iniciatorius - Phone.com’s, pasiūlė HDML
•HDML nei XML nei HTML analogas,
bet turi paklausą JAV
•WML XML klasės kalba,
reikalauja atitikimo standartui;
turi DTD struktūrą
•WAP turi savo skriptų kalbą, saugumo mechanizmą.
Optimizuotas nepralaidžiam ryšio kanalui
WAP JAV & Europoje savo galimybėmis yra
silpnesnis nei Japonijoje
i-mode inkorporuoja ir protokolą ir prezentaciją
Iš įrenginių reikalauja:
•garantuoti 16 simbolių [8 2xbaitų], 6 eilutes
•GIF failų formatus [87, 87a, 89a; 94 x 72 taškelių]
•suderinamumą su HTML 2.0
Mobilios įrangos imitatoriai
i-mode: www.pixo.com
WAP: Nokia.com, Phone.com, Yospace.com
J2ME: java.sun.com/j2me, www.idendev.com
Kalbų specifikacijos
cHTML - http://www.nttdocomo.com/i/tag/
lineup.html
WML – http://www.wapforum.org/
J2ME – java.sun.com/j2me
Jaunėlė sesuo:
J2ME (1999) -> J2SE -> J2EE
J2ME praginos architektūra:
Profailai
Konfigūracijos
Java Virtualiosios Mašinos
Operacinė Sistema
J2ME panaudojimo architektūra:
Peigeris
Mobilus telefonas
CLDC
Faksas
Telefonas
CDC
Mikro Java 2 (J2ME)
J2ME technologijos
RMI
M IDP
PDA
Personal
Foundation
CLDC
CDC
KVM
CVM
Host Operating System
Pirmieji žingsniai:
•http://java.sun.com/j2me/ “download”
•sutvarkykite savo PC:
•Windows atveju:
•SET PATH=%PATH%;C:\j2mewtk\bin
•SET J2MEWTK_HOME=C:\j2mewtk
•SET MIDPAPI=%J2MEWTK_HOME%\lib\midpapi.zip
•SET J2MECLASSPATH=%J2MEWTK_HOME%
•\wtklib\kenv.zip;%J2MEWTK_HOME%
\wtklib\kvem.jar;%J2MEWTK_HOME%\wtklib\lime.jar
•UNIX atveju:
•export PATH=$PATH:install_directory/j2mewtk/bin
•export J2MEWTK_HOME=/home/qmahmoud/j2mewtk
•export MIDPAPI=$J2MEWTK_HOME/lib/midpapi.zip
•export J2MECLASSPATH=$J2MEWTK_HOME/
wtklib/kenv.zip:$J2MEWTK_HOME/wtklib/
kvem.jar:$J2MEWTK_HOME/wtklib/lime.jar
•Su mėgstamu teksto redaktoriumi surinkite
“Sveika.java” failą:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Sveikas extends MIDlet{
private Display display;
TextBox box = null;
public HelloMidlet() { }
public void startApp() {
display = Display.getDisplay(this);
box=new TextBox("1-a","Sveikas!",9,0);
display.setCurrent(box); }
public void pauseApp() { }
public void destroyApp
(boolean unconditional)
{ }
}
C:\midlets> javac -g:none -d tmpclasses
-bootclasspath %MIDPAPI% -classpath
%J2MECLASSPATH% Sveikas.java
> preverify -classpath $MIDPAPI:tmpclasses
-d classes tmpclasses
> jar cvf Sveikas.jar Sveikas.class
•Sukurkite Sveikas.jad failą:
MIDlet-1: Hello,,Sveikas
MIDlet-Name: Sveikas
MIDlet-Version: 1.0
MIDlet-Vendor: ORA
MIDlet-Jar-URL: Sveikas.jar
MIDlet-Jar-Size: 649
•Pagaliau:
> emulator -Xdescriptor:Sveikas.jad
Rezultatas:
Programos paruošimo ciklas
•Kompiliuojame
•Verifikuojame
•Pakuojame
•Kuriame aprašomąjį .jad failą
•Emuliuojame
CLDC konfigūracijos reikalavimai
•160 KB - 512 KB atminties
•16 arba 32-bitų >25 Mhz procesor.
•Pajungimas tinkle
•Ekonomiška energetika
CLDC pateikia:
•Java kabos ir JVM poaibį
•java.lang,java.util, java.io
paketų klasių poaibį
•javax.microedition.io paketą
•Saugumo tikrinimą
JVM ypatumai:
•Nėra slankaus kablelio aritmetikos
•Nėra finalize() metodo
•Ribotas klaidų apdorojimas, dažniausiai
klaidos atveju perkraunama
•Kita
Verifikacija
Saugumas
Malonu dirbti tinkle! Prisijungimas
HTTP protokolu: Connector.open
("http://www.ora.com:port");
interneto jungties protokolu:Connector.
open("socket://www.ora.com:port");
PC jungties protokolu:
Connector.open("comm:0;baudrate=9600");
Bloga žinia:
public class CLDCTest
{ float f;
public static void main(String[] args)
{ System.out.println("Hello CLDC!");
} }
Klaidos neras net preverify.exe !
Sprendimas - instaliuoti KVM ir leisti su ja.
Tuomet gausite klaidos pranešimą:
ALERT: Bad field signature
Ateities CLDC sieks mažinti Java kalbos
apribojimus, klaidų tikrinimo apribojimus,
sukurti minimalų saugumo valdymą.
Midlet gyvavimo ciklas
startApp() kviečiama ne 1-ą kartą!
Jar manifestas, Midlet rinkinys:
MIDlet-Name: ShopOnLine
MIDlet-Version: 1.0
MIDlet-Vendor: SELKOM
MIDlet-Description: a shopping MIDlet
MIDlet-Info-URL: http://www.selkom.com/shop
MIDlet-Data-Size: 500
MIDlet-1: BuyMIDlet, /icons/buy.png,
com.selkom.BuyMIDlet
MIDlet-2: PayMIDlet, /icons/sell.png,
com.selkom.Sell
MIDlet MicroEdition-Profile: MIDP-1.0
MicroEdition-Configuration: CLDC-1.0
Gairės programavimui:
•Naudokite lokalius kintamuosius.
Laukų naudojimas lėtina spartą.
•Minimizuokite metodų kvietimą.
Pvz. Neprotinga cikle naudoti length()
•Venkite eilučių apjungimo.
Apjungimas provokuoja poreikį
atlaisvinti atmintį.
•Minimizuokite objektų kūrimą.
Perkraunant seną klasės kintamąjį
nauju objektu kviečiamas senojo
destruktorius, tai brangu.
Pvz. Tikrinkite ar objektas yra ne null
ir atnaujinkite jums reikiamus
laukus. Naudokite objektą formalių
parametrų sąraše, o ne return konstrukcijoje.
•Venkite sinchronizacijos. Jei procesas trunka
sekundės dalį - išskirkite jam atskirą giją.
Midletų kūrimą ir derinimą labai
palengvina J2ME Wireless Toolkit 2.0
Jo meniu: