Chương 2: Nhp môn Java 23
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độ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ó 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
24 Core 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.
H ình 2.1 Cách biên dch truyn thng
Macintosh
compiler
compiler
compiler
IBM
Sparc
Chương 2: Nhp môn Java 25
Đố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
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
Macintosh
Trình biên dch
Bytecode
Độc lp nn
(Platform
independent)
Trình
thông
dch
Java
(Java
Interpreter)
IBM
Sparc
26 Core Java
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
đảm bo 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ã.
Chương 2: Nhp môn Java 27
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.
2.3.4 Servlet
Java thích hp để phát trin ng dng nhiu lp. Applet là chương trình đồ
ha chy trên trình duyt ti máy trm. các ng dng Web, máy trm gi
yêu cu ti máy ch. Máy ch x lý và gi kết qu tr li máy trm. Các Java
API chy trên máy ch chu trách nhim x lý ti máy ch và tr li các yêu
cu ca máy trm. Các Java API chy trên máy ch này m rng kh năng
ca các ng dng Java API chun. Các ng dng trên máy ch này được gi
là các Servlet. hoc Applet ti máy ch. X lý Form ca HTML là cách s
dng đơn gin nht ca Servlet. Chúng còn có th được dùng để x lý d
liu, thc thi các giao dch và thường được thc thi thông qua máy ch Web.
2.3.5 ng dng cơ s d liu
Các ng dng này s dng JDBC API để kết ni ti cơ s d liu. Chúng có
th là Applet hay ng dng, nhưng Applet b gii hn bi tính bo mt.
2.4 Máy o Java (JVM-Java Virtual Machine)
Máy o Java là trái tim ca ngôn ng Java. Môi trường Java bao gm năm
phn t sau:
¾ Ngôn ng
¾ Ðnh nghĩa Bytecode
¾ Các thư vin lp Java/Sun
¾ Máy o Java (JVM)
¾ Cu trúc ca file .class
Các phn t to cho Java thành công là
¾ Ðnh nghĩa Bytecode
¾ Cu trúc ca file .class
¾ Máy o Java (JVM)
Kh năng cơ động ca file .class cho phép các chương trình Java viết mt ln
nhưng chy bt k đâu. Kh năng này có được nh s giúp đỡ ca máy o
Java.