Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Đồ án xử lý ảnh trong Java
Nội dung xem thử
Mô tả chi tiết
Môc lôc
.........................................................................................................5
Lêi giíi thiÖu .......................................5
Ch¬ng 1..........................................................................................7
Java vµ nh÷ng høa hÑn.........................................................7
1.1 Java lµ g× vµ nã b¾t nguån tõ ®©u ?.........................................7
1.2 Java: u ®iÓm vµ nhîc ®iÓm......................................................8
¦u ®iÓm ...............................................................................................8
Nhîc ®iÓm...........................................................................................10
1.3 M« h×nh HTML vµ m« h×nh Java..........................................11
M« h×nh HTML .................................................................................11
M« h×nh Java.......................................................................................12
1.4 M«i trêng ph¸t triÓn Java......................................................12
T¹o mét file nguån.............................................................................13
Biªn dÞch file nguån...........................................................................13
Ch¹y øng dông ...................................................................................13
Ph©n tÝch mét øng dông Java.............................................................13
Lêi gi¶i thÝch trong Java.....................................................................14
§Þnh nghÜa mét líp ............................................................................14
Ph¬ng thøc main (Main Method).......................................................14
T¹o mét file Java nguån ....................................................................15
Biªn dÞch file nguån...........................................................................15
T¹o file nguån gåm c¶ Applet, t¹o ra file HTML.............................15
Ch¹y Applet (Running Applet)..........................................................15
Import Classes and Packages.............................................................16
§Þnh nghÜa mét ph©n líp Applet......................................................16
Ch¬ng 2 ....................................................................................17
Tæng quan vÒ m¹ng m¸y tÝnh.........................................17
2.1 B¹n ®· biÕt nh÷ng g× vÒ m¹ng Internet trong Java ...............17
N¹p Applet tõ m¹ng ..........................................................................17
1
N¹p mét ¶nh tõ m¹ng .......................................................................17
C¬ së vÒ m¹ng ....................................................................................17
TCP......................................................................................................18
UDP....................................................................................................18
PORTS.................................................................................................18
2.2 Líp m¹ng trong JDK............................................................19
2.2.1 - Thao t¸c víi URL ................................................................19
§äc vµ ghi mét ®èi tîng URLConnection ........................................24
2.2.2 Socket .....................................................................................25
Socket lµ g× ?.......................................................................................25
§äc vµ ghi mét socket .......................................................................26
Ch¬ng 3.......................................................................................28
Xö lý tÝn hiÖu sè....................................................................28
3.1 Më ®Çu vµ ph©n lo¹i..............................................................28
3.2 TÝn hiÖu rêi r¹c.......................................................................30
Mét sè d·y tÝn hiÖu rêi r¹c ®Æc biÖt:..................................................30
C¸c phÐp to¸n víi tÝn hiÖu rêi r¹c:....................................................31
C¸c hÖ thèng xö lý tÝn hiÖu rêi r¹c:...................................................31
3.3 PhÐp biÕn ®æi Fourier cña tÝn hiÖu rêi r¹c...........................33
Phæ biªn ®é, phæ pha, phæ n¨ng lîng:...............................................35
LÊy mÉu vµ kh«i phôc tÝn hiÖu liªn tôc theo thêi gian......................35
Kh«i phôc tÝn hiÖu t¬ng tù tõ tÝn hiÖu lÊy mÉu:................................37
Ch¬ng 4.......................................................................................39
xö lý ©m thanh sè..................................................................39
4.1 - T¹i sao chóng ta cÇn xö lý tÝn hiÖu sè................................40
Phæ cña tÝn hiÖu lµ g×..........................................................................40
LÊy mÉu tÝn hiÖu.................................................................................43
4.2 - C¸c file Audio......................................................................44
Gãi Sun.audio ....................................................................................44
Líp AudioStream..........................................................................45
2
Líp AudioData.............................................................................46
Líp AudioDataStream..................................................................46
Líp AudioStreamSequence..........................................................47
Líp AudioPlayer ..........................................................................48
C¬ së luËt m· ho¸ µ............................................................................48
Giíi thiÖu ch¬ng tr×nh........................................................................51
Líp UlawCodec............................................................................52
Líp Oscillator ..............................................................................54
Líp OscopeFrame.........................................................................57
Líp DoubleGraph.........................................................................60
Ch¬ng 5 .......................................................................................61
Nguyªn t¾c chuyÓn ®æi ...................................................61
©m Thanh sè ..............................................................................61
5.1 - DFt .......................................................................................61
TÝnh sè lîng bit cÇn thiÕt ®Ó lÊy mÉu ...............................................63
Líp futils. Timer : lµm chuÈn DFT....................................................64
Benchmarking ....................................................................................65
IDFT...................................................................................................65
5.2 FFT........................................................................................67
Líp FFT ................................................................................69
TÝnh log cña sè nguyªn......................................................................70
KiÓm tra FFT vµ IFFT........................................................................71
TÝnh PSD ............................................................................................72
Thùc hiÖn chuyÓn ®æi b»ng ch¬ng tr×nh............................................73
Läc t¹p ©m b»ng FFT.........................................................................77
Khe hë phæ .........................................................................................78
Bé läc th«ng cao (the Hight-Pass Filter) ....................................80
Ch¬ng 6........................................................................................82
Giíi thiÖu vÒ xö lý ¶nh ......................................................82
3
6.1 m¸y quÐt vµ Video Camera ................................................82
6.2 Giao diÖn Observer...............................................................84
6.3 - ¶nh sè vµ C¸c d¹ng file ¶nh.................................................90
DATABAHN......................................................................................90
Mét sè c¸c d¹ng ¶nh c¬ b¶n...............................................................90
ChuyÓn ®æi gi÷a hai d¹ng Vector vµ Bipmap....................................91
Mét sè d¹ng ¶nh kh¸c........................................................................92
§é s©u mµu, b¶ng mµu, sù trong suèt................................................92
Ph¬ng thøc nÐn ..................................................................................94
Mét sè c¸c d¹ng ¶nh th«ng dông.......................................................97
Ch¬ng 7 .....................................................................................104
xö lý ¶nh trong Java......................................................104
7.1 HISTOGRAM .....................................................................104
7.2 BiÕn ®æi DFT trong kh«ng gian hai chiÒu .......................105
Líp FFTPlane.............................................................................107
ProcessPlane ...................................................................................108
Líp Slope ....................................................................................111
Líp Points ..................................................................................112
7.3 c¸c m« h×nh mµu ...............................................................113
HÖ mµu HLS......................................................................................115
HÖ mµu IYQ .....................................................................................115
7.4 H×nh ¶nh .............................................................................116
Tµi liÖu tham kh¶o............................................................................120
4
Lêi giíi thiÖu
Ngµy nay viÖc øng dông m¸y tÝnh kh«ng chØ dõng l¹i ë møc ®é trong c¸c
phßng thÝ nghiÖm, c¸c trung t©m m¸y tÝnh hay c¸c v¨n phßng n÷a mµ nã ®· më
réng ra vµ trë thµnh mét ph¬ng tiÖn gi¶i trÝ trong gia ®×nh hay thËm trÝ trë thµnh
mét ph¬ng tiÖn d¹y häc. H¬n n÷a c¸c d÷ liÖu cña ngêi sö dông còng kh«ng ®¬n
thuÇn chØ lµ nh÷ng tËp v¨n b¶n, hå s¬ hay c¸c tµi liÖu nghiªn cøu... mµ nã cßn
bao gåm c¶ nh÷ng d÷ liÖu ©m thanh vµ h×nh ¶nh. HiÖn nay, trªn thÕ giíi vµ t¹i
ViÖt Nam chóng ta ®· quen thuéc víi kh¸i niÖm xö lý tÝn hiÖu sè, lµ mét bé phËn
rÊt quan träng trong lÜnh vùc m¸y tÝnh; nhng ®Ó cã ®îc c¸c thuËt to¸n ®ßi hái
chóng ta ph¶i cã mét sè c¸c kü thuËt ®i kÌm. VÊn ®Ò truyÒn d÷ liÖu trªn m¹ng
mµ ®iÓn h×nh lµ ©m thanh vµ h×nh ¶nh sè còng lµ mét nhu cÇu cÇn ph¶i ®îc ®¸p
øng. V× vËy c¸c ®¸p øng vÒ m¹ng kh«ng ngõng ®îc c¶i tiÕn ®Ó ®¶m b¶o viÖc
truyÒn d÷ liÖu cã hiÖu qu¶. MÆt kh¸c trong thêi ®¹i multimedia, xö lý tÝn hiÖu lµ
sù giao nhau cña c¸c lÜnh vùc to¸n häc, kÜ thuËt tÝnh to¸n, vµ khoa häc m¸y tÝnh.
Trong thêi gian lµm ®å ¸n tèt nghiÖp em tËp trung t×m hiÓu vÒ c¸c thuËt
to¸n vµ c¸c øng dông cña xö lý tÝn hiÖu ©m thanh vµ h×nh ¶nh b»ng ng«n ng÷ lËp
tr×nh Java, c¸c modul ®îc ®Æt trong ch¬ng tr×nh Diffcad.java. §å ¸n gåm cã 7
ch¬ng:
• Ch¬ng 1: Giíi thiÖu vÒ java. Ch¬ng nµy tr×nh bµy mét c¸ch kh¸i qu¸t vÒ sù
ra ®êi vµ mét sè ®Æc trng cña Java.
• Ch¬ng 2: Giíi thiÖu vÒ m¹ng m¸y tÝnh trong Java.
5
• Ch¬ng 3: Xö lý tÝn hiÖu sè; tr×nh bµy c¸c kh¸i niÖm c¬ b¶n vµ tËp trung mét
phÇn vµo phÐp biÕn ®æi Fourier cña tÝn hiÖu rêi r¹c.
• Ch¬ng 4: ¢m thanh sè; tr×nh bµy c¸c kü thuËt vµ c¸c nguyªn t¾c c¬ b¶n cña
viÖc lÊy mÉu, m· ho¸ cña c¸c file ©m thanh trªn m¹ng. §a ra c¸c
ch¬ng tr×nh thùc hiÖn c¸c thuËt to¸n trªn.
• Ch¬ng 5: Nguyªn t¾c chuyÓn ®æi ©m thanh sè. Ch¬ng nµy ®i s©u vµo c¸c phÐp
biÕn ®æi DFT vµ FFT cïng víi mét sè c¸c phÐp xö lý kh¸c ®îc
thùc hiÖn b»ng ch¬ng tr×nh.
• Ch¬ng 6: Giíi thiÖu vÒ xö lý ¶nh.
• Ch¬ng 7: Xö lý ¶nh trong Java.
Em xin ch©n thµnh c¶m ¬n TS Qu¸ch TuÊn Ngäc, c¸c anh chÞ vµ c¸c b¹n c«ng
t¸c t¹i trung t©m C«ng nghÖ th«ng tin, bé Gi¸o Dôc vµ §µo t¹o ®· nhiÖt t×nh
gióp ®ì trong thêi gian lµm ®å ¸n tèt nghiÖp võa qua. Do thêi gian vµ kh¶ n¨ng
cã h¹n nªn b¶n b¸o c¸o nµy kh«ng tr¸nh khái c¸c thiÕu sãt, rÊt mong sù gãp ý,
gióp ®ì cña c¸c thÇy c« vµ c¸c b¹n.
Hµ Néi 5/1999
Lª Quang Trung
6
Ch¬ng 1
Java vµ nh÷ng høa hÑn
Trong ch¬ng nµy chóng ta b¾t ®Çu t×m hiÓu ng«n ng÷ lËp tr×nh java, nh÷ng u
®iÓm vµ nh÷ng nhîc ®iÓm cña nã. C¸ch nh×n nhËn tæng qu¸t vÒ ng«n ng÷ Java
®· ®îc biÕt tíi nh c¸ch nh×n vÒ mét ng«n ng÷ lËp tr×nh ®Æc biÖt cïng víi c¸c m«i
trêng lËp tr×nh. Khi nãi tíi côm tõ kÜ thuËt java (Java Technology) cã nghÜa lµ ta
muèn nãi ®Õn c¶ phÇn cøng còng nh phÇn mÒm.
1.1 Java lµ g× vµ nã b¾t nguån tõ ®©u ?
ThuËt ng÷ Java bao hµm c¶ hai mÆt ng«n ng÷ vµ c¸c kÜ thuËt cung cÊp cho
ng«n ng÷. Khi nãi tíi Java programming language, nghÜa lµ ®ang nãi vÒ mét
ng«n ng÷ lËp tr×nh híng ®èi tîng ph¸t triÓn bëi h·ng Sun Microsystem. VÒ mÆt
có ph¸p nã còng gièng nh c¸c ng«n ng÷ th«ng thêng kh¸c, ®îc ph¸t triÓn tõ C,
C++ vµ Objective C. Java chÊp nhËn m« h×nh cña ZetaLisp, mét phÇn më réng
cña LISP vµ ch¹y nhanh h¬n c¸c m¸yLISP.
Khi chóng ta nãi tíi Java techonology, còng cã nghÜa chóng ta nãi vÒ ng«n
ng÷ lËp tr×nh java vµ hÖ thèng mµ nã cung cÊp. HÖ thèng bao gåm mét th viÖn
lín c¸c líp ®îc gäi lµ Java class libraries. Java techonology còng bao
hµm c¶ c¸ch ch¹y ch¬ng tr×nh, ho¹t ®éng dùa trªn mét machine Java. Java
techonology cho phÐp thùc thi c¸c machine Java b»ng c¸ch sö dông mäi nèi kÕt
phÇn cøng vµ phÇn mÒm. Khi machine java ®îc thùc thi trªn phÇn mÒm th× nã ®-
îc gäi lµ m¸y ¶o Java (Java virtual machine).
Mét trong nh÷ng môc tiªu khi thiÕt kÕ java lµ nh»m ®¹t ®îc hiÖu qu¶ khi thùc
hiÖn c¸c tÝnh to¸n ®éc lËp. Trong m« h×nh tÝnh to¸n ®éc lËp, m· (code) ®îc n¹p
®Ó thùc thi c¸c ®ßi hái cã tÝnh chÊt b¶o mËt. NÕu m· nguån (source code) lµ
kh«ng ®¸ng tin cËy th× source code ®îc xö lÝ thiÕu chÝnh x¸c ®èi víi d÷ liÖu cña
ngêi dïng vµ phÇn cøng m¸y tÝnh. Sù nguy h¹i cña d÷ liÖu ngêi dïng cã thÓ bao
hµm c¶ phÐp truy cËp vµ phÐp ph©n bè c¸c th«ng tin dÔ bÞ t¸c ®éng nh sè thÎ tÝn
dông, sè tµi kho¶n vµ c¸c d÷ liÖu cã tÝnh chÊt së h÷u kh¸c.
NÕu chóng ta xem xÐt tÊt c¶ c¸c Web server nh mét phÇn cña hÖ thèng m¸y
tÝnh lín, th× Web lµ mét hÖ ®iÒu hµnh lín nhÊt trªn thÕ giíi. Trªn thùc tÕ, ng«n
ng÷ lËp tr×nh cña Web lµ java, vµ n÷a, víi c¸ch nh×n nµy th× Java lµ mét ng«n
ng÷ lËp tr×nh hÖ ®iÒu hµnh. Sun cã kÕ ho¹ch ®a ra Java machine kh«ng ¶o tøc lµ
c¸c Java machine thùc hiÖn trªn phÇn cøng. HÖ ®iÒu hµnh cho c¸c m¸y nh vËy sÏ
®ùoc viÕt b»ng Java. Mäi ngêi sÏ kh«ng ph¶i viÕt m· cryptic C cho phÇn Kernel
cña hÖ ®iÒu hµnh mµ nã sÏ ®îc viÕt b»ng Java.
C¸c chip Java sÏ ®îc gi¶m gi¸ m¹nh, mét sè c¸c thiÕt bÞ ®îc nh¾m tíi nh TV
set-top box, cellular telephone, paper, digital TV, smart VRC, PDA, m¸y in, m¸y
7
copy v..v sÏ ®îc m¸y tÝnh trî gióp, tøc lµ Sun muèn tÊt c¶ c¸c m¸y tÝnh ®Òu ch¹y
Java. Bëi v× c¸c chip ®îc ch¹y trªn m· byte code, nªn nã kh«ng cÇn biªn dÞch
just- in -time. C¸c thiÕt bÞ sÏ kh«ng cÇn mµn hiÓn thÞ, bé nhí lín vµ nèi kÕt m¹ng
Internet.
Sun Microelectronics gäi kiÕn tróc chip ®Çu tiªn lµ Java One. HiÖn nay Sun
®· cã hai hä chip lµ microJava vµ ultraJava. MicroJava ®îc sö dông víi môc ®Ých
cung cÊp cho c¸c thÞ trêng trong lÜnh vùc ®iÒu khiÓn. UltraJava cã môc ®Ých cung
cÊp cho c¸c workstation. C¬ së cña kÜ thuËt nµy lµ mét ng¨n xÕp super-scalar dùa
vµo tËp chØ dÉn rót gän cña m¸y tÝnh (RISC) gäi lµ picoJava. §îc gäi lµ superscalar bëi v× nã thi hµnh kªnh bèn tr¹ng th¸i cho phÐp c¸c phÇn kh¸c nhau cña
bé xö lÝ lµm bèn nhiÖm vô kh¸c nhau cïng mét lóc. Gäi lµ RISC bëi v× nã thùc
thi hÇu hÕt c¸c chØ dÉn trong mét chu k× ®ång hå. TÝnh to¸n trong mét kªnh cña
super-scalar gièng nh c¸c dßng assembly. D÷ liÖu ®îc xö lÝ dßng nä tiÕp dßng
kia. Trªn h×nh 1.1 chØ ra c¸c kªnh, khi ®îc ®iÒn, sÏ cho phÐp picoJava t×m thÊy,
gi¶i m·, thi hµnh, vµ lu gi÷ sau ®ã tr¶ l¹i kÕt qu¶. Trong qu¸ tr×nh t×m, picoJava
sö dông bèn byte cache ®a vµo ng¨n xÕp. Ng¨n xÕp lµ tËp hîp 64 thanh ghi 32
bits trªn mét chip. Sau khi lu trªn chip, RAM ®îc sö dông ®Ó thùc hiÖn cïng víi
ng¨n xÕp.
H×nh 1.1 Kªnh picoJava bèn tr¹ng th¸i
1.2 Java: u ®iÓm vµ nhîc ®iÓm
¦u ®iÓm
• Java lµ mét ng«n ng÷ ®Þnh kiÓu m¹nh. TÊt c¶ c¸c tªn cña líp ®Òu ®îc x¸c
®Þnh kiÓu vµ sö dông ®Ó kiÓm tra mäi sù tham chiÕu tíi líp khi ®îc th«ng
qua nh mét ®èi sè cña ph¬ng thøc. HÇu hÕt c¸c ng«n ng÷ bËc cao hiÖn nay
®Òu cã ®Æc ®iÓm nµy, mÆc dï kiÓu C cò th× l¹i tr¸nh ®iÒu ®ã.
• Java th× nhá: Java dùa trªn kiÓu biªn dÞch m· byte (byte code). Chøa c¶
microkernel cña chÝnh nã, biªn dÞch m· byte céng thªm líp phô lµ 215KB.
§iÒu nµy lµ mét ho¹t ®éng cã hiÖu qu¶. Cã nghÜa lµ biªn dÞch m· byte cã thÓ
n»m gän trong ROM vµ ®a ra c¸c microcontroller ®Ó ch¹y ch¬ng tr×nh java.
8
• Java lµ dÔ dµng dÞch chuyÓn: Java lµ mét ng«n ng÷ ®a nÒn (multi-platform).
KhÈu hiÖu cña Java lµ viÕt mét lÇn ch¹y mäi n¬i (Write Once, Run
Anywhere). Bëi v× ë ®©y chØ x¸c ®Þnh cã mét m¸y ¶o, Java ®a ra mét giao
diÖn lËp tr×nh kh«ng chuÈn t¾c tíi c¸c applet vµ c¸c øng dông trªn mäi phÇn
cøng. NÒn Java lµ lÝ tëng cho Internet, ë ®ã ch¬ng tr×nh cã thÓ ®îc ch¹y trªn
mäi m¸y tÝnh trong m¹ng. Khi ta biªn dÞch m· nguån cña Java, ta ph¶i thùc
thi trªn c¸c m· byte (byte code). M· byte ®îc t¹o thµnh bëi tr×nh biªn dÞch
cña Java vµ cÊu tróc nªn c¸c chØ dÉn tíi Java virtual machine. Java lµ mét
ng«n ng÷ dÔ dÞch chuyÓn cho phÐp ch¹y trªn mäi phÇn cøng mµ m¸y ¶o
Java cã thÓ ch¹y. M· byte lu trong file .class, ®îc n¹p tíi m¸y ¶o Java vµ
chøa c¶ biªn dÞch m· byte. Trªn h×nh 1.2 lµ mèi quan hÖ gi÷a ch¬ng tr×nh
Java vµ phÇn cøng.
H×nh 1.2
• Java lµ híng ®èi tîng: Java lµ ng«n ng÷ lËp tr×nh híng ®èi tîng. Trong m«
h×nh híng ®èi tîng, mét biÕn kiÓu ®èi tîng chøa c¸c d÷ liÖu còng nh c¸c
thuËt to¸n cÇn thiÕt ®Ó thao t¸c víi d÷ liÖu. Ngîc l¹i mét ng«n ng÷ lËp tr×nh
kh«ng híng ®èi tîng lµ ng«n ng÷ lËp tr×nh coi c¸c biÕn nh mét ®èi sè tham
chiÕu tíi thñ tôc. Kh«ng gièng nh Pascal, C, Fortran, C++, Java kh«ng cã
hµm (function). Trong Java tÊt c¶ c¸c ph¬ng thøc (method) ®Òu n»m trong
c¸c líp (classes). C++ lµ mét ng«n ng÷ cã më réng vÒ híng ®èi tîng. §iÒu
nµy cã nghÜa lµ ngêi lËp tr×nh kh«ng híng ®èi tîng cã thÓ viÕt ®îc trong C+
+, nhng mét ®iÒu nh vËy kh«ng ®îc cho phÐp trong Java.
• Java kh«ng cã con trá: Java th× crash-proof h¬n C, C++ vµ Pascal - mét ®Æc
®iÓm tèt h¬n. LÝ do lµ Java kh«ng cung cÊp mét kÜ thuËt nµo cho phÐp thao
t¸c víi con trá mét c¸ch trùc tiÕp. Do ®ã kh«ng cã c¸ch cho ngêi lËp tr×nh
thao t¸c víi ®Þa chØ bé nhí. Theo nhiÒu c¸ch kh¸c nhau mét con trá kh«ng
®óng cã thÓ g©y lçi cho bé nhí hay ch¬ng tr×nh. Chóng ta kh«ng ®ñ kh«ng
gian nhí ®Ó liÖt kª tÊt c¶ chóng. Chóng ta cã thÓ c¶m ¬n r»ng java kh«ng cã
con trá.
• Java kh«ng cã Multiple Inheritance: ®a kÕ thõa ®· ®îc biÕt tíi trong C++,
nhng ®îc lo¹i bá trong Java. §a kÕ thõa lµ tÝnh chÊt cã hai hay nhiÒu líp c¬
së trùc tiÕp bªn díi mét líp. VÊn ®Ò ®Æt ra ®èi víi ®a kÕ thõa lµ sù chång
chÐo c¸c tªn ph¬ng thøc còng nh c¸c biÕn, chóng ph¶i trïng tªn nhau dùa
9
Animal
theo mét quy t¾c cña ng«n ng÷ vµ dêng nh thêng xuyªn bÞ quªn bëi c¸c ngêi
lËp tr×nh. ë ®©y chØ cã mét kiÓu kÕ thõa ®îc cho phÐp lµ kiÓu a-kind-of
(AKO). Trªn h×nh 1.3 lµ mét vÝ dô kiÓu kÕ thõa AKO.
• Java cã Garbage Collection: Java cã phÐp lu tr÷ tù ®éng bao gåm c¶ kÜ thuËt
thu r¸c (r¸c ®îc xem lµ c¸c d÷ liÖu kh«ng cßn gi¸ trÞ sö dông). Thu r¸c cho
phÐp m¸y ¶o Java giµnh l¹i bé nhí ®îc sö dông bëi c¸c biÕn bÞ lo¹i bá. §Ó
thùc hiÖn thu r¸c trong ch¬ng tr×nh ta sö dông ph¬ng thøc gc() thuéc líp
System vµ viÕt nh sau System.gc(). Nh vËy b¹n kh«ng ph¶i lo l¾ng vÒ viÖc
gi÷ l¹i c¸c dÊu vÕt cña bé nhí.
H×nh 1.3
• Java cã c¸c th viÖn líp nÒn t¶ng: Java cã c¸c th viÖn nÒn t¶ng chøa
Abstract Window Toolkit (AWT). AWT cho phÐp giao diÖn ngêi dïng
®å ho¹ kiÓu híng ®èi tîng ®îc thay ®æi trong c¸c ch¬ng tr×nh. Th viÖn gåm
cã t¸m gãi chÝnh vµ sè lîng ngµy cµng t¨ng. Gãi input/output
java.io cho phÐp thao t¸c víi d÷ liÖu vµo vµ ra. Gãi m¹ng java.net,
cho phÐp thao t¸c víi c¸c socket vµ URL. Gãi tiÖn Ých java.util cho phÐp
tthùc hiÖn mét sè thao t¸c víi hÖ ®iÒu hµnh nh xem ngµy th¸ng, thêi gian,
sè ngÉu nhiªn,v..v
Nhîc ®iÓm
• §«i khi thu r¸c lµ mét viÖc lµm Ýt hiÖu qu¶: mÆt h¹n chÕ cña viÖc thu r¸c nh
sau. Thu r¸c cã thÓ dÉn tíi ch¬ng tr×nh kh«ng quyÕt ®Þnh ®îc thêi gian ch¹y.
§èi víi hÖ thèng lín, thu r¸c cã thÓ sö dông mét lîng thêi gian x¸c ®Þnh nµo
®ã cña bé vi xö lý.
• Java kh«ng ph¶i lµ mét ng«n ng÷ híng ®èi tîng thuÇn tuý. Chóng ta kh«ng
cã kh¶ n¨ng t¹o ra c¸c instance cña kiÓu d÷ liÖu primative. C¸c kiÓu d÷ liÖu
c¬ b¶n trong Java lµ boolean, int, long, float, double, char
vµ byte. Ngîc l¹i trong Smalltalk th× tÊt c¶ c¸c kiÓu d÷ liÖu ®Òu lµ c¸c líp.
• API thiÕu nhiÒu ®Æc trng: java thiÕu c¸c ®Æc trng cã tÝnh chÊt ch×a khãa cho
mét vÊn ®Ò. VÝ dô nã kh«ng cho phÐp chóng ta lËp tr×nh víi c¸c cæng nèi
tiÕp (cho dï hÇu hÕt c¸c m¸y tÝnh ®Òu cã Ýt nhÊt mét cæng) còng nh kh«ng
cho phÐp ®a ra m¸y in nÕu ®ang ë trong mét ch¬ng tr×nh Java. Java lµ mét
ng«n ng÷ míi, vµ bëi v× c¸c ®Æc trng cßn thiÕu trong API, Java cã thÓ kh«ng
dÔ dµng sö dông cho mét sè c¸c øng dông nµo ®ã.
10
Mamal Bird Reptile
Human
Student Professor
• Java kh«ng cã ph¬ng thøc ®¶o cung cÊp cho C++: cã thÓ chóng ta muèn më
réng c¸c ®Æc trng cña Java API b»ng c¸ch lËp tr×nh trªn mét ng«n ng÷ kh¸c.
ThËt kh«ng may lµ ng«n ng÷ lùa chän nµy chØ cã giíi h¹n lµ C. Kh«ng cã
c¸ch nµo nèi gi÷a Java vµ C++, mét phÇn cã thÓ do vÊn ®Ò vÒ name-space
mangling. Trong C++, chøc n¨ng m· nguån ®îc ®Þnh danh trong c¸c hµm
kh¸c tªn nhau ®èi víi tr×nh nèi kÕt. §iÒu nµy ®îc gäi lµ name-space
mangling. C¸c hµm ®îc ®äc trÖnh ®i dùa vµo kiÓu ®èi sè cña nã. Bëi java
kh«ng cã c¸ch nhËn biÕt hµm sÏ ®îc ®äc trÖnh nh thÕ nµo nªn hµm sÏ kh«ng
®îc gäi tíi.
1.3 M« h×nh HTML vµ m« h×nh Java
M« h×nh HTML cho phÐp tham chiÕu tíi mét tµi liÖu díi d¹ng c¸c file kh¸c
kiÓu nhau. Mét Browser ®äc c¸c tham chiÕu tíi file HTML vµ chuyÓn chóng
tíi ch¬ng tr×nh gi¶i m·. VÝ dô, nÕu mét file lµ díi d¹ng nÐn th× browser tù ®éng
gi¶i nÐn nã.
ThiÕu xãt kh«ng tr¸nh ®îc trong m« h×nh nµy lµ browser cã thÓ t¨ng lªn
kh«ng cã giíi h¹n. VÝ dô víi Netscape browser, nã yªu cÇu 16 MB RAM. Khi
mét øng dông trë nªn lín h¬n, chóng cã xu híng lµm chËm c¸c t¸c vô b×nh thêng kh¸c. Sau ®©y chóng ta so s¸nh m« h×nh HTML (HTML model) vµ m« h×nh
Java (Java model). Trong Java model, c¸c m· ®îc biªn dÞch trong c¸c file cã
®u«i .class vµ sau ®ã sÏ n¹p xuèng ®a vµo trong c¸c applet th«ng qua m¹ng.
M« h×nh HTML
Trªn Internet, c¸c m¸y tÝnh ®Òu ch¹y dÞch vô Hypertext Transfer Protocol
(HTTP). C¸c dÞch vô HTTP ®a d÷ liÖu ®¸p øng cho c¸c Web browser. Mét c¸ch
tæng qu¸t, d÷ liÖu ë c¸c d¹ng kh¸c nhau vµ HTML kh«ng cÇn gi¶i m· c¸c d÷
liÖu. KÕt qu¶ lµ Internet HTTP server cung cÊp miÒn lín c¸c d¹ng d÷ liÖu tíi c¸c
client nèi víi nã.
Trong HTML model, d÷ liÖu th« ®îc ghi trong HTML document b»ng mét
tham chiÕu siªu v¨n b¶n (hyper text reference). §Ó thùc hiÖn gi¶i m· d÷ liÖu víi
mét sè lín c¸c d¹ng d÷ liÖu kh¸c nhau, browser cã sö dông c¸c øng dông trî
gióp. Nh»m s¾p xÕp d÷ liÖu ®óng víi øng dông trî gióp, browser cã mét giao
thøc lµ Multipurpose Internet Mail Extension (MIME) cho phÐp dÞch vô HTTP
truyÒn dÉn cïng víi d÷ liÖu. Dùa trªn MIME, mét b¶ng t×m kiÕm x¸c ®Þnh xem
d÷ liÖu ®îc gi¶i m· vµ hiÓn thÞ nh thÕ nµo.
Mét vÊn ®Ò kh¸c. D÷ liÖu thêng ®îc hiÓn thÞ trong c¸c khu«n d¹ng ®iÖn tö
rÊt ®a d¹ng. Gi¶ sö cã mét tµi liÖu Microsoft Word cung cÊp trªn Web, ta cã thÓ
xem nã nh mét Word document nhng Word 5 trªn Mac kh«ng thÓ ®äc ®îc c¸c
Word 6 hay 7. V× vËy ph¶i cã mét file RFT (Rich text format) ®Ó Word 5
cã thÓ nhËn biÕt hÇu hÕt néi dung trong tµi liÖu. Tµi liÖu kiÓu Word Document
thêng ®îc chuyÓn sang d¹ng HTML nh»m cho phÐp mäi browser trªn m¹ng cã
thÓ "nh×n" nã. Thªm n÷a HTML chØ ®¸p øng c¸c ®å häa díi d¹ng ¶nh GIF vµ
kh«ng duy tr× trang tµi liÖu nguån nguyªn thuû díi d¹ng Word document. Ta
còng cã thÓ sö dông PostScrip ®Ó n¹p vµ in c¸c tµi liÖu, tuy nhiªn kh«ng cho
phÐp so¹n th¶o l¹i tµi liÖu vµ còng kh«ng ph¶i mäi file PostScrip ®Òu cã thÓ in ®-
îc víi c¸c m¸y in. Bªn c¹nh ®ã, Adobe cã tiÕn thªm mét bíc trong Portable
11
Document Format (PDF) cho phÐp xem vµ in tÊt c¶ c¸c tµi liÖu. Tuy vËy cßn tån
t¹i vÊn ®Ò lµ ngêi dïng kh«ng thÓ so¹n th¶o l¹i c¸c tµi liÖu nµy.
M« h×nh Java
M« h×nh Java kh¾c phôc mét sè thiÕu sãt cña m« h×nh HTML nhng nã kh«ng
dµnh lÊy ®îc sù chÊp nhËn réng r·i. Trong Java, c¸c m· byte t¹o ra sau khi biªn
dÞch ®îc lu trong c¸c file .class. C¸c file nµy ®îc n¹p xuèng c¸c class loader cña
m¸y client. Sau khi kiÓm tra, m¸y ¶o Java sÏ phiªn dÞch c¸c m· byte.
Nguyªn t¾c ho¹t ®éng cña tr×nh biªn dÞch Java cã d¹ng nh trªn h×nh 1.4.
H×nh 1.4
Cïng víi Java, mét thuËt to¸n gi¶i m· c¸c d¹ng d÷ liÖu míi cã thÓ ®îc n¹p
tuú theo c©u lÖnh. Tøc lµ Web lµ mét híng ®èi tîng trong hoµn c¶nh, d÷ liÖu ®îc
nhËp cïng víi ch¬ng tr×nh ®Ó thùc hiÖn mét t¸c vô. M« h×nh Java lµ mét c¶i tiÕn
lín ®¸p øng nhu cÇu hiÖn t¹i, nã yªu cÇu chóng ta cã mét gi¶i ph¸p cho viÖc gi¶i
m· trªn phÇn cøng cña ta.
Nguyªn t¾c cña m« h×nh Java trªn m¹ng nh trªn h×nh 1.5
Runtime System/ Hardware
Java Source
Interpreter Just-In-Time
Compiler
Compiler Byte Code Verifier
Byte Codes Network ClassLoader
H×nh 1.5
1.4 M«i trêng ph¸t triÓn Java
Cã nhiÒu sù chän lùa cã gi¸ trÞ ®Ó ph¸t triÓn Java, bao gåm c¸c s¶n phÈm cña
Sun (Java Workshop, Java Developers Kit (JDK)), Metrowerks' CodeWarrior, c¸c s¶n
phÈm Symantec(Visual CafÐ, Visual CafÐ Pro, CafÐ). Microsoft J++, Asymetrix
SuperCede vµ c¸c chän lùa kh¸c. §Ó cã thªm chi tiÕt ta h·y xem trªn ®Þa chØ:
htt://www.javasoft.com/products/JDK/; ftp://ftp.metrowerks.com/; http://www.symetec
.com, http:/roaster.com/roaster/ vµ http://www.microsoft.com/java/.
J++ ch¹y trªn Window 95/NT. Workshop cã chØ ch¹y trªn Solaris vµ
Windows 95/NT. C¸c s¶n phÈm cña Symantec vµ CodeWarrior ch¹y trªn MacOS
vµ Window 95/NT.
Sau ®©y chóng ta h·y xem xÐt mét øng dông ®¬n gi¶n nhÊt cña java trªn m«i
trêng JDK. Chóng ta t×m hiÓu chi tiÕt c¸ch t¹o , biªn dÞch vµ ch¹y c¸c ch¬ng
12
Java Source
(*.java)
Java
Compiler
JavaClasses
(*.class)