SlideShare a Scribd company logo
1 of 10
Download to read offline
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
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
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
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ĂŁ.
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.
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
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
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.
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.
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

More Related Content

Viewers also liked

àžšàž—àž—àž”àčˆ 1
àžšàž—àž—àž”àčˆ 1àžšàž—àž—àž”àčˆ 1
àžšàž—àž—àž”àčˆ 1Pear Pimnipa
 
Developing critical skills1
Developing critical skills1Developing critical skills1
Developing critical skills1Ali Moghaddam
 
àč‚àž„àžŁàž‡àž‡àžČàž™àč€àžȘàžžàž•àžŽàž” (àčƒàž«àžĄàčˆ)
àč‚àž„àžŁàž‡àž‡àžČàž™àč€àžȘàžžàž•àžŽàž” (àčƒàž«àžĄàčˆ)àč‚àž„àžŁàž‡àž‡àžČàž™àč€àžȘàžžàž•àžŽàž” (àčƒàž«àžĄàčˆ)
àč‚àž„àžŁàž‡àž‡àžČàž™àč€àžȘàžžàž•àžŽàž” (àčƒàž«àžĄàčˆ)Pear Pimnipa
 
àžąàžČàč€àžȘàžžàž•àžŽàž” àžšàž—àž—àž”àčˆ1
àžąàžČàč€àžȘàžžàž•àžŽàž” àžšàž—àž—àž”àčˆ1àžąàžČàč€àžȘàžžàž•àžŽàž” àžšàž—àž—àž”àčˆ1
àžąàžČàč€àžȘàžžàž•àžŽàž” àžšàž—àž—àž”àčˆ1Pear Pimnipa
 
àžšàž—àž—àž”àčˆ2
àžšàž—àž—àž”àčˆ2 àžšàž—àž—àž”àčˆ2
àžšàž—àž—àž”àčˆ2 Pear Pimnipa
 
àč‚àž„àžŁàž‡àž‡àžČàž™àžąàžČàč€àžȘàžžàž•àžŽàž”
àč‚àž„àžŁàž‡àž‡àžČàž™àžąàžČàč€àžȘàžžàž•àžŽàž”àč‚àž„àžŁàž‡àž‡àžČàž™àžąàžČàč€àžȘàžžàž•àžŽàž”
àč‚àž„àžŁàž‡àž‡àžČàž™àžąàžČàč€àžȘàžžàž•àžŽàž”Pear Pimnipa
 

Viewers also liked (6)

àžšàž—àž—àž”àčˆ 1
àžšàž—àž—àž”àčˆ 1àžšàž—àž—àž”àčˆ 1
àžšàž—àž—àž”àčˆ 1
 
Developing critical skills1
Developing critical skills1Developing critical skills1
Developing critical skills1
 
àč‚àž„àžŁàž‡àž‡àžČàž™àč€àžȘàžžàž•àžŽàž” (àčƒàž«àžĄàčˆ)
àč‚àž„àžŁàž‡àž‡àžČàž™àč€àžȘàžžàž•àžŽàž” (àčƒàž«àžĄàčˆ)àč‚àž„àžŁàž‡àž‡àžČàž™àč€àžȘàžžàž•àžŽàž” (àčƒàž«àžĄàčˆ)
àč‚àž„àžŁàž‡àž‡àžČàž™àč€àžȘàžžàž•àžŽàž” (àčƒàž«àžĄàčˆ)
 
àžąàžČàč€àžȘàžžàž•àžŽàž” àžšàž—àž—àž”àčˆ1
àžąàžČàč€àžȘàžžàž•àžŽàž” àžšàž—àž—àž”àčˆ1àžąàžČàč€àžȘàžžàž•àžŽàž” àžšàž—àž—àž”àčˆ1
àžąàžČàč€àžȘàžžàž•àžŽàž” àžšàž—àž—àž”àčˆ1
 
àžšàž—àž—àž”àčˆ2
àžšàž—àž—àž”àčˆ2 àžšàž—àž—àž”àčˆ2
àžšàž—àž—àž”àčˆ2
 
