Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 1
B GIÁO DC VÀ ÀO TO
TRNG I HC M THÀNH PH H CHÍ MINH
KHOA CÔNG NGH THÔNG TIN
ÁN MÔN HC
TÀI:
T
T
Ì
Ì
M
M
H
H
I
I
U
U
V
V
À
À
L
L
P
P
T
T
R
R
Ì
Ì
N
N
H
H
T
T
R
R
Ê
Ê
N
N
H
H
I
I
U
U
H
H
À
À
N
N
H
H
A
A
N
N
D
D
R
R
O
O
I
I
D
D
.
.
Giáo viên hng dn : Thc s H Quang Khi
Thi gian thc hin : 21.11.2011 – 15.02.2012
Sinh viên thc hin : Trn ng Khoa – MSSV: 0851010134
T: 0979 890 254
Nguyn Minh Tâm – MSSV: 0851010227
T: 0168 2952 264
Lp: TH08B2
Khóa: 2008 – 2012
THÁNG 02 NM 2012
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 2
LI CM N
Chúng em xin chân thành cm n Ban Giám Hiu và các Thy cô Trng i
Hc M Thành Ph H Chí Minh đã ch dn chúng em trong nhng tháng nm hc
tp ti trng, cng nh là cung cp nhng kin thc cn thit trong khong thi gian
chúng em thc hin đ án này.
Trong quá trình thc hin đ án môn hc chúng em xin chân thành cm n đc
bit đn th
y Thc s H Quang Khi, giáo viên hng dn, đã tn tình ging dy và
giúp đ chúng em trong sut quá trình thc hin và hoàn thành đ án môn hc.
Khi hoàn thành đc đ án này chúng em đã tri qua khong thi gian làm vic
nhóm cùng vi nhau tht hu ích. Tht s, đây là mt khong thi gian tuy ngn,
nhng đ đ chúng em th hin tinh thn làm vic nhóm, vn dng nhng kin thc đã
h
c đ hoàn thành công vic mt cách tt nht.
Tuy nhiên, do kh nng còn hn ch và thi gian có hn, chc chn trong tp đ
án môn hc không tránh khi thiu sót, mong đc s đng viên, thông cm và đóng
góp ý kin ca quý Thy cô và các bn đ tp đ án hoàn chnh hn.
Chúng em xin chân thành cm n.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 3
MC LC
MC TIÊU VÀ YÊU CU 6
1. Mc tiêu chính: 6
a. Mc tiêu ca ging viên đt ra cho chúng em là: 6
b. Bên cnh đó mc tiêu ca nhóm chúng em đt ra là: 6
2. Yêu cu sinh viên: 6
GII THIU ÁN 7
NI DUNG BÁO CÁO 8
I. TÌM HIU H IU HÀNH ANDROID: 8
1. S phát trin ng dng trên di đng: 8
2. Gii thiu chung v h điu hành Android: 8
a. Khái nim: 8
b. S phát trin ca Android: 8
c. Các ng dng Android c bn: 9
d. c đim ca b phát trin ng dng Android: 9
3. Kin trúc h điu hành Android: 10
a. Tng ht nhân Linux (Linux Kernel layer): 10
b. Tng Libraries và android runtime: 10
c. T ng Application Framework: 11
d. Tng Application: 11
4. Cài đt môi trng phát trin Android: 11
a. Phn mm h tr: 11
b. Hng dn cài đt: 11
II. NGÔN NG LP TRÌNH JAVA 20
1. Gii thiu Java: 20
2. Lch s hình thành ngôn ng Java: 20
3. Mt s đc đim ni bt ca ngôn ng lp trình Java: 20
a. Máy o Java ( Java Virtual Machine): 20
b. Thông dch: 21
c. c lp nn: 21
d. Hng đi tng: 21
e. a nhim – đa lung ( Multi Tasking – Multi Threading): 21
f. Kh chuyn: 21
g. H tr mnh cho vic phát trin ng dng: 21
III. NG DNG CALCULATOR 22
1. Mô t chc nng ng dng: 22
a. X lý biu thc: 22
b. Nhp hàm: 22
c. Các phép tính c bn: Cng +, tr -, nhân *, chia ÷ 22
d. Các phép tính vi các hàm: x
2
, n!, sin, cos, tan, sqrt. 22
e. Có th dùng degree hay radians cho các hàm lng giác (trigonometry) 22
f. Lu và gi li ni dung ca biu thc tính toán c (history) 22
g. Biu th kt qu: 22
2. Ý tng gii quyt bài toán: 22
3. Ý tng thut toán ký pháp nghch đo Ba Lan 23
a. Ý tng: 23
b. Hin thc thut toán: 23
4. Demo ng dng Calcaulator: 26
IV. KT QU 38
1. Chng trình ng dng “calculator”: 38
a. Kt qu đt đc: 38
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 4
b. Hn ch ca chng trình: 38
2. Kh nng làm vic 38
a. Tp th nhóm 38
b. Cá nhân: 38
V. HNG PHÁT TRIN THÊM 39
VI. KT LUN 40
VII. TÀI LIU THAM KHO 41
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 5
NHN XÉT CA GIÁO VIÊN HNG DN
Ngày……tháng……nm……
Ký tên
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 6
MC TIÊU VÀ YÊU CU
Sau thi gian hc tp và trau di kin thc thì gi đây là giai đon tt nht mà
mi thành viên trong nhóm chúng em có th áp dng nhng kin thc đã hc đ vn
dng vào đ tài mà trng đã giao cho chúng em làm. ây cng là giai đon đ thy rõ
kh nng tip thu, nm vng kin thc ca mình mc đ nào.
tài: Tìm hi
u và lp trình ng dng trên h điu hành Android.
1. Mc tiêu chính:
Phân tích và xây dng thành công phn mm ng dng máy tính khoa hc cho
đin thoi cm tay thông minh chy trên nn gi lp Android SDK.
a. Mc tiêu ca ging viên đt ra cho chúng em là:
- Làm quen vi cách thc làm vic theo nhóm.
- Nm vng và lp trình thành tho vi Java trên nn Android.
- Dùng Java trên nn Android thit k “Calculator”.
b. Bên cnh đó mc tiêu ca nhóm chúng em đt ra là:
- T đ tài này có th m rng ra và
ng dng cho các đ tài khác có liên
quan.
2. Yêu cu sinh viên:
- Hc môn lp trình hng đi tng, cu trúc d liu, và gii tích.
- Chu khó hc hi và tham kho tài liu.
- Kh nng làm vic nhóm.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 7
GII THIU ÁN
Gn đây đin thoi cm tay thông minh đã tr thành mt vt hu nh “cn phi
có” trong cuc sng hng ngày ca gii làm vic “trí thc”. Vit phn mm tin ích
nâng cao giá tr s dng cho chúng cng tr nên mt trào lu cho các công ty phát
trin phn mm, các gii lp trình viên chuyên nghip cng nh không chuyên. c
bit là nh
ng ng dng cho máy chy trên h điu hành Android.
Phn mm máy tính bao gi cng đc cài đt sn trong bt c đin thoi cm
tay nhng ch dng li mc đ c bn nh cng tr nhân chia, trong khi đó mc nhu
cu s dng ca gii làm vic “trí thc” cao hn, mc đ ca máy tính khoa hc.
L
y tiêu chí là đáp ng đc nhu cu k trên, nhóm chúng em xin đng ký, tìm hiu và
lp trình ng dng “máy tính khoa hc” dành cho h điu hành Android.
tài “Tìm hiu và lp trình ng dng trên h điu hành Android” nhm nâng
cao k nng lp trình, cng nh phân tích, thit k và xây dng mt ng dng thc tin
cho sinh viên t nhng yêu cu đc phân tích nh trên. Xây dng đc mt phn
mm
ng dng nh mt máy tính khoa hc thc th s không đn gin. Cho nên mc
đ yêu cu ca đ tài ch bao gm nhng phép toán và hàm đn gin. ng thi ng
dng đc gii hn ch cho máy đin thoi cm tay thông minh do màn hình (ln, cm
ng, …) ca chúng s cho phép thit k và xây dng mt giao din phc tp đa nng,
và b x lý c
a chúng đ mnh đ tính toán bài toán phc tp nhm đáp ng đc yêu
cu ca đ tài.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 8
NI DUNG BÁO CÁO
I. TÌM HIU H IU HÀNH ANDROID:
1. S phát trin ng dng trên di đng:
− Symbian:
+ Nhà phát trin: Nokia
+ Ngôn ng lp trình: Symbian C++
+ Thit b h tr: Nokia, Sony Ericsson, Samsung
− J2ME:
+ Nhà phát trin: Sun MicroSystems
+ Ngôn ng lp trình: Java, MIDlet
+ Thit b h tr: c h tr t nhiu nhà sn xut đin thoi
− Windows Phone:
+ Nhà phát trin: Microsoft
+ Ngôn ng lp trình: C#, VB
+ Thit b h tr: HTC, Samsung, LG, Dell, Nokia
− webOS (Palm OS)
+ Nhà phát trin: Palm, HP
+ Ngôn ng lp trình: C/C++
+ Thit b h tr: Palm, HP
−
iOS
+ Nhà phát trin: Apple
+ Ngôn ng lp trình: Objective C
+ Thit b h tr: iPhone
− Android
+ Nhà phát trin: Google
+ Ngôn ng lp trình: Java
+ Thit b h tr: HTC, Samsung, LG, Sony Ericsson, Acer, Dell…
2. Gii thiu chung v h điu hành Android:
a. Khái nim:
- Android là mt h điu hành dành cho thit b di đng nh smartphone, tablet
hay netbook. Android do Google phát trin da trên nn tng Linux kernel và
các phn mm mã ngun m. Android là h điu hành m mã ngun chính duy
nht.
- Android bao gm:
+ H điu hành m cho các thit b di đng.
+ Nn tng phát trin các ng dng di đng.
+ Các thit b di đng chy HH Android và các ng dng c
a nó.
b.
S phát trin ca Android:
- Ban đu nn tng này đc phát trin bi Android Inc. Android là mt h
điu hành di đng da trên nn tng linux phiên bn 2.6 dành cho các dòng đin
thoi SmartPhone. u tiên, đc ra đi bi công ty liên hp Android, sau đó
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 9
đc Google mua li và phát trin t nm 2005 và tr thành mt h
điu hành di đng mã ngun m, min phí, mnh m và đc a chung cao
trên th gii.
- Android đc phát trin nhm cnh tranh vi các h điu hành di đng khác
nh iOS (Apple), BlackBerry OS, Windows Mobile (Microsoft), Symbian
(Nokia), Samsung (Bada), WebOS (Palm) Tính đn thi đim này, Android đã
tr thành nn tng di đng tng trng nhanh nh
t th gii.
- H điu hành android mt h điu hành rt mnh mnh, có bo mt
cao, h tr đc nhiu công ngh tiên tin nh 3G, GPS, EDGE, Wifi tng
thích vi nhiu phn cng, h tr nhiu loi b nhp d liu nh keyboard,
touch và trackball. Android là h điu hành di đng nên có kh nng kt
ni cao vi các mng không dây. H tr
công ngh OpenGL nên có kh nng
chi các phng tin media, hot hình cng nh trình din các kh nng đ ha
khác cc tt, là tin đ đ phát trin các ng dng có giao din phc tp
chng hn nh là các trò chi.
- Nm 2008, h điu hành android đã chính thc m toàn b mã ngun, điu
đó cho phépcác hãng đin thoi có th đem mã ngun v
tùy chnh, thit
k li sao cho phù hp vi mi mu mã đin thoi ca h và điu quan trng
na là h điu hành m này hoàn toàn min phí, không phi tr tin nên giúp
h tit kim khá ln chi phí phát trin h điu hành. Nhng điu đó là
cc k tt không ch đi vi các hãng sn xut đin tho
i nh mà ngay
c vi nhng hãng ln nh Samsung, HTC
- Vi các nhà phát trin ng dng (developers), vic h điu hành
android đc s dng ph bin đng ngha vi vic h có th thoi mái phát
trin ng dng trên nn android vi s tin tng là ng dng đó s có th
chy đc ngay trên nhiu dòng đin thoi ca các hãngkhác nhau. H
ít
phi quan tâm là đang phát trin cho đin thoi nào, phiên bn bao nhiêu vìnn
tng android là chung cho nhiu dòng máy, máy o Java đã chu trách
nhim thc thinhng ng dng phù hp vi mi dòng đin thoi mà nó
đang chy. Tt c các chng trình ng dng đc vit bng ngôn ng Java
kt hp vi XML nên có kh nng kh chuyn cao.
c. Các ng dng Android c bn:
- Duyt mail.
- Qun lý SMS.
- Qun lý thông tin ngi dùng PIM.
- Trình duyt web.
- Chng trình chi nhc, hin th hình nh.
d.
c đim ca b phát trin ng dng Android:
- Hoàn toàn min phí.
- H tr các thit b có Wifi.
- H tr GPS.
- Th vin s dng Bluetooth.
- Trình duyt web HTML 5.
- H tr phát trin ng dng v bn đ.
- Th vin âm thanh x lý nhiu đnh dng.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 10
- Th vin đ ha 2D, 3D.
3. Kin trúc h điu hành Android:
H điu hành android có 4 tng t di lên trên là tng ht nhân Linux
(phiên bn 2.6), tng Tng Libraries và Android runtime, Tng Application
Framework và trên cùng là tngApplication.
Kin trúc h điu hành Android
a.
Tng ht nhân Linux (Linux Kernel layer):
H điu hành android đc phát trn da trên ht nhân linux, c th là ht nhân
linux phiên bn2.6, điu đó đc th hin lp di cùng này. Tt c mi hot đng
ca đin thoi mun thihành đc thì đu đc thc hin mc cp thp lp này
bao gm qun lý b nh (memorymanagement), giao tip vi ph
n cng (driver
model), thc hin bo mt (security), qun lý tin trình (process).
b.
Tng Libraries và android runtime:
- Libraries: Phn này có nhiu th vin đc vit bng C/C++
đ các phn mm có th s dng, các th vin đó đc tp hp thành mt s
nhóm nh :
+ Th vin h thng (System C library): th vin da trên chun C, đc
s dng ch bi h điu hành.
+ Th vin Media (Media Libraries): Có nhiu code đ h tr vi
c phát và ghi
các loi đnh dng âm thanh, hình nh, video thông dng.
+ Th vin SQLite : H c s d liu đ các ng dng có th s dng.
- Android runtime: Phn này cha các th vin mà mt chng trình
vit bng ngôn ng Java có thhot đng. Phn này có 2 b phn tng t
nh mô hình chy Java trên máy tính thng. Th nht là các th vin lõi (Core
Library), cha các lp nh
JAVA IO, Collections, File Access. Th hai là mt
máy o java (Dalvik Virtual Machine).
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 11
c. Tng Application Framework:
Tng này xây dng b công c - các phn t mc cao đ các lp trình
viên có th nhanh chóng xây dng ng dng. Nó đc vit bng Java, có kh nng s
dng chung đ tit kim tài nguyên.
Gii thiu mt s thành phn ca phn này:
- Activity Manager: Qun lý các chu k sng ca mt ng dng cng
nh cung cp công c điu khin các Activity.
- Telephony Manager: Cung c
p công c đ thc hin vic liên
lc nh gi đin thoi.
- XMPP Service: Cung cp công c đ liên lc trong thi gian thc.
- Location Manager: Cho phép xác đnh v trí ca đin thoi thoi
da vào h thng đnh v toàn cu GPS và Google Maps.
d.
Tng Application:
ây là lp ng dng giao tip vi ngi dùng, bao gm các ng dng nh :
- Các ng dng c bn, đc cài đt đi lin vi h điu hành là gi đin
(phone), qun lý danh b (Contacts), duyt web (Browser), nhn tin (SMS), lch
làm vic (Calendar), đc e-mail (Email-Client), bn đ (Map), quay phim chp
nh (camera)
- Các ng dng
đc cài thêm nh các phn mm chng khoán (Stock), các
trò chi (Game), t đin…
4. Cài đt môi trng phát trin Android:
a. Phn mm h tr:
- lp trình Android thì mi b SDK ca Google là không đ, bn còn cn
tích hp nó vào mt IDE nh Eclipse, bên cnh đó còn có Netbeans thì plugin
cho Android vn cha hoàn thin.
- SDK Android Emulator là mt tin ích min phí dành cho Windows, Mac
và Linux đ gi lp Android ngay trên máy tính. Nó đc Google thit k đ các
nhà phát trin có th th nghim các ng dng ca mình trên Android trc khi
chy chúng trên thit b cm tay và có nhiu phiên bn khác nhau nh 1.6, 2.0,
2.1, 2.2, 2.3, v.v…
- Bn có th ch
n phiên bn mà mình mun, bn da vào thông s SDK
Platform Android your.version đ xác đnh phiên bn Android tích hp trong
gói cài đt.
b.
Hng dn cài đt:
- Công c cn thit:
+ Java Development Kit (JDK) 7:
+ Eclipse 3.7.1
+ Android SDK
+ Android Development Toll (ADT)
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 12
+ Android Platforms
- Các bc cài đt:
+ Cài đt JDK:
• u tiên bn cài Java Development Kit (JDK) bn hin ti là bn JDK 7
• Linkdownload:
• Bm nút download có mi tên trong hình đ ti:
• Tip tc bm nút Chn “Accept License Agreement” đ chp nhn điu
khon s dng và bm vào link đ ti v (phù hp vi h điu hành) nh mi
tên trong hình:
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 13
• Sau khi ti v bn cài đt bn chy file cài đt JDK và làm theo hình đ mc
đnh toàn b và bm Next đn khi Finish:
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 14
• Sau bc này JDK s yêu cu cài JRE (Java Runtime Environment) vào máy
Bn bm Next nh hình đ tip tc cài JRE :
• Sau khi cài hoàn thành bm Finish đ hoàn tt vic cài JDK vào máy.
+ Cài đt Eclipse: (hng dn dành cho phiên bn portable)
• u tiên bn cn ti Eclipse Classic bn mi ti :
Eclipse
• Chn Eclipse cho h điu hành ca bn là x86 hoc x64:
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 15
• Sau khi ti v bn bm chut phi vào file va ti và bung nén nh hình:
• đây mình dùng C trong máy đ bung nén :
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 16
• Sau khi bung nén bn s có toàn b file ca Eclipse trong th mc C:\eclipse
nh sau:
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 17
• File Eclipse có đánh du sao trong hình là file đ chy Eclipse, bn có th to
shortcut nó ra desktop đ d làm vic.
+ Cài đt Android SDK
• u tiên ta ti b SDK ti
chn
platform phù hp vi OS mình đang dùng
• Gii nén file zip bn va ti v. Chy SDK Setup.exe. Bn có th gp thông
báo li “Fetching
https://dl-sl Failed to fetch ”.
• Close thông báo này li. Tip theo ca s Choose Packages to Install xut hin.
Nu ca s này trng rng thì chn Cancel.
• Quay v ca s Android SDK and AVD manager -> Chn Setting, đánh du
vào ô Force https:// Chn Available Packages.
• ánh du các Packages bn mun ti: Documents chính là phn Javadoc mô t
hot đng ca các phng thc và các lp (phn này không th thiu), Sample là
các đon code mu, SDK Platform ng vi các phiên bn h điu hành (2.2 - API
level 8, 2.1 - API level 7, ), và Google API đ phát trin các phn mm liên quan
đn dch v ca Google.
Chn Install Selected -> Install -> Ch chng trình cài đt xong.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 18
+ Tích hp Android SDK vào Eclipse:
• Khi chy Eclipse, vào Help -> Install new softwares.
• Chn Add, Name” tên bn mun và Location gõ vào đa ch đ ti v ADT:
HTML Code:
hoc HTML Code:
• Nu https không hot đng, bn cng có th ti thng ADT v máy theo link
(bn mi nht 0.9.7 ng vi
Android 2.2), chn Archive và browse ti file này (lu ý không gii nén)
• Chn OK. Check vào phn di ô Name (s hin ra dòng Developer Tools).
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 19
• Chy Eclipse chn Tab Windows -> Preferences -> Android
Nhn nút Browse và chnh đng dn ti th mc ca Android SDK bn ti lúc
trc. Chn Apply -> OK.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 20
II. NGÔN NG LP TRÌNH JAVA
1. Gii thiu Java:
- Java là mt ngôn ng lp trình dng lp trình hng đi tng (OOP). Khác
vi phn ln ngôn ng lp trình thông thng, thay vì biên dch mã ngun thành
mã máy hoc thông dch mã ngun khi chy, Java đc thit k đ biên dch mã
ngun thành bytecode, bytecode sau đó s đc môi trng thc thi (runtime
environment) chy. Bng cách này, Java thng chy nhanh hn nhng ngôn
ng lp trình thông dch khác nh Python, Perl, PHP,…
- Cú pháp Java đc vay mn nhiu t C & C++ nh
ng có cú pháp hng
đi tng đn gin hn và ít tính nng x lý cp thp hn.
2. Lch s hình thành ngôn ng Java:
- Java đc khi đu bi James Gosling và bn đng nghip Sun
Microsystems nm 1991. Không nên ln ln Java vi JavaScript, hai ngôn ng
đó ch ging tên và loi cú pháp nh C. Công ty Sun Microsystems đang gi bn
quyn và phát trin Java thng xuyên.
- Java đc to ra vi tiêu chí “Vit (code) mt ln, thc thi khp ni”
(“Write Once, Run Anywhere” (WORA)). Chng trình phn mm vit bng Java
có th chy trên mi nn tng (platform) khác nhau thông qua m
t môi trng
thc thi vi điu kin có môi trng thc thi thích hp h tr nn tng đó. Môi
trng thc thi ca Sun Microsystems hin h tr Sun Solaris, Linux, Mac OS,
FreeBSD & Windows. Ngoài ra, mt s công ty, t chc cng nh cá nhân khác
cng phát trin môi trng thc thi Java cho nhng h điu hành khác nh BEA,
IBM, HP… . Trong đó, đáng nói đn nht là IBM Java Platform h tr Windows,
Linux, AIX & z/OS.
- Nhng chi tit v ngôn ng, máy
o và API ca Java đc gi bi Cng
đng Java (do Oracle qun lý). Java đc to ra vào nm 1991 do mt s k s
Sun, bao gm ông James Gosling, mt phn ca D án Xanh (Green Project).
Java đc phát hành vào nm 1994, ri nó tr nên ni ting khi Netscape tuyên
b ti hi tho SunWorld nm 1995 là trình duyt Navigator ca h s h tr
Java. V sau Java đc đc h tr trên hu ht các trình duyt nh Internet
Explorer (Microsoft), Firefox (Mozilla), Safari (Apple)…
- Java đc s dng ch yu trên môi trng mng, internet.subby Sau khi
Oracle mua li công ty ca Sun Microsystem nm 2009-2010, Oracle đã mô t h
là “ngi qun lý công ngh Java vi cam kt không ngng đ bi dng mt
cng đng tham gia và minh bch.
3. Mt s đc đim ni bt ca ngôn ng lp trình Java:
a. Máy o Java ( Java Virtual Machine):
- Tt c các chng trình mun thc thi đc thì phi đc biên dch ra mã
máy. Mã máy ca tng kin trúc CPU ca mi máy tính là khác nhau (tp lnh
mã máy ca CPU Intel, CPU Solarix, CPU Macintosh … là khác nhau), vì vy
trc đây mt chng trình sau khi đc biên dch xong ch có th chy đc
trên mt kin trúc CPU c th nào đó. i vi CPU Intel chúng ta có th chy
các h điu hành nh Microsoft Windows, Unix,Linux, OS/2, …
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 21
- Chng trình thc thi đc trên Windows đc biên dch di dng file có
đuôi .exe còn trên Linux thì đc biên dch di dng file có đuôi .elf, vì vy
trc đây mt chng trình chy đc trên Windows mun chy đc trên h
điu hành khác nh Linux chng hn thì phi chnh sa và biên dch li.
- Ngôn ng lp trình Java ra đi, nh vào máy o Java mà khó khn nêu trên
đã đc khc phc. Mt ch
ng trình vit bng ngôn ng lp trình Java s đc
biên dch ra mã ca máy o Java (mã java bytecode). Sau đó máy o Java chu
trách nhim chuyn mã Java bytecode thành mã máy tng ng. Sun-
Microsystem chu trách nhim phát trin các máy o Java chy trên các h điu
hành trên các kin trúc CPU khác nhau.
b.
Thông dch:
- Java là mt ngôn ng lp trình va biên dch va thông dch. Chng trình
ngun vit bng ngôn ng lp trình Java có đuôi *.java đu tiên đc biên dch
thành tp tin có đuôi *.class và sau đó s đc trình thông dch thông dch thành
mã máy.
c. c lp nn:
- Mt chng trình vit bng ngôn ng Java có th chy trên nhiu máy tính
có h điu hành khác nhau (Windows, Unix,Linux, …) min sao đó có cài đt
máy o Java (Java Virtual Machine). Vit mt ln chy mi ni (write once run
anywhere).
d.
Hng đi tng:
- Hng đi tng trong Java tng t nh C++ nhng Java là mt ngôn ng
lp trình hng đi tng hoàn toàn. Tt c mi th đ cp đn trong Java đu
liên quan đn các đi tng đc đnh ngha trc, thm chí hàm chính ca mt
chng trình vit bng Java (đó là hàm main) cng phi đt bên trong mt lp.
Hng đi tng trong Java không có tính đa k tha
(multi inheritance) nh
trong C++ mà thay vào đó Java đa ra khái nim interface đ h tr tính đa k
tha.
e. a nhim – đa lung ( Multi Tasking – Multi Threading):
- Java h tr lp trình đa nhim, đa lung cho phép nhiu tin trình, tiu trình
có th chy song song cùng mt thi đim và tng tác vi nhau.
f. Kh chuyn:
- Chng trình ng dng vit bng ngôn ng Java ch cn chy đc trên
máy o Java là có th chy đc trên bt k máy tính, h điu hành nào có máy
o Java. “Vit mt ln, chy mi ni” (Write Once, Run Anywhere).
g.
H tr mnh cho vic phát trin ng dng:
- Công ngh Java phát trin mnh m nh vào “đi gia Sun Microsystem”
cung cp nhiu công c, th vin lp trình phong phú h tr cho vic phát trin
nhiu loi hình ng dng khác nhau c th nh: J2SE (Java 2 Standard Edition)
h tr phát trin nhng ng dng đn, ng dng client-server; J2EE (Java 2
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 22
Enterprise Edition) h tr phát trin các ng dng thng mi, J2ME (Java 2
Micro Edition) h tr phát trin các ng dng trên các thit b di đng, không
dây, …
III. NG DNG CALCULATOR
1. Mô t chc nng ng dng:
a. X lý biu thc:
- Cho phép nhp biu thc dùng dng mu (inputting expression using standard
format) nh ca mt máy tính khoa hc thc s. Ví d có th nhp biu thc:
3*(9-6)+sin(90)/2-3.5+4!
b. Nhp hàm:
- T đng thêm du ngoc m khi nhp hàm. Ví d nhn hàm s th hin “sin(”
trong biu thc sin.
c. Các phép tính c bn: C
ng +, tr -, nhân *, chia ÷
d. Các phép tính vi các hàm: x
2
, n!, sin, cos, tan, sqrt.
e. Có th dùng degree hay radians cho các hàm lng giác (trigonometry)
f. Lu và gi li ni dung ca biu thc tính toán c (history)
g. Biu th kt qu:
- Dng s thp phân (decimal number), ví d 100÷7 = 14.2857142857142857142.
Có th xác đnh s ch s thp phân (decimal place) ca kt qu.
- Ví d 100÷7 = 14.286 vi 3 ch s thp phân
2. Ý tng gii quyt bài toán:
- Bình thng,
đ vit mt biu thc tng 2 s, ta vit a + b. Cách vit này gi là
trung t (infix). Bi vì du + (ta gi là toán t) nm gia a, b (toán hng). Mt
biu thc phc tp hn có th dng (a + b) * c.
- Ký pháp Nghch đo Ba Lan (Reversed Polish Notation - RPN) là dng biu thc
hu t (postfix), ngha là toán t nm sau toán hng. Theo đó, biu thc a + b vi
t
thành a b +; biu thc (a + b) * c s vit thành a b + c *.
- Phng pháp này giúp loi b du ngoc trong các biu thc, cng nh không
phi lu ý ti mc u tiên toán t (operator precedence).
RPN là mt phng tin tt giúp máy tính "đc" đc các biu thc toán hc, t
đó tính ra giá tr.
ö Vy, khi ta nhp mt biu thc toán vào mt chng trình tính giá tr biu thc,
nó s chuyn biu th
c v dng RPN, sau đó mi tính toán.
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 23
3. Ý tng thut toán ký pháp nghch đo Ba Lan
a.
Ý tng:
- Mi toán t, toán hng đc xem là mt token.
- c tng token trong biu thc trung t t trái qua phi, vi mi token ta thc
hin các bc sau:
o Nu là toán hng: cho ra output.
o Nu là du m ngoc ‘(’: cho vào stack
o Nu là du đóng ngoc ‘)’: ly các toán t trong stack ra và cho vào
output cho đn khi gp du m ngoc ‘(’ . (Du m ngoc cng phi
đc đa ra khi stack)
o Nu là toán t:
̇ Chng nào đnh stack là toán t và toán t đó có đ u tiên ln
hn hoc bng toán t hin ti thì ly toán t đó ra khi stack và
cho ra output.
̇
a toán t hin ti vào stack.
b.
Hin thc thut toán:
- Biu thc nhp là chui nên trc khi chuyn biu thc dng trung t sang hu
t ta cn x lý đ đn gin cho vic chuyn đi.
- Ta cn chuyn chui biu thc thành tng token. VD: “29+-6*(2-3)”
==>
B1: Duyt tng ký t chui và kim tra ký t thuc loi nào.
if ("-".indexOf(sb.charAt(i)) != -1)
{
switch (getType(sb.substring(i, i+1)))
{
B2:- Nu ký t là ‘-’ thì kim tra có phi là toán t ‘-’ hay s âm. Nu là toán t
‘-’ thì ta push vào stack, ngc li ta kim tra toán hng và ni chui.
case 1:// Là toán t
if(i==0||sb.charAt(i-1)=='(')
{
StringBuffer tam=
new StringBuffer();
tam.append(sb.substring(i,++i));
for(int j=i;j<sb.length()&&getType(sb.substring(j,j+1))==1;i=j++)
{
tam.append(sb.substring(j, j+1));
}
bt.push(tam.toString());
else
{
StringBuffer tam=
new StringBuffer();
tam.append(sb.substring(i,++i));
for(int j=i;j<sb.length()&&getType(sb.substring(j,j+1))==1;i=j++)
{
tam.append(sb.substring(j, j+1));
}
29 + -6*( 2- 3)
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 24
bt.push(tam.toString());
}
break;
-Ngc li thì cho push vào stack.
else{
bt.push(sb.substring(i, i+1));
}
break;
-Là s thì ta duyt tip đ ly toán hng.
case 1:
StringBuffer tam=
new StringBuffer();
for(int j=i;j<sb.length()&&getType(sb.substring(j,j+1))==1;i=j++)
{
tam.append(sb.substring(j, j+1));
}
bt.push(tam.toString());
break;
-Nu gp ký t ‘(‘ và ‘)’ thì push vào stack.
case 2:
bt.push(sb.substring(i, i+1));
break;
case 3:
bt.push(sb.substring(i, i+1));
break;
- Nu là ký t ch cái thì duyt tip đ ly hàm.
case 4:
StringBuffer tam1=
new StringBuffer();
for(int j=i;j<sb.length()&&getType(sb.substring(j,j+1))==4;i=j++)
{
tam1.append(sb.substring(j, j+1));
}
bt.push(tam1.toString());
break;
- Chuyn biu thc t trung t sang hu t.
VD:
==>
B1: Duyt tng token và kim tra kiu ca token đó.
for
(int i=0;i<tam.length;i++)
{
switch (getType(tam[i])) }
B2: - Nu là toán t thì pop ht các toán t có đ u tiên ln hn hoc bng ra
khi stack và push vào stack biu thc hu t, còn nu nh hn thì thêm vào stack.
case
0:
while (!stack.empty() && getPriority(tam[i].charAt(0)) <= getPriority(stack.peek().charAt(0)))
bieuthuchauto.push(stack.pop());
stack.push(tam[i]);
break;
- Nu là toán hng thì push vào stack hu t.
case 1:
bieuthuchauto.push(tam[i]);
break;
29 + -6*( 2- 3)
29 -6 2 3 - * +
Tìm hiu và lp trình ng dng trên h điu hành Android GVHD: Th.s H Quang Khi
Sinh viên: Trn ng Khoa – Nguyn Minh Tâm Khoa: Công Ngh Thông Tin
Trang 25
- Nu là ký t ‘(‘ thì push vào stack.
case 2:
stack.push(tam[i]);
break;
- Nu là ký t ‘)’ thì pop ht toán t cho đn khi gp ký t ‘(‘.
case 3:
while (stack.peek().charAt(0) != '(') {
bieuthuchauto.push(stack.pop());
}
stack.pop();
break;
- Nu là hàm sin, cos, tan, sqrt, ! thì push vào stack.
case 4:
stack.push(tam[i]);
break;
B3: Thoát khi vòng lp ta pop tt c toán t trong stack ra và push vào stack
hu t.
while(!stack.isEmpty())
bieuthuchauto.push(stack.pop());
- Tính biu thc hu t.
B1: Duyt tng token biu thc hu t.
B2: - Nu là toán hng thì push vào stack.
case 1: case -1:
stack.push(Double.parseDouble(bt[i]));
break;
- Nu là toán hng thì pop hai giá tr trên đu stack ra và tính toán.
case 0:
double a = stack.pop();
double b = stack.pop();
double value = 0;
switch (bt[i].charAt(0)) {
case '+': value = b+a;
break;
case '-': value = b-a;
break;
case '*': value = b*a;
break;
case '/': value = b/a;
break;
}
stack.push(value);
break;
- Nu là hàm cos, sin, tan, sqrt, … thì pop tr trên đu stack ra và tính toán.
case 4:
if(bt[i].equals("cos"))
{
stack.push(Math.cos(stack.pop()));
}
else if (bt[i].equals("sin")) {
stack.push(Math.sin(stack.pop()));
}
else if (bt[i].equals("tan")) {
stack.push(Math.tan(stack.pop()));
}
else if (bt[i].equals("sqrt")) {
stack.push(Math.sqrt(stack.pop()));
}
else if (bt[i].equals("^")) {
Double b1=stack.pop();
stack.push(Math.pow(stack.pop(),b1));
}
else if (bt[i].equals("!")) {