Chương 2
NHP MÔN JAVA
Mc tiêu
Nm được các đặc trưng ca Java
Các loi chương trình viết bng Java
Ðịnh nghĩa v máy o Java (Java Virtual Machine)
Các ni dung ca JDK (Java Development Kit)
Sơ lược các đặc trưng mi ca Java 2
2.1 Gii thiu Java
Java là mt ngôn ng lp trình được Sun Microsystems gii thiu vào tháng 6 năm 1995.
T đó, nó đã tr thành mt công c lp trình ca các lp trình viên chuyên nghip. Java
được xây dng trên nn tng ca C và C++. Do vy nó s dng các cú pháp ca C và các
đặc trưng hướng đối tượng ca C++.
Vào năm 1991, mt nhóm các k sư ca Sun Microsystems có ý định thiết kế mt ngôn
ng lp trình để điu khin các thiết b đin t như Tivi, máy git, lò nướng, … Mc dù C
và C++ có kh năng làm vic này nhưng trình biên dch li ph thuc vào tng loi CPU.
Trình biên dch thường phi tn nhiu thi gian đ xây dng nên rt đắt. Vì vy để mi loi
CPU có mt trình biên dch riêng là rt tn kém. Do đó nhu cu thc tế đòi hi mt ngôn
ng chy nhanh, gn, hiu qu và độc lp thiết b tc là có th chy trên nhiu loi 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. Mc dù mc tiêu ban đầu không phi cho Internet nhưng do đặc trưng không
ph thuc thiết b nên Java đã tr thành ngôn ng lp trình cho Internet.
2.1.1 Java là gì
Java là ngôn ng lp trình hướng đối tượng, do vy không th dùng Java để viết mt
chương trình hướng chc năng. Java có th gii quyết hu hết các công vic mà các ngôn
ng khác có th làm được.
Java là ngôn ng va biên dch va thông dch. Đầu tiên mã ngun được biên dch bng
công c JAVAC để chuyn thành dng ByteCode. Sau đó được thc thi trên tng loi máy
c th nh chương trình thông dch. Mc tiêu ca các nhà thiết kế Java là cho phép ngưi
lp trình viết chương trình mt ln nhưng có th chy trên bt c phn cng c th.
Ngày nay, Java được s dng rng rãi để viết chương trình chy trên Internet. Nó là ngôn
ng lp trình hướng đối tượng độc lp thiết b, không ph thuc vào h điu hành. Nó
Ch ng 2: Nh p môn Javaươ 23
không ch dùng để viết các ng dng chy đơn l hay trong mng mà còn để xây dng
các trình điu khin thiết b cho đin thoi di động, PDA,
2.2 Các đc trưng ca Java
Đơn gin
Hướng đối tượng
Độc lp phn cng và h điu hành
Mnh
Bo mt
Phân tán
Đa lung
Động
2.2.1 Đơn gin
Nhng người thiết kế mong mun phát trin mt ngôn ng d hc và quen thuc vi đa s
người lp trình. Do vy Java loi b các đặc trưng phc tp ca C và C++ như thao tác
con tr, thao tác định nghĩa chng toán t (operator overloading),… Java không s dng
lnh “goto cũng như file header (.h). Cu trúc “struct” và “union” cũng được loi b khi
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ì vy trong Java, tiêu đim là
d liu và các phương pháp thao tác lên d liu đó. D liu và các phương pháp mô t
trng thái và cách ng x ca mt đối tượng trong Java.
2.2.3 Độc lp phn cng và h điu hành
Đây là kh năng mt chương trình được viết ti mt máy nhưng có th chy được bt k
đâu. Chúng đưc th hin mc mã ngun và mc nh phân.
mc mã ngun, người lp trình cn mô t kiu cho mi biến. Kiu d liu trong Java
nht quán cho tt c các h điu hành và phn cng khác nhau. Java có riêng mt thư
vin các lp cơ s. Vì vy chương trình Java được viết trên mt máy có th dch và chy
trơn tru trên các loi máy khác mà không cn viết li.
Tính độc lp mc nh phân, mt chương trình đã biên dch có th chy trên nhiu nn
(phn cng, h điu hành) khác mà không cn dch li mã ngun. Tuy vy cn có phn
mm máy o Java (s đề cp đến phn sau) hot động như mt trình thông dch ti
máy thc thi.
24 Core Java
Macintosh
compiler
compiler
compiler
IBM
Sparc
H ình 2.1 Cách biên dch truyn thng
Đối vi các chương trình viết bng C, C++ hoc mt ngôn ng nào khác, trình biên dch s
chuyn tp lnh thành mã máy (machine code),hay lnh ca b vi x lý. Nhng lnh này
ph thuc vào CPU hin ti trên máy bn. Nên khi mun chy trên loi CPU khác, chúng
ta phi biên dch li chương trình. Hình 2.1 th hin quá trình để thc thi chương trình viết
bng C++ trên các loi máy khác nhau.
Hình 2.2 Quá trình thc thi chương trình viết bng Java trên các loi máy khác nhau.
Hình 2.2 Dch chương trình Java
Môi trường phát trin ca Java được chia làm hai phn: Trình biên dch và trình thông dch.
Không như C hay C++, trình biên dch ca Java chuyn mã ngun thành dng bytecode
độc lp vi phn cng mà có th chy trên bt k CPU nào.
Nhưng để thc thi chương trình dưới dng bytecode, ti mi máy cn phi có trình thông
dch ca Java hay còn gi là máy o Java. Máy o Java chuyn bytecode thành mã lnh
mà CPU thc thi được.
2.2.4 Mnh m
Ch ng 2: Nh p môn Javaươ 25
Macintosh
Trình biên dch
Bytecode
Độc lp nn
(Platform
independent)
Trình
thông
dch
Java
(Java
Interpreter)
IBM
Sparc
Java là ngôn ng yêu cu cht ch v kiu d liu. Phi khai báo kiu d liu tường minh
khi viết chương trình. Java kim tra lúc biên dch và c trong thi gian thông dch vì vy
Java loi b mt mt s loi li lp trình nht định.
Java không s dng con tr và các phép toán con tr. Java kim tra tt c các truy nhp
đến mng, chui khi thc thi để đảm bo rng các truy nhp đó không ra ngoài gii hn
kích thước. Java kim tra s chuyn đổi kiu d liu t dng này sang dng khác lúc thc
thi.
Trong các môi trường lp trình truyn thng, lp trình viên phi t mình cp phát b nh.
Trước khi chương trình kết thúc thì phi t gii phóng b nh đã cp. Vn đề ny sinh khi
lp trình viên quên gii phóng b nh đã xin cp trước đó. Trong chương trình Java, lp
trình viên không phi bn tâm đến vic cp phát b nh. Qúa trình cp phát, gii phóng
được thc hin t động, nh dch v thu nht nhng đối tượng không còn s dng na
(garbage collection).
Cơ chế by li ca Java giúp đơn gin hóa qúa trình x lý li và hi phc sau li.
2.2.5 Bo mt
Viruses là nguyên nhân gây ra s lo lng trong vic s dng máy tính. Trước khi có Java,
các lp trình viên phi quét virus các tp trước khi ti v hay thc hin chúng. Thông
thường vic này cũng không loi tr hoàn toàn virus. Ngoài ra chương trình khi thc thi có
kh năng tìm kiếm và đọc các thông tin nhy cm trên máy ca người s dng mà người
s dng không h hay biết.
Java cung cp mt môi trường qun lý thc thi chương trình. Nó cho rng không có mt
đon mã nào là an toàn c. Và vì vy Java không ch là ngôn ng lp trình thun tuý mà
còn cung cp nhiu mc để kim soát tính an toàn khi thc thi chương trình.
mc đầu tiên, d liu và các phương thc được đóng gói bên trong lp. Chúng ch được
truy xut thông qua các giao din mà lp cung cp. Java không h tr con tr vì vy
không cho phép truy xut b nh trc tiếp. Nó cũng ngăn chn không cho truy xut thông
tin bên ngoài kích thước ca mng bng k thut tràn và cũng cung cp k thut dn rác
trong b nh. Các đặc trưng này to cho Java an toàn ti đa và có kh năng cơ động cao.
Trong lp th hai, trình biên dch kim soát để đảm bo mã là an toàn, và tuân theo các
nguyên tc ca Java.
Lp th ba được đảm bo bi trình thông dch. Chúng kim tra xem bytecode có đảm bo
26 Core Java
các qui tc an toàn trước khi thc thi.
Lp th tư kim soát vic np các lp vào b nh để giám sát vic vi phm gii hn truy
xut trước khi np vào h thng.
2.2.6 Phân tán
Java có th dùng để xây dng các ng dng có th làm vic trên nhiu phn cng, h
điu hành và giao din đồ ha. Java được thiết kế h tr cho các ng dng chy trên
mng. Vì vy chúng được s dng rng rãi như là công c phát trin trên Internet, nơi s
dng nhiu nn tng khác nhau.
2.2.7 Đa lung
Chương trình Java đa lung(Multithreading) để thc thi các công vic đồng thi. Chúng
cũng cung cp gii pháp đồng b gia các lung. Đặc tính h tr đa này này cho phép
xây dng các ng dng trên mng chy hiu qu.
2.2.8 Động
Java được thiết kế như mt ngôn ng động để đáp ng cho nhng môi trường m. Các
chương trình Java cha rt nhiu thông tin thc thi nhm kim soát và truy nhp đối tượng
lúc chạỵ. Điu này cho phép kh năng liên kết động mã.
2.3 Các kiu chương trình Java
Chúng ta có th xây dng các loi chương trình Java như sau:
2.3.1 Applets
Applet là chương trình được to ra để s dng trên Internet thông qua các trình duyt h
tr Java như IE hay Netscape. Bn có th dùng Java để xây dng Applet. Applet được
nhúng bên trong trang Web. Khi trang Web hin th trong trình duyt, Applet s được ti v
và thc thi ti trình duyt.
2.3.2 ng dng thc thi qua dòng lnh
Các chương trình này chy t du nhc lnh và không s dng giao din đồ ha. Các
thông tin nhp xut được th hin ti du nhc lnh.
2.3.3 ng dng đồ ha
Đây là các chương trình Java chy độc lp cho phép người dùng tương tác qua giao din
đồ ha.
Ch ng 2: Nh p môn Javaươ 27