àč‚àž„àžŁàž‡àž‡àžČàž™àžąàžČàč€àžȘàžžàž•àžŽàž”
àč‚àž„àžŁàž‡àž‡àžČàž™àžąàžČàč€àžȘàžžàž•àžŽàž”àč‚àž„àžŁàž‡àž‡àžČàž™àžąàžČàč€àžȘàžžàž•àžŽàž”
àč‚àž„àžŁàž‡àž‡àžČàž™àžąàžČàč€àžȘàžžàž•àžŽàž”
 

Similar to Core java 2

Ebook láș­p trĂŹnh Java hướng đối tÆ°á»Łng (Tiáșżng việt)
Ebook láș­p trĂŹnh Java hướng đối tÆ°á»Łng (Tiáșżng việt)Ebook láș­p trĂŹnh Java hướng đối tÆ°á»Łng (Tiáșżng việt)
Ebook láș­p trĂŹnh Java hướng đối tÆ°á»Łng (Tiáșżng việt)Duy LĂȘ Văn
 
Core java 2
Core java 2Core java 2
Core java 2. .
 
GiĂĄo trĂŹnh java ĐáșĄi Học SÆ° PháșĄm Ká»č Thuáș­t HÆ°ng YĂȘn
GiĂĄo trĂŹnh java ĐáșĄi Học SÆ° PháșĄm Ká»č Thuáș­t HÆ°ng YĂȘnGiĂĄo trĂŹnh java ĐáșĄi Học SÆ° PháșĄm Ká»č Thuáș­t HÆ°ng YĂȘn
GiĂĄo trĂŹnh java ĐáșĄi Học SÆ° PháșĄm Ká»č Thuáș­t HÆ°ng YĂȘnTráș§n ThiĂȘn ĐáșĄi
 
BĂ i giáșŁng láș­p trĂŹnh Java cÆĄ báșŁn - Java Programming
BĂ i giáșŁng láș­p trĂŹnh Java cÆĄ báșŁn - Java ProgrammingBĂ i giáșŁng láș­p trĂŹnh Java cÆĄ báșŁn - Java Programming
BĂ i giáșŁng láș­p trĂŹnh Java cÆĄ báșŁn - Java ProgrammingVntalking Blog
 
Android program 6167
Android program 6167Android program 6167
Android program 6167PhongSPKT
 
tao file exe cho chuong trinh viet bang ngon ngu java
 tao file exe cho chuong trinh viet bang ngon ngu java tao file exe cho chuong trinh viet bang ngon ngu java
tao file exe cho chuong trinh viet bang ngon ngu javanamcntt_nd
 
BĂ i 2: J2EE - Láș­p TrĂŹnh MáșĄng NĂąng Cao
BĂ i 2: J2EE - Láș­p TrĂŹnh MáșĄng NĂąng CaoBĂ i 2: J2EE - Láș­p TrĂŹnh MáșĄng NĂąng Cao
BĂ i 2: J2EE - Láș­p TrĂŹnh MáșĄng NĂąng CaoTuan Nguyen
 
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)Anh Quoc
 
lap-trinh-mang-voi-ngon-ngu-java
lap-trinh-mang-voi-ngon-ngu-javalap-trinh-mang-voi-ngon-ngu-java
lap-trinh-mang-voi-ngon-ngu-javaTruong NGUYEN
 
TĂ i liệu tổng quĂĄt về cÆĄ sở dữ liệu
TĂ i liệu tổng quĂĄt về cÆĄ sở dữ liệuTĂ i liệu tổng quĂĄt về cÆĄ sở dữ liệu
TĂ i liệu tổng quĂĄt về cÆĄ sở dữ liệuAnh Duong Pham
 
Lap trinhthietbididongvoij2me
Lap trinhthietbididongvoij2meLap trinhthietbididongvoij2me
Lap trinhthietbididongvoij2mehaiokman
 
1 laptrinhthietbididongvoij2me
1 laptrinhthietbididongvoij2me1 laptrinhthietbididongvoij2me
1 laptrinhthietbididongvoij2meGiang Nguyễn
 
Java2 studyguide 2012
Java2 studyguide 2012Java2 studyguide 2012
Java2 studyguide 2012Phuc Truong Ba
 
OOP in Java - Ver1.1
OOP in Java -  Ver1.1OOP in Java -  Ver1.1
OOP in Java - Ver1.1vdlinh08
 
gioi thieu ve java
gioi thieu ve javagioi thieu ve java
gioi thieu ve javaDat Ngo
 

Similar to Core java 2 (20)

