Download as pdf or txt
Download as pdf or txt
You are on page 1of 2

Chương trinh Các mã byte Tệp các lớp

nguon (Byte Codés) (.class)


Dịch (Compiler)
(Source Codes)
Kiểm tra các Byte Codes
Tệp chương trình java
(,java) Các mã byte
(Byte Codes) Bộ nạp lớp (Class Loader)

Máy Java ảo
(Java Virtual Machine) Thõng dịch (Interpreter)

Phần cứng và hệ điều hành Mã thực hiện


(Hardware and OS) (.exe)

Hinh 1.2. Chu trình phát triển và thực hiện cùa chương trình Java

Môi trường phát triển cùa J a v a được chia làm hai phần:
■ Trình biên dịch và trinh thông dịch. Không như C/C++, trình biên dịch cùa
J a v a chuyển mã nguồn thành dạng b y t e c o d e độc lập với phần cứng và
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 b y t e c o d e , tại mỗi máy cần
phải có trình thông dịch cùa J a v a hay còn gọi là máy ảo J a v a . Máy ảo
J a v a chuyển b y t e c o d e thành mã lệnh mà CPU thực thi được.
Như chúng ta đa biết, nhược điểm chính của chương trình thông dịch là tốc độ thực
hiện chậm. J a v a giải quyết vấn đề tốc độ bằng cách dịch chương trình nguồn sang
các mã b y t e ( b y t e c o d e ). Khi JVM thực hiện, nó sẽ tìm các đối tượng cần tham
chiếu cùa các lớp trong chương trình chính (chương trình ứng đụng). Mặt khác, đối
với những chương trình không đòi hỏi tốc độ thực hiện cao như hầu hết các chương
trình ứng dụng, các dịch vụ trên mạng, thì việc lựa chọn ngôn ngữ lập trình J a v a
là hoàn toàn phù hợp.
Ví dụ sau đây là một chương trình đơn giản gồm một lớp H e l l o í í o r l d A p p khi
thực hiện thì hiển thị thông báo " H e l l o W o rld ", được dịch và thông qua JVM để
thông dịch và thực hiện cho kết quả giống nhau trên các máy với các nền W in32,
S o l a r i s , M acO S,...
J a v a P ro q ra m

HellcMorldApp J » v » ----------------------^ -----------1-----------^ -----------------------


(k rta rp ie la ì (lirterpreter J (lirteip i Htur )

- ✓ ♦
™ Í J—
Ì B lẸPI
__wầầJLJ» ì2 m k L
W in 3 2 S o la ris M acO S

Hình 1.3. Ví dụ một chương trình Java đơn giản chạy trên mọi nền

10
d) M ạrh mẽ và đảm bảo an toàn
J a v a li ngôn ngữ kiểm soát chặt chẽ về các kiểu dữ liệu:
■ Riải khai báo kiểu dữ liệu tường minh khi viết chương trình, J a v a kiểm tra
lic biên dịch và cả trong thời gian thông dịch. Vì vậy, J a v a loại bỏ được
nột số loại lỗi thường xảy ra trong lập trình.
■ C ava không sử dụng con trỏ và các phép toán số học ( A r i t h m e t i c
C p e r a t o r ) trên con trỏ, không cho phép nhảy tự do để thao tác tuỳ ý ở các
vị trí bất kỳ trong bộ nhớ. Mặt khác, các lời gọi các hàm trong mã b y t e
c o d e không phải là các địa chi như trong các ngôn ngữ truyền thống mà là
thông qua tên gọi (đjnh danh đối tượng). Định danh được hệ thống tạo ra cho
các đối tượng khi thực thi chương trình.
■ J a v a kiềm tra tất cả các truy nhập đến mảng, chuỗi khi thực thi để đảm báo
ring các truy nhập đó không ra ngoài giới hạn kích thước. J a v a kiểm soát
chặt sự chuyển đổi kiểu dữ liệu từ dạng này sang dạng khác khi 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 và giải phóng bộ nhớ theo yêu cầu. v ấ n đề sẽ náy sinh khi lập trinh viên
quên giải phóng bộ nhớ đã xin cấp trước đó. Trong chương trình J a v a , lập
trình viên không phải bận tâm đến việc cấp phát bộ nhớ. Quá trình cấp phát,
giải phóng bộ nhớ được thực hiện tự động nhờ dịch vụ thu nhặt và giài
phóng những đối tượng không còn sử dụng nữa ( G a r b a g e C o l l e c t i o n ) .
■ Cơ chế bẫy lỗi của J a v a giúp đơn giàn hoá quá trinh xử lý lỗi và phục hồi
sau loi.
Mặt khac, v i r u s 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ó J a v a , các lập trình viên phải quét v i r u s 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ừ được hoàn toàn
v i r u s 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à họ không hề hay biết,
v ề nguyên tắc, sẽ không có một đoạn mã nào là an toàn cả. Vì vậy, J a v a không
chí là ngôn ngữ lập trình thuần túy, mà còn cung cấp nhiều mức để kiểm soát tính
an toàn khi Ihực thi chương trinh:
■ ò 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 chi dược truy xuất thông qua các giao diện mà lớp cung cấp. J a v a
không hỗ trợ con trỏ, vi 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à cung cấp kỹ thuật dọn rác trong bộ nhớ. Các
đặc trưng này tạo cho J a v a an toàn tối đa và có khả năng cơ động cao.
■ Trong mức 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 J a v a đế bảo mật.
• Mức thứ ba được đàm báo bởi trình thông dịch. Chúng kiểm tra xem b y t e
c o d e có đảm bảo các quy tẩc an toàn trước khi thực thi hay không.
■ Mức 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.

You might also like