T ng máy o Java Java Virtual Machine Layer .... File JAD Java Application Descriptor File : .... Các ph ng th c trong MIDlet ..... Command và CommandListener.. Item và ItemStateListener
Trang 1ΤΠ.Η 唄 ΧΗ⊆ ΜΙΝΗ – Ν;Μ 2009
Trang 2Λυ ν 〈ν đ đ χ τη χ ηι ν τρονγ m τ τη ι γιαν δ◊ι, ϖ◊ đψ λ◊ τη◊νη πη m λ ν νη τ m◊ τι τη χ ηι ν đ χ τρονγ θυ〈 τρνη η χ τ π τ ι τρ νγ Νγο◊ι σ χ γ νγ, ν λ χ χ α β ν την, χ∫ν νη ν σ γιπ đ χ α νηι υ νγ ι đ τι χ⌠ τη ηο◊ν τηι ν đ χ λυ ν 〈ν νη νγ◊ψ ναψ
υ τιν, χον ξιν ϖ χνγ βι τ ν Βα Μ , đ χ⌠ χνγ σινη τη◊νη, δ νγ δ χ, τη νγ ψυ ϖ◊ χη m σ⌠χ đ χηο χον χ⌠ đ χ νγ◊ψ ηm ναψ
Τι ξιν χ m ν χ〈χ τη ψ χ Κηοα Χνγ νγη τηνγ τιν ϖ◊ χ〈χ τη ψ χ τρ νγ ι Η χ
Μ ΤΠ.ΗΧΜ đ τρυψ ν đ τ νη νγ κι ν τη χ, κινη νγηι m θυ β〈υ τρονγ θυ〈 τρνη η χ τ π ϖ◊ νγηιν χ υ
Εm ξιν χην τη◊νη χ m ν τι ν σ Νγυψ ν ς ν Ηι π, γι νγ ϖιν Κηοα Χνγ νγη τηνγ τιν – τρ νγ ι Η χ Β〈χη Κηοα Τπ.ΗΧΜ đ τ ν τνη η νγ δ ν, đ νη η νγ, γ⌠π
Trang 3CH NG 1: M C TIÊU VÀ N I DUNG TÀI 4
1.1 t v n đ 4
1.2 M c tiêu đ t ra cho đ tài 5
1.3 N i dung .6
CH NG 2: T NG QUAN V J2ME 7
2.1 CÁC THÀNH PH N C A J2ME .7
2.1.1 T ng ph n c ng thi t b (Device Hardware Layer) 8
2.1.2 T ng máy o Java (Java Virtual Machine Layer) 8
2.1.3 T ng c u hình (Configuration Layer) 10
2.1.4 T ng hi n tr ng (Profile Layer) 12
2.1.5 M t s h n ch c a J2ME so v i các phiên b n khác(ch y u n m t ng Configuration này): 12
2.2 CH C N NG CÁC THÀNH PH N 13
2.2.1 Máy o Java (Kilobyte Virtual Machine - KVM) 13
2.2.2 CLDC 15
2.2.2.1 Yêu c u ph n c ng dành cho CLDC: 16
2.2.2.2 Yêu c u ph n m m dành cho CLDC: 17
2.2.2.3 S khác bi t gi a CLDC 1.0 và CLDC 1.1 17
2.2.2.4 Danh sách các l p mà CLDC cung c p 17
2.2.3 MIDP 20
2.2.3.1 nh ngh a: 20
2.2.3.2 Nh ng ch c n ng mà MIDP không h tr : 20
2.2.3.3 Nh ng ch c n ng mà MIDP cung c p 21
2.2.3.4 Nh ng yêu c u dành cho MIDP 21
2.2.3.5 Các d ng profile 22
2.2.3.6 S khác nhau gi a MIDP 1.0 và MIDP 2.0 22
2.2.3.7 Danh sách l p mà MIDP cung c p 23
CH NG 3: B MIDLET 26
3.1 NH NGH A: 26
3.2 CÁC D NG MIDLET 26
3.2.1 ng d ng đ n (standalone application) 26
3.2.2 ng d ng n i m ng (networked application) 26
3.3 C U TRÚC M T B MIDLET (MIDlet suite) .26
3.3.1 C u trúc file Jar 26
3.3.2 File JAD (Java Application Descriptor File) : 27
3.3.2.1 t t 27
3.3.2.2 Các ph ng th c trong MIDlet 29
3.3.2.3 Xây d ng m t ng d ng MIDlet: 29
3.3.2.4 L p MIDlet: 31
CH NG 4: GIAO DI N H A 33
4.1 QU N LÝ VI C HI N TH VÀ B T S KI N .35
Trang 44.1.1 Qu n lý vi c hi n th 35
4.1.1.1 L p Display 35
4.1.1.2 L p Displayable 36
4.1.2 Qu n lý các s ki n: 37
4.1.2.1 Command và CommandListener 38
4.1.2.2 Item và ItemStateListener 41
4.2 GIAO DI N H A C P CAO .42
4.2.1 Screen: 42
4.2.2 Form: 42
4.2.3 Item: 43
4.2.3.1 DateField: 44
4.2.3.2 Gauge: 45
4.2.3.3 StringItem: 47
4.2.3.4 TextField: 47
4.2.3.5 ChoiceGroup: 50
4.2.3.6 Image: 53
4.2.3.7 ImageItem: 54
4.2.4 TextBox 56
4.2.5 Alert 58
4.2.6 AlertType: 60
4.2.7 List: 61
4.2.7.1 Các d ng c a list 61
4.2.7.2 B t s ki n cho các đ i t ng List 62
4.2.7.3 So sánh gi a l p List và l p ChoiceGroup: 62
4.2.8 Ticker: 64
4.3 H A C P TH P 64
4.3.1 Canvas: 65
4.3.1.1 H t a đ 65
4.3.1.2 V trên đ i t ng Canvas: 66
4.3.1.3 B t s ki n trong các đ i t ng Canvas 68
4.3.1.4 Game action: 70
4.3.2 Graphics: 72
4.3.2.1 Color: 73
4.3.2.2 Nét v : 74
4.3.2.3 Font ch : 76
4.3.2.4 V các đ i t ng hình nh (Image): 78
4.3.2.5 Các ph ng th c t nh ti n c a đ i t ng: 79
4.3.2.6 Vùng xén (Clipping regions): 81
CH NG 5: L U TR THÔNG TIN VÀ L P TRÌNH M NG 82
N I DUNG TRÌNH BÀY: 82
L U TR THÔNG TIN TRONG J2ME 82
82
Trang 55.1 L u tr thông tin v i RMS 82
5.1.1 RecordStore 83
5.1.2 RecordEnumeration 91
5.1.3 S p x p các b ng RecordComparator 93
5.1.4 L c record v i RecordFilter 95
5.1.5 RecordListener 96
5.2 K t n i m ng v i Generic Connection Framework (GCF) .97
5.2.1 Gi i thi u GCF 97
CH NG 6: NH NG QUI TRÌNH VÀ RÀNG BU C M T NG D NG TRÊN JBUILDER CH Y C TRÊN MOBILE 117
6.1 Tìm hi u và trình bày qui trình k thu t đ xây d ng m t ng d ng mobile trên Jbuilder 117 6.1.1 Cài đ t Jbuilder 117
6.1.2 Cài đ t SDK cho Nokia 121
6.1.3 Quá trình xây d ng 1 MIDlet 127
6.1.3.1 Quá trình đ u tiên: T o m i m t project 127
6.1.3.2 Quá trình th hai: T o m t l p MIDlet 131
6.1.4 C ác b c đ xây d ng các file.Jar và file.Jad: 137
6.2 Tìm hi u và trình bày các yêu c u ràng bu c đ m t ng d ng mobile trên Jbuilder có th ch y trên mobile 141
6.2.1 Nh ng ràng bu c trên thi t b di đ ng 141
6.2.1.1 Ràng bu c v ph n c ng 141
6.2.1.2 Ràng bu c v ph n m m 142
6.2.2 Nh ng ràng bu c đ i v i ng d ng 142
CH NG 7: GI I THI U NG D NG DEMO 143
7.1 Gi i thi u .143
7.2 Xây d ng m t MIDlet .143
7.3 Mô t ch ng trình .143
7.4 Các ch c n ng c a ch ng trình: 144
7.5 Th c thi ch ng trình .145
m t chi c đi n tho i có th ch y đ c ng d ng MIDlet thì tr c h t ta hãy xem nh ng yêu c u ràng bu c đ m t ng d ng java ch y đ c trên mobile (v n đ này đ c trình bài trong ch ng 6) .145
CH NG 8: K T QU VÀ H NG PHÁT TRI N 150
8.1 K t qu 150
8.2 Nh ng h n ch : 150
V quy n lu n v n trình bày. Error! Bookmark not defined. V ch ng trình. Error! Bookmark not defined. 8.3 H ng phát tri n .150
Trang 6CH NG 1: M C TIÊU VÀ N I DUNG TÀI
nh m i n i Ngày nay các thi t b di đ ng đã tr nên r t ph bi n và đ c s d ng
r t r ng rãi t i Vi t Nam, đ c bi t là các lo i đi n tho i di đ ng Nhi u ng i đã coi
đi n tho i di đ ng nh m t v t không th thi u trong cu c s ng h ng ngày N m b t
đ c nhu c u đó, các nhà s n xu t đi n tho i đã đ y m nh v m t công ngh , t ng
c ng m u mã, tích h p các ch c n ng ngày càng nhi u vào các dòng s n ph m m i,
h u đem l i cho ng i dùng nh ng ti n ích cao c p nh t v i các công ngh tiên ti n
nh t Gi đây, ng i dùng đi n tho i có th nghe nh c, xem phim, ch p hình ch i game và th m chí là xem TV, l t web ch v i chi c đi n tho i bé xíu ngay bên mình Chi c đi n tho i đã th c s không ch là m t ph ng tiên liên l c, mà nó còn mang c
th gi i gi i trí, th gi i Mobile đ n v i t ng ng i m i lúc m i n i V i công ngh phát tri n không ng ng nh hi n nay, vi c đòi h i các ng d ng t t h n c ng ngày càng tr thành m t yêu c u đi đôi v i s phát tri n c a công ngh M t chi c đi n tho i t t luôn đòi h i nh ng ph n m m cao c p đi kèm v i nó Nh ng v n đ l i đ t ra
là có quá nhi u nhà s n xu t đi n tho i s d ng nhi u công ngh khác nhau V y làm sao chúng ta có th t o ra đ c nh ng ng d ng ch y trên t t c các dòng s n ph m đó? ây qu th t là m t v n đ không đ n gi n chút nào M t th c t đ t ra cho các nhà phát tri n ph n m m là hi n nay không có m t chu n hóa nào dành cho các nhà
s n xu t ph n c ng Các thi t b trên th tr ng hi n nay r t đa d ng và c ng mang nhi u đ c đi m c ng nh c u hình khác nhau
Tr c th c t đó, vi c có th ch y trên nhi u môi tr ng là m t l i th r t l n c a ngôn ng Java Nh chúng ta đã bi t, ban đ u Java đ c xây d ng ch g m m t phiên
b n duy nh t, ngày nay đ c bi t đ n v i tên J2SE (Java 2 Standard Edition) v i
Trang 7ph ng châm là “Write once, run anywhere” t m d ch là “vi t m t l n, ch y trên m i môi tr ng” Java đ c hình thành trên ý t ng xây d ng m t ngôn ng mà l p trình viên ch c n vi t m t l n duy nh t nh ng ng d ng có th ch y trên b t c môi tr ng nào có h tr Java Virtual Machine t m d ch là “máy o Java” Các nhà phát tri n Java
đã cho ra m t ngôn J2ME h ng đ n vi c phát tri n ph n m m cho các thi t b di
đ ng Ngôn ng J2ME th c s là ngôn ng nh g n, d n m b t, ch t ch và thích h p cho các thi t b có kh n ng h n ch Các thi t b di đ ng trên th tr ng hi n nay, đ c
bi t là đi n tho i di đ ng h u h t đ u h tr r t t t ngôn ng J2ME và J2ME th c s
đã tr thành m t trong nh ng ngôn ng ph bi n nh t trong l nh v c l p trình di đ ng J2ME đ c xem nh là m t nhánh c a ngôn ng l p trình Java đ c phát tri n nh m
h ng t i vi c l p trình cho các thi t b nh có b nh , kh n ng hi n th và x lý h n
ch
1.2 M c tiêu đ t ra cho đ tài
Tìm hi u các ràng bu c v ph n c ng c a các ch ng lo i thi t b di đ ng hi n nay
Hi u chi ti t v J2ME, các ki n trúc nên t ng c a nó và nh ng ng d ng c a nó
đ l p trình trên các thi t b di đ ng
N m đ c các k thu t x lý form, âm thanh, hình nh, và l u tr trên đi n tho i
di đ ng
Tìm hi u qui trình k thu t đ xây d ng ng d ng mobile trên Jbuilder
Nh ng ràng bu c đ m t ng d ng vi t trên Jbuilder có th ch y trên mobile
ng d ng các k t qu đ t đ c đ xây d ng ch ng trình đ n gi n, có các ti n ích ph c v nhu c u c a ng i s d ng đi n tho i di đ ng
Áp d ng thành công trên m t s dòng máy đi n tho i di đ ng h tr Java c a các hãng nh Nokia, SonyEricsson, Samsung,…
Nh ng m c tiêu trên đ c đ t ra trên nh m xây d ng m t quy n lu n v n t t
h n, đây đ h n Và xa h n n a là, lu n v n này đã trình bài đ y đ nh ng gì c n
thi t đ cho m i ng i có th t vi t nh ng ng d ng riêng cho chi c đi n tho i
c a mình
Trang 81.3 N i dung
V i nh ng m c tiêu trên thì quy n lu n v n xin trình bày nh ng n i dung sau:
Gi i thi u chung v ngôn ng J2ME: t ng configuration và profile
Các v n đ liên quan đ n m t b MIDlet
L p trình trên thi t b di đ ng s d ng giao di n đ h a c p th p và c p cao
Vi c l u tr thông tin trên MIDlet xu ng b ng ghi và truy xu t chúng khi c n thi t
L p trình m ng
Các b c c n thi t đ xây d ng và th c thi m t MIDlet
Nh ng ràng bu c đ m t ng d ng vi t trên Jbuilder ch y đ c trên Mobile
Xây d ng ng d ng game caro đ demo
Trang 9M c tiêu c a J2ME là cho phép ng i l p trình vi t các ng d ng đ c l p v i thi t
b di đ ng, không c n quan tâm đ n ph n c ng th t s đ t đ c m c tiêu này, J2ME đ c xây d ng b ng các t ng (layer) khác nhau đ gi u đi vi c th c hi n ph n
c ng kh i nhà phát tri n Sau đây là các t ng c a J2ME đ c xây d ng (2)
Hình 1:Các thành ph n c a J2ME
Khái ni m đi n tho i di đ ng là t ng đ i r ng l n Chúng bao g m nh ng thi t b
có kích th c v t lý khác nhau nhi u l n và cho dù cùng kích th c nh ng thi t b này
v n có kh n ng x lý c ng nh th hi n c ng khác nhau (nh ng chi c đi n tho i hi n
th 12,000 pixels cho đ n nh ng chi c PDA 20000 pixels) đáp ng đ c nhu c u khác nhau c a nh ng thi t b này, b n thân ngôn ng J2ME c ng chia thành nh ng thành ph n nh h n
Trang 10Hình 2:C u trúc c a thi t b MID
MIDP Applications
OEM-Specific Applications
Native Applications
OEM-Specific Classes Mobile Information
Device Profile (MIDP)
Connected Limited Device Configuration (CLDC)
Native Operating System
Mobile Information Device(MID)
M i t ng trên t ng Mobile Information Device là t ng tr u t ng h n cung c p cho l p trình viên nhi u giao di n l p trình ng d ng (API-Application Program Interface) thân thi n h n
2.1.1 T ng ph n c ng thi t b (Device Hardware Layer)
ây chính là thi t b di đ ng th t s v i c u hình ph n c ng c a nó v b nh và
t c đ x lý D nhiên th t ra nó không ph i là m t ph n c a J2ME nh ng nó là n i
xu t phát Các thi t b di đ ng khác nhau có th có các b vi x lý khác nhau v i các
t p mã l nh khác nhau M c tiêu c a J2ME là cung c p m t chu n cho t t c các lo i thi t b di đ ng khác nhau
2.1.2 T ng máy o Java (Java Virtual Machine Layer)
Khi mã ngu n Java đ c biên d ch nó đ c chuy n đ i thành mã bytecode Mã bytecode này sau đó đ c chuy n thành mã ngôn ng máy c a thi t b di đ ng T ng máy o Java bao g m KVM (K Virtual Machine) là b biên d ch mã bytecode có nhi m v chuy n mã bytecode c a ch ng trình Java thành ngôn ng máy đ ch y trên thi t b di đ ng, và đ ng th i máy o Java s ch u trách nhi m vi c cung c p các tính n ng b o m t, c p phát, thu h i b nh và qu n lý vi c đi u ph i các ti n trình
T ng này cung c p m t s chu n hóa cho các thi t b di đ ng đ ng d ng J2ME sau khi đã biên d ch có th ho t đ ng trên b t k thi t b di đ ng nào có J2ME KVM Chính nh ng h n ch v t i nguyên c a các thi t b di đ ng đã đ ra nhu c u v s ra
đ i c a KVM
ây là nh ng yêu c u dành cho máy o KVM:
Trang 11 Máy o Java ch c n 40 – 80 KB b nh
Ch c n 20 – 40 KB b nh đ ng
Có th ch y v i b vi x lý 16 bit và xung nh p 25 MHz
Mã ngu n java ph i trãi qua 2 giai đo n nh hình bên d i
Hình 3:Hai quá trình biên dch và thông d ch c a mã ngu n java
Các phiên b n c a Java:
Java đ c gi i thi u l n đ u tiên vào nh ng n m 1995, trong th i gian đ u thì
m c tiêu nh m đ n c a Java là phát tri n c a GUIs, applets, và nh ng ng d ng
đ c tr ng khác Hai n m sau ngày ra m t l n đ u tiên, m t phiên b n m i là Java 2 Enterprise Edition (J2EE) c ng đ c gi i thi u nh m đ n vi c phát tri n các ng
d ng có qui mô l n h n (có th xem là các máy server) ng th i phiên b n này
c ng đ a ra nh ng công c cho vi c truy xu t d li u, truy n thông tin, đi u khi n
KVM (Kilobyte Virtual Machine)
Trang 12Hình 4:Các phiên b n khác nhau c a java
Chúng ta có th th y các phiên b n khác nhau c a Java, ph thu c vào ph n c ng
mà thi t b h tr Hình s th hi n 3 máy o đ c s d ng trong nh ng môi tr ng khác nhau Các Hotspot VM là m c đ nh máy o đ c cung c p b i Sun do th c hi n
đ y đ quy mô phiên b n m i h n JavaHotspot là m t lo i máy o có kh n ng t
đ ng t i u hóa n ng n th c hi n các đo n mã (hotspots) trong th i gian th c Compact Virtual Machine (CVM) and Kilobyte Virtual Machine (KVM) là nh ng máy o nh h n dùng đ hi n th c vi c thi t k đ ch y trong nh ng ràng bu c c a
gi i h n v tài nguyên trên nh ng thi t b nh
2.1.3 T ng c u hình (Configuration Layer)
T ng c u hình c a CLDC đ nh ngh a giao di n ngôn ng Java (Java language interface) c b n đ cho phép ch ng trình Java ch y trên thi t b di đ ng
đáp ng nhu c u cho nhi u ch ng lo i thi t b khác nhau, Sun đã đ a ra khái
ni m Configuration Khái ni m Configuration có m i liên h ch t ch v i máy o
Trang 13Java Nói chính xác h n, m t Configuration qui đ nh nh ng thành ph n và nh ng th
vi n g c c a ngôn ng Java mà máy o ph i h tr cho configuration đó Vi c phân chia thành nh ng configuration khác nhau ch y u d a vào kh n ng b nh , n ng l c
hi n th , n ng l c x lý và kh n ng k t n i m ng c a các thi t b Nh chúng ta đã
bi t, các thi t b di đ ng r t khác nhau v ngu n tài nguyên, v kh n ng ph n c ng
V i nh ng thi t b có n ng l c h n ch , n u ta đ a nhi u th vi n h tr vào máy o trên thi t b đó s gây ch m h th ng và d th a không c n thi t V i nh ng thi t b có
kh n ng cao h n, chúng ta s đ a thêm nhi u th vi n h tr vào máy o giúp ích cho công vi c l p trình c a các nhà phát tri n Do đó, nhu c u phân chia thành nhi u Configuration là vi c c n thi t
Hi n nay Sun đã đ a ra hai lo i Configuration khác nhau:
CDC (Connected Divice Configuration):
C 2 d ng C u hình k trên đ u ch a máy o Java (Java Virtual Machine) và t p
h p các l p (class) Java c b n đ cung c p m t môi tr ng cho các ng d ng J2ME Tuy nhiên, b n chú ý r ng đ i v i các thi t b c p th p, do h n ch v tài nguyên nh
b nh và b x lý nên không th yêu c u máy o h tr t t c các tính n ng nh v i máy o c a J2SE, ví d , các thi t b thu c CLDC không có ph n c ng yêu c u các phép tính toán d u ph y đ ng, nên máy o thu c CLDC không đ c yêu c u h tr
ki u float và double
Trang 142.1.4 T ng hi n tr ng (Profile Layer)
T ng hi n tr ng hay MIDP (Hi n tr ng thi t b thông tin di đ ng-Mobile Information Device Profile) cung c p t p các API h u d ng h n cho l p trình viên
M c đích c a hi n tr ng là xây d ng trên l p c u hình và cung c p nhi u th vi n ng
d ng h n MIDP đ nh ngh a các API riêng bi t cho thi t b di đ ng C ng có th có các hi n tr ng và các API khác ngoài MIDP đ c dùng cho ng d ng Ví d , có th có
hi n tr ng PDA đ nh ngh a các l p và ph ng th c h u d ng cho vi c t o các ng
d ng PDA (l ch, s h n, s đ a ch ,…) C ng có th có m t hi n tr ng đ nh ngh a các API cho vi c t o các ng d ng Bluetooth Th c t , các hi n tr ng k trên và t p các API đang đ c xây d ng Chu n hi n tr ng PDA là đ c t JSR - 75 và chu n bluetooth API là đ c t JSR - 82 v i JSR là vi t t t c a Java Specification Request
2.1.5 M t s h n ch c a J2ME so v i các phiên b n khác(ch y u n m t ng
Configuration này):
Không h tr ki u d li u float: Vi c s lý s float đòi h i nhi u tài nguyên x
lý, ngoài ra các thi t b di đ ng không có nh ng c u hình ph n c ng dành riêng cho vi c x lý s float nên trong J2ME chúng ta không th khai báo các bi n,
m ng float, các hàm c ng không nh n tham s và tr các s float
Ph ng th c finalize: Trong J2SE, chúng ta có th khai báo ph ng th c finalize (t ng t nh ph ng th c destructor) Garbage Collector s g i ph ng th c này tr c khi h y b m t đ i t ng, ph ng th c này th ng đ c dùng đ thu
h i các tài nguyên h th ng nh sockets, file handle,….tr c khi đ i t ng b
“phá h y” Tuy nhiên trong J2ME ,đ c i ti n vi c th c thi và gi m toàn b các yêu c u, CLDL lo i b h n đ i t ng finalize, đi u này có ngh a là không có
Không h tr vi c s d ng code c a các ngôn ng l p trình khác
Không h tr Reflection: Trong J2ME và J2ME, chúng ta có th dùng các l p Reflection đ tìm hi u thông s môi tr ng máy o Java đang th c thi
Trang 15 Không h tr ThreadGroup: m i thread đ c lý riêng bi t, không còn l p ThreadGroup N u mu n đi u khi n m t lúc nhi u threads chúng ta có th dùng
Ti n ki m tra (pre-verification): Tr c khi m t l p đ c n p vào thi t b ,
m t ph n m m s đ c s d ng đ thêm vào m t s thông s b sung vào file class Quá trình này gi m th i gian và b nh c n thi t đ máy o th c
hi n giai đo n 2 trong quá trình ki m tra File class sau khi đ c “ti n ki m tra” s t ng dung l ng kho ng 5%
Ki m tra n i thi t b (In-device verification): Khi thi t b n p các file class
đã đ c ki m tra, công c ki m tra trong thi t b s th c hi n m t vài ki m tra đ xác nh n tính h p l c a đo n code N u phát hi n m t l i nào đó b
ki m tra s phát sinh báo cáo và t ch i n p l p đ i t ng vào b nh Quá trình này đòi h i ít b nh và tài nguyên h n nhi u l n so v i trong J2SE và J2EE
2.2.1 Máy o Java (Kilobyte Virtual Machine - KVM)
Vai trò c a máy o Java hay KVM là d ch mã bytecode đ c sinh ra t ch ng trình Java đã biên d ch sang ngôn ng máy Chính KVM s chu n hóa output c a các ch ng trình Java cho các thi t b di đ ng khác nhau có th có b vi x lý và t p
l nh khác nhau Không có KVM, các ch ng trình Java ph i đ c biên d ch thành
t p l nh cho m i thi t b di đ ng Nh v y l p trình viên ph i xây d ng nhi u đích cho m i lo i thi t b di đ ng Hình d i đây bi u di n ti n trình xây d ng ng d ng MIDlet hoàn chnh và vai trò c a KVM
Trang 16Hình 5:Ti n trình xây d ng m t MIDlet
Xây d ng ng d ng trên IDE (Intergrated Development Environment - Môi tr ng phát tri n tích h p)
ây là nh ng công vi c c a l p trình viên trên:
T o các t p tin ngu n Java:
B c đ u tiên là l p trình viên ph i t o mã ngu n Java, có th có nhi u t p tin (*.java) (v n đ này đ c trình bày trong ch ng 6)
Biên d ch trên IDE:
B biên d ch Java (Java Compiler): Biên d ch mã ngu n thành mã bytecode
B biên d ch Java s biên d ch mã ngu n thành mã bytecode Mã bytecode này s đ c KVM d ch thành mã máy Mã bytecode đã biên d ch s đ c
l u trong các t p tin *.class và m t t p tin *.class sinh ra cho m i l p Java
B ti n ki m tra (Preverifier): Ki m tra tính h p l c a mã bytecode
M t trong nh ng yêu c u an toàn c a J2ME là b o đ m mã bytecode chuy n cho KVM là h p l và không truy xu t các l p hay b nh ngoài gi i h n
c a chúng Do đó t t c các l p đ u ph i đ c ti n ki m tra tr c khi chúng
có th đ c download v thi t b di đ ng Vi c ti n ki m tra đ c xem là
m t ph n c a môi tr ng phát tri n làm cho KVM có th đ c thu nh h n
T p tin ngu n java
T p tin JAR
Thi t b đích
Tr m phát tri n
Trang 17B ti n ki m tra s gán nhãn l p b ng m t thu c tính (attribute) đ c bi t ch
r ng l p đó đã đ c ti n ki m tra Thu c tính này t ng thêm kho ng 5% kích th c c a l p và s đ c ki m tra b i b ki m tra trên thi t b di đ ng
L u ý: N u không có quá trình ti n ki m tra này thì thi t b di đ ng s t ch i ng
M t t p tin kê khai (manifest.mf) cung c p mô t v ng d ng cho b qu n
lý ng d ng (application manager) trên thi t b di đ ng
Sau khi đã g r i và ki m tra mã l nh trên trình gi l p (simulator), mã l nh
đã s n sàng đ c ki m tra trên đi n tho i di đ ng và sau đó đ c phân ph i cho ng i dùng (download ng d ng (t p tin *.jar) v thi t b di đ ng – xem
ph n ph l c)
Trên thi t b di đ ng
B ti n ki m tra: B ti n ki m tra ki m tra t t c các l p đ u có m t thu c tính
h p l đã đ c thêm vào b i b ti n ki m tra trên tr m phát tri n ng d ng
N u ti n trình ti n ki m tra th t b i thì ng d ng s không đ c download v thi t b di đ ng
Trang 18này là cung c p m t t p t i thi u các th vi n (các l p và các ph ng th c ) cho phép m t ng d ng Java ch y trên thi t b di đ ng T p các API h u d ng và chuyên bi t h n đ c ch a trong t ng hi n tr ng - profile layer, nh ng chính
Các CLDC API đ c đ nh ngh a v i s h p tác v i 18 công ty là b ph n c a JCP (Java Community Process) Nhóm này giúp b o đ m r ng các API đ c
đ nh ngh a s h u d ng và thi t th c cho c nhà phát tri n l n nhà s n xu t thi t
b di đ ng
Hình 6:T ng quan v CLDC
2.2.2.1 Yêu c u ph n c ng dành cho CLDC:
Khi đ ra yêu v ph n c ng vi c xem xét các chi ti t nh b x lý, b
nh … và các thành ph n m m hi n có trên các thi t b di đ ng là vi c vô cùng quan tr ng Nh m m c đích ph c v t i đa các thi t b hi n có trên th
tr ng, CLDC ch đ ra các yêu c u v b nh và không đ ra yêu c u nào cho các thành ph n khác Yêu c u t i thi u đ có th s d ng CLDC nh sau:
128 kilobytes đ ch y JVM và các th vi n c a CDLC Không phân bi t
lo i b nh s d ng (Rom, Flash,… ), b nh c a thi t b ph i b o l u
đ c n i dung lâu dài, ngay c khi ng t đi n B nh này th ng đ c
g i là nonvolatile memory
32 kilobytes b nh tr ng đ c p phát các đ i t ng (objects) B nh này
th ng đ c g i là volatile memory (hay còn đ c g i là heap)
CLDC CDC J2SE
CDC
CLDC
Trang 19 Thi t k l i nh ng class Calendar/Date/TimeZone so v i J2SE
Trang 22ây là t ng n m k trên t ng CLDC, đ nh ngh a dành riêng cho các thi t
b di đ ng và là thành ph n chính trong J2ME CLDC ch cung c p các API
đ n gi n, gi v n u mà Sun không cung c p MIDP thì ng i l p trình s
ph i xây d ng l i t t c các giao di n MIDP cung c p các ch c n ng c b n cho h u h t các dòng thi t b di đ ng ph bi n nh t nh các máy đi n tho i di
đ ng và các máy PDA Tuy nhiên, vì ph i xây d ng th vi n cho m t thi t b
r t h n ch v tài nguyên nên MIDP c ng có nh ng gi i h n c a nó
2.2.3.2 Nh ng ch c n ng mà MIDP không h tr :
Không h tr phép tính d u ph y đ ng (floating point) là do tính này đòi
h i r t nhi u tài nguyên CPU và ph n l n các CPU cho các thi t b di
đ ng không h tr phép tính này
Không h tr b n p class - Class Loader
H tr t khóa finalize() nh trong J2SE: Vi c “d n d p“ tài nguyên
tr c khi nó b xóa đ c đ y v phía các l p trình viên
Không h tr JNI
Không h tr nhi u cho thao tác b t l i
Ph n l n các th vi n API cho Swing và AWT không th s d ng đ c trong MIDP
Không h tr các tính n ng qu n lý file và th m c: ây có th làm b n
ng c nhiên nh ng th c t là các thi t b J2ME không có h tr các thi t b
l u tr thông th ng nh c ng v.v Tuy nhiên, đi u đó không có ngh a
Trang 23là b n ph i m t đi m i d li u quan tr ng m i khi t t máy, Sun đã cung
c p m t ch c n ng khác t ng đ ng g i là Record Management system (RMS) đ cung c p kh n ng l u tr cho các thi t b này
2.2.3.3 Nh ng ch c n ng mà MIDP cung c p
Các l p và ki u d li u: Ph n l n các l p mà các l p trình viên Java quen thu c v n còn đ c gi l i ví d nh các l p trong gói java.util nh Stack, Vector và Hastable c ng nh Enumeration
H tr đ i t ng Display: úng nh tên g i m t ch ng trình MIDP s
Có ít nh t 32 kilobytes đ ch y Java
Có k t n i không dây (wireless network)
Yêu c u ph n m m:
M c dù h đi u hành c a t ng thi t b có th khác nhau nh ng ph i đáp
ng đ c các yêu c u t i thi u sau:
H đi u hành ph i h tr vi c x lý ng t, x lý exception và h tr x
lý đ h a bitmap đ xu t d li u ra màn hình
Trang 24 H đi u hành ph i nh n đ c tín hi u nh p li u và chuy n d li u đó cho máy o Java
H đi u hành ph i h tr vi c đ c và ghi vào b nh non-volatile Không đòi h i h đi u hành ph i đ nh ngh a file system nh ng ph i cho phép ghi d li u d ng persistent (không b m t khi ng t máy, t t
PDA Profile: t ng ng MIDP, nh ng v i th tr ng là các máy PDA
L u ý: Lu n v n ch y u ch đ c p đ n Profile MIDP và các th vi n liên quan
đ ph c v cho vi c vi t ng d ng trên đi n tho i di đ ng
2.2.3.6 S khác nhau gi a MIDP 1.0 và MIDP 2.0
B ng 1:S c i ti n c a MIDP 2.0 so v i MIDP 1.0
M ng H tr giao th c HTTPS, download qua m ng an toàn h n
Ki m soát vi c k t n i gi a máy di đ ng và server Ví d nh các ch ng trình không th k t n i t i server n u không có s
ch p thu n c a ng i s d ng
Âm thanh Thêm các API h tr Multimedia M t trong nh ng c i ti n