Ebook láș­p trĂŹnh Java hướng đối tÆ°á»Łng (Tiáșżng việt)
Ebook láș­p trĂŹnh Java hướng đối tÆ°á»Łng (Tiáșżng việt)Ebook láș­p trĂŹnh Java hướng đối tÆ°á»Łng (Tiáșżng việt)
Ebook láș­p trĂŹnh Java hướng đối tÆ°á»Łng (Tiáșżng việt)
 
Core java 2
Core java 2Core java 2
Core java 2
 
Gt java080102005
Gt java080102005Gt java080102005
Gt java080102005
 
GiĂĄo trĂŹnh java ĐáșĄi Học SÆ° PháșĄm Ká»č Thuáș­t HÆ°ng YĂȘn
GiĂĄo trĂŹnh java ĐáșĄi Học SÆ° PháșĄm Ká»č Thuáș­t HÆ°ng YĂȘnGiĂĄo trĂŹnh java ĐáșĄi Học SÆ° PháșĄm Ká»č Thuáș­t HÆ°ng YĂȘn
GiĂĄo trĂŹnh java ĐáșĄi Học SÆ° PháșĄm Ká»č Thuáș­t HÆ°ng YĂȘn
 
BĂ i giáșŁng láș­p trĂŹnh Java cÆĄ báșŁn - Java Programming
BĂ i giáșŁng láș­p trĂŹnh Java cÆĄ báșŁn - Java ProgrammingBĂ i giáșŁng láș­p trĂŹnh Java cÆĄ báșŁn - Java Programming
BĂ i giáșŁng láș­p trĂŹnh Java cÆĄ báșŁn - Java Programming
 
Android program 6167
Android program 6167Android program 6167
Android program 6167
 
tao file exe cho chuong trinh viet bang ngon ngu java
 tao file exe cho chuong trinh viet bang ngon ngu java tao file exe cho chuong trinh viet bang ngon ngu java
tao file exe cho chuong trinh viet bang ngon ngu java
 
BĂ i 2: J2EE - Láș­p TrĂŹnh MáșĄng NĂąng Cao
BĂ i 2: J2EE - Láș­p TrĂŹnh MáșĄng NĂąng CaoBĂ i 2: J2EE - Láș­p TrĂŹnh MáșĄng NĂąng Cao
BĂ i 2: J2EE - Láș­p TrĂŹnh MáșĄng NĂąng Cao
 
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
878 lap-trinh-mang-voi-ngon-ngu-java-140320051255-phpapp01(1)
 
lap-trinh-mang-voi-ngon-ngu-java
lap-trinh-mang-voi-ngon-ngu-javalap-trinh-mang-voi-ngon-ngu-java
lap-trinh-mang-voi-ngon-ngu-java
 
Chuong 09 vb
Chuong 09   vbChuong 09   vb
Chuong 09 vb
 
TĂ i liệu tổng quĂĄt về cÆĄ sở dữ liệu
TĂ i liệu tổng quĂĄt về cÆĄ sở dữ liệuTĂ i liệu tổng quĂĄt về cÆĄ sở dữ liệu
TĂ i liệu tổng quĂĄt về cÆĄ sở dữ liệu
 
Lap trinhthietbididongvoij2me
Lap trinhthietbididongvoij2meLap trinhthietbididongvoij2me
Lap trinhthietbididongvoij2me
 
Lap trinh thiet bi di dong voi j2me
Lap trinh thiet bi di dong voi j2meLap trinh thiet bi di dong voi j2me
Lap trinh thiet bi di dong voi j2me
 
1 laptrinhthietbididongvoij2me
1 laptrinhthietbididongvoij2me1 laptrinhthietbididongvoij2me
1 laptrinhthietbididongvoij2me
 
Java2 studyguide 2012
Java2 studyguide 2012Java2 studyguide 2012
Java2 studyguide 2012
 
OOP in Java - Ver1.1
OOP in Java -  Ver1.1OOP in Java -  Ver1.1
OOP in Java - Ver1.1
 
Gioi thieu ve_java
Gioi thieu ve_javaGioi thieu ve_java
Gioi thieu ve_java
 
gioi thieu ve java
gioi thieu ve javagioi thieu ve java
gioi thieu ve java
 
Quan ly bo nho
Quan ly bo nhoQuan ly bo nho
Quan ly bo nho
 

Core java 2

  • 1. 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