Siêu thị PDFTải ngay đi em, trời tối mất

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
PREMIUM
Số trang
120
Kích thước
898.2 KB
Định dạng
PDF
Lượt xem
1192

Đồ á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µ super￾scalar 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)

Tải ngay đi em, còn do dự, trời tối mất!