More Related Content Similar to Core java 2 (20) Core java 21. ChÆ°ÆĄng 2: Nh p mĂŽn Java 23
ChÆ°ÆĄng 2
NH P MĂN JAVA
M c tiĂȘu
N m Æ° c cĂĄc c trÆ°ng c a Java
CĂĄc lo i chÆ°ÆĄng trĂŹnh vi t b ng Java
à nh nghĩa v måy o Java (Java Virtual Machine)
CĂĄc n i dung c a JDK (Java Development Kit)
SÆĄ lÆ° c cĂĄc c trÆ°ng m i c a Java 2
2.1 Gi i thi u Java
Java lĂ m t ngĂŽn ng l p trĂŹnh Æ° c Sun Microsystems gi i thi u vĂ o thĂĄng 6
nÄm 1995. T Ăł, nĂł ĂŁ tr thĂ nh m t cĂŽng c l p trĂŹnh c a cĂĄc l p trĂŹnh
viĂȘn chuyĂȘn nghi p. Java Æ° c xĂąy d ng trĂȘn n n t ng c a C vĂ C++. Do
v y nĂł s d ng cĂĄc cĂș phĂĄp c a C vĂ cĂĄc c trÆ°ng hÆ° ng i tÆ° ng c a
C++.
VĂ o nÄm 1991, m t nhĂłm cĂĄc k sÆ° c a Sun Microsystems cĂł Ăœ nh thi t k
m t ngĂŽn ng l p trĂŹnh i u khi n cĂĄc thi t b i n t nhÆ° Tivi, mĂĄy gi t,
lĂČ nÆ° ng, ⊠M c dĂč C vĂ C++ cĂł kh nÄng lĂ m vi c nĂ y nhÆ°ng trĂŹnh biĂȘn
d ch l i ph thu c vĂ o t ng lo i CPU.
TrĂŹnh biĂȘn d ch thÆ° ng ph i t n nhi u th i gian xĂąy d ng nĂȘn r t t. VĂŹ
v y m i lo i CPU cĂł m t trĂŹnh biĂȘn d ch riĂȘng lĂ r t t n kĂ©m. Do Ăł nhu
c u th c t ĂČi h i m t ngĂŽn ng ch y nhanh, g n, hi u qu vĂ c l p thi t
b t c lĂ cĂł th ch y trĂȘn nhi u lo i CPU khĂĄc nhau, dÆ° i cĂĄc mĂŽi trÆ° ng khĂĄc
nhau. âOakâ ĂŁ ra i vĂ vĂ o nÄm 1995 Æ° c i tĂȘn thĂ nh Java. M c dĂč m c
tiĂȘu ban u khĂŽng ph i cho Internet nhÆ°ng do c trÆ°ng khĂŽng ph thu c
thi t b nĂȘn Java ĂŁ tr thĂ nh ngĂŽn ng l p trĂŹnh cho Internet.
2.1.1 Java lĂ gĂŹ
Java lĂ ngĂŽn ng l p trĂŹnh hÆ° ng i tÆ° ng, do v y khĂŽng th dĂčng Java
vi t m t chÆ°ÆĄng trĂŹnh hÆ° ng ch c nÄng. Java cĂł th gi i quy t h u h t cĂĄc
cĂŽng vi c mĂ cĂĄc ngĂŽn ng khĂĄc cĂł th lĂ m Æ° c.
Java lĂ ngĂŽn ng v a biĂȘn d ch v a thĂŽng d ch. u tiĂȘn mĂŁ ngu n Æ° c biĂȘn
d ch b ng cĂŽng c JAVAC chuy n thĂ nh d ng ByteCode. Sau Ăł Æ° c th c
thi trĂȘn t ng lo i mĂĄy c th nh chÆ°ÆĄng trĂŹnh thĂŽng d ch. M c tiĂȘu c a cĂĄc
nhĂ thi t k Java lĂ cho phĂ©p ngÆ° i l p trĂŹnh vi t chÆ°ÆĄng trĂŹnh m t l n nhÆ°ng
cĂł th ch y trĂȘn b t c ph n c ng c th .
NgĂ y nay, Java Æ° c s d ng r ng rĂŁi vi t chÆ°ÆĄng trĂŹnh ch y trĂȘn
Internet. NĂł lĂ ngĂŽn ng l p trĂŹnh hÆ° ng i tÆ° ng c l p thi t b , khĂŽng
ph thu c vĂ o h i u hĂ nh. NĂł khĂŽng ch dĂčng vi t cĂĄc ng d ng ch y
ÆĄn l hay trong m ng mĂ cĂČn xĂąy d ng cĂĄc trĂŹnh i u khi n thi t b cho
i n tho i di ng, PDA, âŠ
2.2 CĂĄc c trÆ°ng c a Java
2. 24 Core Java
ÆĄn gi n
HÆ° ng i tÆ° ng
c l p ph n c ng vĂ h i u hĂ nh
M nh
B o m t
PhĂąn tĂĄn
a lu ng
ng
2.2.1 ÆĄn gi n
Nh ng ngÆ° i thi t k mong mu n phĂĄt tri n m t ngĂŽn ng d h c vĂ quen
thu c v i a s ngÆ° i l p trĂŹnh. Do v y Java lo i b cĂĄc c trÆ°ng ph c t p
c a C vĂ C++ nhÆ° thao tĂĄc con tr , thao tĂĄc nh nghÄ©a ch ng toĂĄn t
(operator overloading),⊠Java khĂŽng s d ng l nh âgotoâ cĆ©ng nhÆ° file
header (.h). C u trĂșc âstructâ vĂ âunionâ cĆ©ng Æ° c lo i b kh i Java.
2.2.2 HÆ° ng i tÆ° ng
Java Æ° c thi t k xoay quanh mĂŽ hĂŹnh hÆ° ng i tÆ° ng. VĂŹ v y trong Java,
tiĂȘu i m lĂ d li u vĂ cĂĄc phÆ°ÆĄng phĂĄp thao tĂĄc lĂȘn d li u Ăł. D li u vĂ
cĂĄc phÆ°ÆĄng phĂĄp mĂŽ t tr ng thĂĄi vĂ cĂĄch ng x c a m t i tÆ° ng trong
Java.
2.2.3 c l p ph n c ng vĂ h i u hĂ nh
Ăąy lĂ kh nÄng m t chÆ°ÆĄng trĂŹnh Æ° c vi t t i m t mĂĄy nhÆ°ng cĂł th ch y
Æ° c b t kỳ Ăąu. ChĂșng Æ° c th hi n m c mĂŁ ngu n vĂ m c nh phĂąn.
m c mĂŁ ngu n, ngÆ° i l p trĂŹnh c n mĂŽ t ki u cho m i bi n. Ki u d li u
trong Java nh t quĂĄn cho t t c cĂĄc h i u hĂ nh vĂ ph n c ng khĂĄc nhau.
Java cĂł riĂȘng m t thÆ° vi n cĂĄc l p cÆĄ s . VĂŹ v y chÆ°ÆĄng trĂŹnh Java Æ° c vi t
trĂȘn m t mĂĄy cĂł th d ch vĂ ch y trÆĄn tru trĂȘn cĂĄc lo i mĂĄy khĂĄc mĂ khĂŽng
c n vi t l i.
TĂnh c l p m c nh phĂąn, m t chÆ°ÆĄng trĂŹnh ĂŁ biĂȘn d ch cĂł th ch y trĂȘn
nhi u n n (ph n c ng, h i u hĂ nh) khĂĄc mĂ khĂŽng c n d ch l i mĂŁ ngu n.
Tuy v y c n cĂł ph n m m mĂĄy o Java (s c p n ph n sau) ho t
ng nhÆ° m t trĂŹnh thĂŽng d ch t i mĂĄy th c thi.
H ĂŹnh 2.1 CĂĄch biĂȘn d ch truy n th ng
Macintosh
compiler
compiler
compiler
IBM
Sparc
3. ChÆ°ÆĄng 2: Nh p mĂŽn Java 25
i v i cĂĄc chÆ°ÆĄng trĂŹnh vi t b ng C, C++ ho c m t ngĂŽn ng nĂ o khĂĄc,
trĂŹnh biĂȘn d ch s chuy n t p l nh thĂ nh mĂŁ mĂĄy (machine code),hay l nh
c a b vi x lĂœ. Nh ng l nh nĂ y ph thu c vĂ o CPU hi n t i trĂȘn mĂĄy b n.
NĂȘn khi mu n ch y trĂȘn lo i CPU khĂĄc, chĂșng ta ph i biĂȘn d ch l i chÆ°ÆĄng
trĂŹnh. HĂŹnh 2.1 th hi n quĂĄ trĂŹnh th c thi chÆ°ÆĄng trĂŹnh vi t b ng C++
trĂȘn cĂĄc lo i mĂĄy khĂĄc nhau.
HĂŹnh 2.2 QuĂĄ trĂŹnh th c thi chÆ°ÆĄng trĂŹnh vi t b ng Java trĂȘn cĂĄc lo i mĂĄy
khĂĄc nhau.
HĂŹnh 2.2 D ch chÆ°ÆĄng trĂŹnh Java
MĂŽi trÆ° ng phĂĄt tri n c a Java Æ° c chia lĂ m hai ph n: TrĂŹnh biĂȘn d ch vĂ
trĂŹnh thĂŽng d ch. KhĂŽng nhÆ° C hay C++, trĂŹnh biĂȘn d ch c a Java chuy n mĂŁ
ngu n thĂ nh d ng bytecode c l p v i ph n c ng mĂ cĂł th ch y trĂȘn b t
kỳ CPU nà o.
NhÆ°ng th c thi chÆ°ÆĄng trĂŹnh dÆ° i d ng bytecode, t i m i mĂĄy c n ph i cĂł
trĂŹnh thĂŽng d ch c a Java hay cĂČn g i lĂ mĂĄy o Java. MĂĄy o Java chuy n
bytecode thĂ nh mĂŁ l nh mĂ CPU th c thi Æ° c.
2.2.4 M nh m
Java lĂ ngĂŽn ng yĂȘu c u ch t ch v ki u d li u. Ph i khai bĂĄo ki u d li u
tÆ° ng minh khi vi t chÆ°ÆĄng trĂŹnh. Java ki m tra lĂșc biĂȘn d ch vĂ c trong th i
gian thĂŽng d ch vĂŹ v y Java lo i b m t m t s lo i l i l p trĂŹnh nh t nh.
Java khÎng s d ng con tr và cåc phép toån con tr . Java ki m tra t t c
cĂĄc truy nh p n m ng, chu i khi th c thi m b o r ng cĂĄc truy nh p
Ăł khĂŽng ra ngoĂ i gi i h n kĂch thÆ° c. Java ki m tra s chuy n i ki u d
li u t d ng nĂ y sang d ng khĂĄc lĂșc th c thi.
Trong cĂĄc mĂŽi trÆ° ng l p trĂŹnh truy n th ng, l p trĂŹnh viĂȘn ph i t mĂŹnh c p
phĂĄt b nh . TrÆ° c khi chÆ°ÆĄng trĂŹnh k t thĂșc thĂŹ ph i t gi i phĂłng b nh ĂŁ
c p. V n n y sinh khi l p trĂŹnh viĂȘn quĂȘn gi i phĂłng b nh ĂŁ xin c p
trÆ° c Ăł. Trong chÆ°ÆĄng trĂŹnh Java, l p trĂŹnh viĂȘn khĂŽng ph i b n tĂąm n
vi c c p phĂĄt b nh . QĂșa trĂŹnh c p phĂĄt, gi i phĂłng Æ° c th c hi n t
ng, nh d ch v thu nh t nh ng i tÆ° ng khĂŽng cĂČn s d ng n a
(garbage collection).
CÆĄ ch b y l i c a Java giĂșp ÆĄn gi n hĂła qĂșa trĂŹnh x lĂœ l i vĂ h i ph c sau
Macintosh
TrĂŹnh biĂȘn d ch
Bytecode
c l p n n
(Platform
independent)
TrĂŹnh
thĂŽng
d ch
Java
(Java
Interpreter)
IBM
Sparc
4. 26 Core Java
l i.
2.2.5 B o m t
Viruses lĂ nguyĂȘn nhĂąn gĂąy ra s lo l ng trong vi c s d ng mĂĄy tĂnh. TrÆ° c
khi cĂł Java, cĂĄc l p trĂŹnh viĂȘn ph i quĂ©t virus cĂĄc t p trÆ° c khi t i v hay
th c hi n chĂșng. ThĂŽng thÆ° ng vi c nĂ y cĆ©ng khĂŽng lo i tr hoĂ n toĂ n virus.
NgoĂ i ra chÆ°ÆĄng trĂŹnh khi th c thi cĂł kh nÄng tĂŹm ki m vĂ c cĂĄc thĂŽng tin
nh y c m trĂȘn mĂĄy c a ngÆ° i s d ng mĂ ngÆ° i s d ng khĂŽng h hay bi t.
Java cung c p m t mĂŽi trÆ° ng qu n lĂœ th c thi chÆ°ÆĄng trĂŹnh. NĂł cho r ng
khĂŽng cĂł m t o n mĂŁ nĂ o lĂ an toĂ n c . VĂ vĂŹ v y Java khĂŽng ch lĂ ngĂŽn
ng l p trĂŹnh thu n tuĂœ mĂ cĂČn cung c p nhi u m c ki m soĂĄt tĂnh an
toĂ n khi th c thi chÆ°ÆĄng trĂŹnh.
m c u tiĂȘn, d li u vĂ cĂĄc phÆ°ÆĄng th c Æ° c Ăłng gĂłi bĂȘn trong l p.
ChĂșng ch Æ° c truy xu t thĂŽng qua cĂĄc giao di n mĂ l p cung c p. Java
khÎng h tr con tr vÏ v y khÎng cho phép truy xu t b nh tr c ti p. Nó
cĆ©ng ngÄn ch n khĂŽng cho truy xu t thĂŽng tin bĂȘn ngoĂ i kĂch thÆ° c c a
m ng b ng k thu t trà n và cƩng cung c p k thu t d n råc trong b nh .
CĂĄc c trÆ°ng nĂ y t o cho Java an toĂ n t i a vĂ cĂł kh nÄng cÆĄ ng cao.
Trong l p th hai, trĂŹnh biĂȘn d ch ki m soĂĄt m b o mĂŁ lĂ an toĂ n, vĂ
tuĂąn theo cĂĄc nguyĂȘn t c c a Java.
L p th ba Æ° c m b o b i trĂŹnh thĂŽng d ch. ChĂșng ki m tra xem bytecode
cĂł m b o cĂĄc qui t c an toĂ n trÆ° c khi th c thi.
L p th tÆ° ki m soĂĄt vi c n p cĂĄc l p vĂ o b nh giĂĄm sĂĄt vi c vi ph m
gi i h n truy xu t trÆ° c khi n p vĂ o h th ng.
2.2.6 PhĂąn tĂĄn
Java cĂł th dĂčng xĂąy d ng cĂĄc ng d ng cĂł th lĂ m vi c trĂȘn nhi u ph n
c ng, h i u hĂ nh vĂ giao di n h a. Java Æ° c thi t k h tr cho cĂĄc
ng d ng ch y trĂȘn m ng. VĂŹ v y chĂșng Æ° c s d ng r ng rĂŁi nhÆ° lĂ cĂŽng
c phĂĄt tri n trĂȘn Internet, nÆĄi s d ng nhi u n n t ng khĂĄc nhau.
2.2.7 a lu ng
ChÆ°ÆĄng trĂŹnh Java a lu ng(Multithreading) th c thi cĂĄc cĂŽng vi c ng
th i. ChĂșng cĆ©ng cung c p gi i phĂĄp ng b gi a cĂĄc lu ng. c tĂnh h tr
a nĂ y nĂ y cho phĂ©p xĂąy d ng cĂĄc ng d ng trĂȘn m ng ch y hi u qu .
2.2.8 ng
Java Æ° c thi t k nhÆ° m t ngĂŽn ng ng ĂĄp ng cho nh ng mĂŽi
trÆ° ng m . CĂĄc chÆ°ÆĄng trĂŹnh Java ch a r t nhi u thĂŽng tin th c thi nh m
ki m soĂĄt vĂ truy nh p i tÆ° ng lĂșc ch . i u nĂ y cho phĂ©p kh nÄng liĂȘn
k t ng mĂŁ.
5. ChÆ°ÆĄng 2: Nh p mĂŽn Java 27
2.3 CĂĄc ki u chÆ°ÆĄng trĂŹnh Java
ChĂșng ta cĂł th xĂąy d ng cĂĄc lo i chÆ°ÆĄng trĂŹnh Java nhÆ° sau:
2.3.1 Applets
Applet lĂ chÆ°ÆĄng trĂŹnh Æ° c t o ra s d ng trĂȘn Internet thĂŽng qua cĂĄc
trĂŹnh duy t h tr Java nhÆ° IE hay Netscape. B n cĂł th dĂčng Java xĂąy
d ng Applet. Applet Æ° c nhĂșng bĂȘn trong trang Web. Khi trang Web hi n th
trong trĂŹnh duy t, Applet s Æ° c t i v vĂ th c thi t i trĂŹnh duy t.
2.3.2 ng d ng th c thi qua dĂČng l nh
CĂĄc chÆ°ÆĄng trĂŹnh nĂ y ch y t d u nh c l nh vĂ khĂŽng s d ng giao di n
h a. CĂĄc thĂŽng tin nh p xu t Æ° c th hi n t i d u nh c l nh.
2.3.3 ng d ng h a
Ăąy lĂ cĂĄc chÆ°ÆĄng trĂŹnh Java ch y c l p cho phĂ©p ngÆ° i dĂčng tÆ°ÆĄng tĂĄc
qua giao di n h a.
2.3.4 Servlet
Java thĂch h p phĂĄt tri n ng d ng nhi u l p. Applet lĂ chÆ°ÆĄng trĂŹnh
h a ch y trĂȘn trĂŹnh duy t t i mĂĄy tr m. cĂĄc ng d ng Web, mĂĄy tr m g i
yĂȘu c u t i mĂĄy ch . MĂĄy ch x lĂœ vĂ g i k t qu tr l i mĂĄy tr m. CĂĄc Java
API ch y trĂȘn mĂĄy ch ch u trĂĄch nhi m x lĂœ t i mĂĄy ch vĂ tr l i cĂĄc yĂȘu
c u c a mĂĄy tr m. CĂĄc Java API ch y trĂȘn mĂĄy ch nĂ y m r ng kh nÄng
c a cĂĄc ng d ng Java API chu n. CĂĄc ng d ng trĂȘn mĂĄy ch nĂ y Æ° c g i
lĂ cĂĄc Servlet. ho c Applet t i mĂĄy ch . X lĂœ Form c a HTML lĂ cĂĄch s
d ng ÆĄn gi n nh t c a Servlet. ChĂșng cĂČn cĂł th Æ° c dĂčng x lĂœ d
li u, th c thi cĂĄc giao d ch vĂ thÆ° ng Æ° c th c thi thĂŽng qua mĂĄy ch Web.
2.3.5 ng d ng cÆĄ s d li u
CĂĄc ng d ng nĂ y s d ng JDBC API k t n i t i cÆĄ s d li u. ChĂșng cĂł
th lĂ Applet hay ng d ng, nhÆ°ng Applet b gi i h n b i tĂnh b o m t.
2.4 MĂĄy o Java (JVM-Java Virtual Machine)
MĂĄy o Java lĂ trĂĄi tim c a ngĂŽn ng Java. MĂŽi trÆ° ng Java bao g m nÄm
ph n t sau:
NgĂŽn ng
à nh nghĩa Bytecode
CĂĄc thÆ° vi n l p Java/Sun
MĂĄy o Java (JVM)
C u trĂșc c a file .class
CĂĄc ph n t t o cho Java thĂ nh cĂŽng lĂ
à nh nghĩa Bytecode
C u trĂșc c a file .class
MĂĄy o Java (JVM)
Kh nÄng cÆĄ ng c a file .class cho phĂ©p cĂĄc chÆ°ÆĄng trĂŹnh Java vi t m t l n
nhÆ°ng ch y b t kỳ Ăąu. Kh nÄng nĂ y cĂł Æ° c nh s giĂșp c a mĂĄy o
Java.
6. 28 Core Java
2.4.1 MĂĄy o Java lĂ gĂŹ ?
MĂĄy o lĂ m t ph n m m d a trĂȘn cÆĄ s mĂĄy tĂnh o. NĂł cĂł t p h p cĂĄc l nh
logic xĂĄc nh cĂĄc ho t ng c a mĂĄy tĂnh. NgÆ° i ta cĂł th xem nĂł nhÆ°
m t h i u hĂ nh thu nh . NĂł thi t l p cĂĄc l p tr u tÆ° ng cho: Ph n c ng
bĂȘn dÆ° i, h i u hĂ nh, mĂŁ ĂŁ biĂȘn d ch.
TrĂŹnh biĂȘn d ch chuy n mĂŁ ngu n thĂ nh t p cĂĄc l nh c a mĂĄy o mĂ khĂŽng
ph thu c vĂ o ph n c ng c th . TrĂŹnh thĂŽng d ch trĂȘn m i mĂĄy s chuy n
t p l nh nĂ y thĂ nh chÆ°ÆĄng trĂŹnh th c thi. MĂĄy o t o ra m t mĂŽi trÆ° ng bĂȘn
trong th c thi cĂĄc l nh b ng cĂĄch:
N p cĂĄc file .class
Qu n lĂœ b nh
D n ârĂĄcâ
Vi c khĂŽng nh t quĂĄn c a ph n c ng lĂ m cho mĂĄy o ph i s d ng ngÄn x p
lÆ°u tr cĂĄc thĂŽng tin sau:
CĂĄc âFrameâ ch a cĂĄc tr ng thĂĄi c a cĂĄc phÆ°ÆĄng th c.
CĂĄc toĂĄn h ng c a mĂŁ bytecode.
CĂĄc tham s truy n cho phÆ°ÆĄng th c.
CĂĄc bi n c c b .
Khi JVM th c thi mĂŁ, m t thanh ghi c c b cĂł tĂȘn âProgram Counterâ Æ° c
s d ng. Thanh ghi nĂ y tr t i l nh ang th c hi n. Khi c n thi t, cĂł th thay
i n i dung thanh ghi i hÆ° ng th c thi c a chÆ°ÆĄng trĂŹnh. Trong trÆ° ng
h p thĂŽng thÆ° ng thĂŹ t ng l nh m t n i ti p nhau s Æ° c th c thi.
M t khĂĄi ni m thĂŽng d ng khĂĄc trong Java lĂ trĂŹnh biĂȘn d ch âJust In Time-
JITâ. CĂĄc trĂŹnh duy t thĂŽng d ng nhÆ° Netscape hay IE u cĂł JIT bĂȘn trong
tÄng t c th c thi chÆ°ÆĄng trĂŹnh Java. M c Ăch chĂnh c a JIT lĂ chuy n
t p l nh bytecode thĂ nh mĂŁ mĂĄy c th cho t ng lo i CPU. CĂĄc l nh nĂ y s
Æ° c lÆ°u tr vĂ s d ng m i khi g i n.
2.4.2 Qu n lĂœ b nh vĂ d n rĂĄc
Trong C, C++ hay Pascal ngÆ° i l p trĂŹnh s d ng phÆ°ÆĄng phĂĄp tr c ti p
c p phĂĄt vĂ thu h i b nh vĂčng âHeapâ. Heap lĂ vĂčng b nh l n Æ° c
phĂąn chia cho t t c cĂĄc lu ng.
qu n lĂœ Heap, b nh Æ° c theo dĂ”i qua cĂĄc danh sĂĄch sau:
Danh sĂĄch cĂĄc vĂčng nh chÆ°a s d ng.
Danh sĂĄch cĂĄc vĂčng ĂŁ c p.
Khi cĂł m t yĂȘu c u v c p phĂĄt b nh , h th ng xem xĂ©t trong danh sĂĄch
chÆ°a c p phĂĄt l y ra kh i b nh u tiĂȘn cĂł kĂch c sĂĄt nh t v i lÆ° ng b
nh c n thi t . K thu t c p phĂĄt nĂ y gi m t i thi u vi c phĂąn m nh c a
heap.
âCoalescingâ lĂ k thu t khĂĄc cĆ©ng gi m thi u vi c phĂąn m nh c a heap
b ng cĂĄch gom l i cĂĄc vĂčng nh chÆ°a dĂčng li n nhau thĂ nh m t kh i l n
hÆĄn. CĂČn k thu t s p x p l i cĂĄc ph n ĂŁ dĂčng t o vĂčng nh chÆ°a s
d ng l n hÆĄn g i lĂ âCompactionâ.
Java s d ng hai heap riĂȘng bi t cho c p phĂĄt vĂčng nh tÄ©nh vĂ vĂčng nh
ng. M t heap (heap tĩnh) ch a cåc nh nghĩa v l p, cåc h ng và danh
sĂĄch cĂĄc phÆ°ÆĄng th c. Heap cĂČn l i (heap ng) Æ° c chia lĂ m hai ph n Æ° c
c p phĂĄt theo hai chi u ngÆ° c nhau. M t bĂȘn ch a i tÆ° ng cĂČn m t bĂȘn
7. ChÆ°ÆĄng 2: Nh p mĂŽn Java 29
ch a con tr tr n i tÆ° ng Ăł.
âHandleâ lĂ c u trĂșc bao g m hai con tr . M t tr n b ng phÆ°ÆĄng th c c a
i tÆ° ng, con tr th hai tr n chĂnh i tÆ° ng Ăł. ChĂș Ăœ r ng khi
âcompactionâ c n c p nh t l i giĂĄ tr con tr c a c u trĂșc âhandleâ.
Thu t toĂĄn d n rĂĄc cĂł th ĂĄp d ng cho cĂĄc i tÆ° ng t trong heap ng.
Khi cĂł yĂȘu c u v b nh , trĂŹnh qu n lĂœ heap trÆ° c tiĂȘn ki m tra danh sĂĄch
b nh chÆ°a c p phĂĄt. N u khĂŽng tĂŹm th y kh i b nh nĂ o phĂč h p (v kĂch
c ) thĂŹ trĂŹnh d n rĂĄc s Æ° c kĂch ho t khi h th ng r i. NhÆ°ng khi ĂČi h i b
nh c p bĂĄch thĂŹ trĂŹnh d n rĂĄc s Æ° c kĂch ho t ngay.
TrĂŹnh d n rĂĄc g i phÆ°ÆĄng th c finalize c a i tÆ° ng trÆ° c khi d n d p i
tÆ° ng. HĂ m nĂ y s d n d p cĂĄc tĂ i nguyĂȘn bĂȘn ngoĂ i nhÆ° cĂĄc file ang m .
CĂŽng vi c nĂ y khĂŽng Æ° c trĂŹnh d n rĂĄc th c thi.
2.4.3 QuĂĄ trĂŹnh ki m tra file .class
Vi c ki m tra Æ° c ĂĄp d ng cho t t c cĂĄc file .class s p Æ° c n p lĂȘn b nh
m b o tĂnh an toĂ n. TrĂŹnh âClass Loaderâ s ki m tra t t c cĂĄc file
.class khĂŽng thu c h i u hĂ nh v i m c Ăch giĂĄm sĂĄt s tuĂąn th cĂĄc nghi
th c phĂĄt hi n cĂĄc file .class cĂł nguy cÆĄ gĂąy hÆ° h ng n b nh , h
th ng file c c b , m ng ho c h i u hà nh. Quå trÏnh ki m tra s xem xét
t ng th tĂnh nguyĂȘn v n c a m t l p.
File .class bao g m ba ph n logic lĂ :
Bytecode
ThĂŽng tin v Class nhÆ° phÆ°ÆĄng th c, giao di n vĂ cĂĄc giĂĄ tr h ng s
Æ° c t p h p trong quĂĄ trĂŹnh biĂȘn d ch.
CĂĄc thu c tĂnh v l p.
CĂĄc thĂŽng tin c a file .class Æ° c xem xĂ©t riĂȘng r trong cĂĄc b ng sau:
B ng Field ch a cĂĄc thu c tĂnh
B ng Method ch a cĂĄc hĂ m c a class
B ng Interface vĂ vĂ cĂĄc h ng s .
QuĂĄ trĂŹnh ki m tra file .class Æ° c th c hi n b n m c:
M c u tiĂȘn th c hi n vi c ki m tra cĂș phĂĄp m b o tĂnh c u trĂșc
vĂ tĂnh toĂ n v n cĂș phĂĄp c a file .class Æ° c n p.
M c th hai s xem xét file .class m b o cåc file nà y khÎng vi
ph m cĂĄc nguyĂȘn t c v s nh t quĂĄn ng nghÄ©a.
M c th ba s ki m tra bytecode. Trong bÆ° c nĂ y s ki m tra s
thĂŽng s truy n vĂ o phÆ°ÆĄng th c, kh nÄng truy xu t sai ch s c a
m ng, chu i, bi u th c.
M c th tÆ° s ki m tra trong th i gian th c thi giĂĄm sĂĄt cĂĄc vi c
cĂČn l i mĂ ba bÆ° c trĂȘn chÆ°a lĂ m. VĂ d nhÆ° liĂȘn k t t i cĂĄc l p khĂĄc
trong khi th c thi, hay ki m tra quy n truy xu t. N u m i i u th a
mĂŁn, l p s Æ° c kh i t o.
2.5 B cĂŽng c phĂĄt tri n JDK (Java Development Kit)
Sun Microsystem Æ°a ra ngĂŽn ng l p trĂŹnh Java qua s n ph m cĂł tĂȘn lĂ Java
Development Kit (JDK). Ba phiĂȘn b n chĂnh lĂ :
Java 1.0 - S d ng l n u vĂ o nÄm 1995
Java 1.1 â ĂÆ°a ra nÄm 1997 v I nhi u Æ°u i m hÆĄn phiĂȘn b n trÆ° c.
Java 2 â PhiĂȘn b n m i nh t
8. 30 Core Java
JDK bao g m Java Plug-In, chĂșng cho phĂ©p ch y tr c ti p Java Applet hay
JavaBean b ng cĂĄch dĂčng JRE thay cho s d ng mĂŽi trÆ° ng th c thi m c
nh c a trĂŹnh duy t.
JDK ch a cĂĄc cĂŽng c sau:
2.5.1 TrĂŹnh biĂȘn d ch, 'javac'
CĂș phĂĄp:
javac [options] sourcecodename.java
2.5.2 TrĂŹnh thĂŽng d ch, 'java'
CĂș phĂĄp:
java [options] classname
2.5.3 TrĂŹnh d ch ngÆ° c, 'javap'
javap d ch ngÆ° c bytecode vĂ in ra thĂŽng tin v cĂĄc thu c tĂnh (cĂĄc trÆ° ng),
cĂĄc phÆ°ÆĄng th c c a m t l p.
CĂș phĂĄp:
javap [options] classname
2.5.4 CĂŽng c sinh tĂ i li u, 'javadoc'
Ti n Ăch nĂ y cho phĂ©p ta t o ra t p HTML d a trĂȘn cĂĄc l i gi i thĂch trong mĂŁ
chÆ°ÆĄng trĂŹnh (ph n n m trong c p d u /*.... */).
CĂș phĂĄp:
javadoc [options] sourcecodename.java
2.5.5 ChÆ°ÆĄng trĂŹnh tĂŹm l i - Debug, 'jdbâ
CĂș phĂĄp:
jdb [options] sourcecodename.java
hay
jdb -host -password [options] sourcecodename.java
2.5.6 ChÆ°ÆĄng trĂŹnh xem Applet , 'appletviewerâ
CĂș phĂĄp:
appletviewer [options] url
2.6 Java Core API
NhĂąn Java API Æ° c thay th b i phiĂȘn b n JFC 1.1.
M t s package thĂŽng d ng Æ° c:
2.6.1 java.lang
Ch a cĂĄc l p quan tr ng nh t c a ngĂŽn ng Java. ChĂșng bao g m cĂĄc ki u
d li u cÆĄ b n nhÆ° kĂœ t , s nguyĂȘn,⊠ChĂșng cĆ©ng ch a cĂĄc l p lĂ m nhi m
v x lĂœ l i vĂ cĂĄc l p vĂ o ra chu n. M t vĂ i l p quan tr ng khĂĄc nhÆ° String
hay StringBuffer.
2.6.2 java.applet
Ăąy lĂ package nh nh t ch a m t mĂŹnh l p Applet. CĂĄc Applet nhĂșng trong
trang Web hay ch y trong appletviewer u th a k t l p nĂ y.
9. ChÆ°ÆĄng 2: Nh p mĂŽn Java 31
2.6.3 java.awt
Package nĂ y Æ°ÆĄ c g i lĂ Abstract Window Toolkit (AWT). ChĂșng ch a cĂĄc
l p dĂčng t o giao di n h a. M t s l p bĂȘn trong lĂ : Button,
GridBagLayout, Graphics.
2.6.4 java.io
Cung c p thÆ° vi n vĂ o ra chu . ChĂșng cho phĂ©p t o vĂ qu n lĂœ dĂČng d li u
theo nhi u cĂĄch.
2.6.5 java.util
Package nĂ y cung c p m t s cĂŽng c h u Ăch. M t vĂ i l p c a package nĂ y
lĂ : Date, Hashtable, Stack, Vector vĂ StringTokenizer.
2.6.6 java.net
Cung c p kh nÄng giao ti p v i mĂĄy t xa. Cho phĂ©p t o vĂ k t n i t i
Socket ho c URL.
2.6.7 java.awt.event
Ch a cĂĄc l p, giao di n dĂčng x lĂœ cĂĄc s ki n trong chÆ°ÆĄng trĂŹnh nhÆ°
chu t, bĂ n phĂm.
2.6.8 java.rmi
CĂŽng c g i hĂ m t xa. ChĂșng cho phĂ©p t o i tÆ° ng trĂȘn mĂĄy khĂĄc vĂ
s d ng cĂĄc i tÆ° ng Ăł trĂȘn mĂĄy c c b .
2.6.9 java.security
Cung c p cĂĄc cĂŽng c c n thi t mĂŁ hĂła vĂ m b o tĂnh an toĂ n c a d
li u truy n gi a mĂĄy tr m vĂ mĂĄy ch .
2.6.10 java.sql
Package nĂ y ch a Java DataBase Connectivity (JDBC), dĂčng truy xu t cÆĄ
s d li u quan h nhÆ° Oracle, SQL Server,....
2.7 CĂĄc c trÆ°ng m i c a Java 2
CĂĄc phiĂȘn b n trÆ° c c a Java ch thĂch h p vi t cĂĄc ng d ng nh trĂȘn
Web hÆĄn lĂ xĂąy d ng cĂĄc ng d ng ch y trĂȘn m ng m nhi m toĂ n b
cĂĄc cĂŽng vi c c a c a m t cĂŽng ty ho c h th ng phĂąn tĂĄn. Java 2 ĂĄp ng
yĂȘu c u nĂ y. M t vĂ i c trÆ°ng c a chĂșng lĂ :
- Swing
Ăąy lĂ m t t p cĂĄc l p vĂ giao di n m i dĂčng t o giao di n ng d ng
h a "Look and Feel".
- KĂ©o vĂ th
Ăąy lĂ kh nÄng di chuy n thĂŽng tin gi a cĂĄc ng d ng hay cĂĄc ph n khĂĄc
nhau c a chÆ°ÆĄng trĂŹnh.
- Java 2D API
Ch a t p h p cĂĄc l p h tr cho nh vĂ h a hai chi u.
- Java sound
T p h p hoĂ n toĂ n m i cĂĄc l p c trÆ°ng v Ăąm thanh c a Java.
- RMI
RMI (Remote Method Invocation) cho phĂ©p cĂĄc ng d ng g i cĂĄc phÆ°ÆĄng
th c c a i tÆ° ng t i mĂĄy khĂĄc vĂ cho phĂ©p giao ti p v i chĂșng.
10. 32 Core Java
TĂłm t t
Java lĂ ngĂŽn ng biĂȘn d ch vĂ thĂŽng d ch
CĂĄc c trÆ°ng c a Java
ÆĄn gi n
HÆ° ng i tÆ° ng
c l p ph n c ng
M nh
B o m t
PhĂąn tĂĄn
a lu ng
ng
MĂĄy o Java
Java Development Kit
CĂĄc c trÆ°ng m i c a Java 2
Ki m tra s ti n b
1. B n cĂł th vi t cĂĄc chÆ°ÆĄng trĂŹnh d ng th t c b ng Java. Ășng/Sai
2. Java lĂ ngĂŽn ng cĂł ki u d li u ch t ch . Ășng/Sai
3. ...........................lĂ chÆ°ÆĄng trĂŹnh Java ch y c l p, vĂ s d ng giao
di n h a ngÆ° i s d ng nh p d li u.
4. ...........................s d ng JDBC API k t n i cÆĄ s d li u.
5. ..........................hi u m t dĂČng cĂĄc l nh mĂĄy tĂnh tr u tÆ° ng.
6. Coalescing vĂ Compaction lĂ gĂŹ?
7. L nh ............... Æ° c s d ng d ch file mĂŁ ngu n .java.
8. L p ......... ph i lĂ l p cha c a cĂĄc applet, applet lĂ chÆ°ÆĄng cĂł th nhĂșng
vĂ o trang Web hay ch y b ng Java AppletViewer.
BĂ i t p
1. CĂ i t Java 2
2. GĂ” cĂĄc l nh sau t i d u nh c vĂ li t kĂȘ cĂĄc tham s khĂĄc nhau c a chĂșng:
javac
java