mỤc lỤctailieudientu.lrc.tnu.edu.vn/upload/collection/brief/... · 2018. 8. 10. · "...

10

Upload: others

Post on 30-Mar-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java
Page 2: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java

MỤC LỤCLỜI NÓI ĐẦU.............................................................................................................5

Chương 1NHẬP MÔN LẠP TRÌNH JAVA

1.1. Giới thiệu về ngôn ngữ lập trình J a v a ..................................................... 71.2. Máy ảo Java (JVM) . ' ................................................................................ 131.3. Bộ công cụ phát triển JDK (Java Development Kit).............................151.4. Các loại chương trình Java......................................................................16BÀI TẠP............................................................................................................... 27

Chương 2 CÁC THÀNH PHẰN c ơ BẢN CỦA JAVA

2.1 Cấu trúc một chương trình Ja va .............................................................282 2 Các lớp đối tượng......................................................................................322.3. Các kiểu dữ liệu..........................................................................................392.4 Các phép toán trong Java........................................................................ 432 5 Cấu trúc điều khiển................................................................................... 502 6 Xử lý ngoại lệ .............................................................................................62BÀI TẠP............................................................................................................... 69

Chương 3 HƯỚNG ĐỒI TƯỢNG TRONG JAVA

3.1. Giới th iệ u .....................................................................................................723.2. Lớp (class) các đối tư ợ n g .................................................................................723.3. Phạm vi và thuộc tính kiểm soát truy nhập các thành phần của lớp ... 803 4. Truyền tham số cho các lời gọi h à m ......................................................973.5. Các tham số của chương trình.............................................................. 1023.6 Phương thức tạo lập đối tượng..............................................................1023.7. Sự kết thúc của đối tư ợ ng ......................................................................1083 8 Hàm đệ q u y .............................................................................................. 1103.9 Quan hệ kế thừa giữa các lớ p .............................................................. 1123 10 Đa xạ và nạp chồng..............................................................................1203.11. Giao diện và sự mờ rộng quan hệ kế thừa trong Java ..................126BÀI TẠP................................ ................................ ..................................... 130

Chương 4CÁC LỚP C ơ BẢN VÀ CÁU TRÚC DỮ LIỆU

4 1. Cấu trúc mảng trong Java...................................................................... 1344 2 Các lớp cơ bản của Java....................................................................1414.3. Cấu trúc tuyển tập đối tư ợ ng ................................................................ 1634.4. Các cấu trúc dữ liệu động...................................................................... 177BÀI TẠP..............................................................................................................186'

3

Page 3: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java

Chương 5APPLET VÀ ựkP TRÌNH ĐỒ HOẠ

5.1 Lập trinh applet...................................................................................... 1895.2. Các thành phần của AW T.................................................................... 1945.3 Các lớp xử lý đồ hoạ.............................................................................2025 4 Chọn mode để vê đồ hoạ.....................................................................2205 5. Xử lý hình ảnh và âm thanh.................................................................2235.6. Bố trí sắp xếp các thành phần trong chương trình ứng dụng...... 2265.7. Xử lý các sự kiện...................................................................................231BÀI TẠP..........................................................................................................246

Chương 6 LUỒNG VÀO/ RA VÀ TỆP TIN

6 1 Các luồng váo/ra................................................................................... 2486.2. Gói java io ...............................................................................................2496.3 Lớp F ile ..................................................................................................2536 4. Các lớp xử lý tệp................................................................................... 2586 5 Truy nhập tệp ngẫu nhiên....................................................................2696.6. Truy nhập tệp tuần tự theo đối tượng................................................ 270BÀI TẠP..........................................................................................................283

Chương 7 LẠP TRÌNH C ơ SỞ DƯ LIỆU VỚI JDBC

7.1 Giới th iệu................................................................................................2857.2 ODBC.' .................................................................................................2857.3. JDBC.......................................................................................................2867.4. C ác lớp và giao diện của JDBC API..........................................................2897.5 Kết nối cơ sờ dữ liệu qua JD BC ......................................................... 2907.6. Kiểu dữ liệu SQL vá JAVA................................................................... 2947.7 Chương trinh ứng dụng JDBC............................................................ 295BÀI TẠP.......................................................................................................... 306

Chương 8 BẢO MẠT VÀ AN NINH THÔNG TIN

8.1. Giới thiệu về vấn đề bảo mật, an toàn hệ thống thông t in ...............3088.2. Bộ nạp lớp và kiểm tra byte code........................................................ 3108.3. Lớp SecurityManager và Permission..................................................3178 4. Vấn đề bảo mật trong gói java security.............................................. 3308 5 Vấn đề chứng thực................................................................................340BÀI TẬP...........................................................................................................353TÀI LIỆU THAM KHẢO.................................................................................354

4

Page 4: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java

X à L n ó i É ầ u

N gôn ngữ lập trình J a v a do Sun (h t t p : / / j a v a . s u n . com) phái triền lừ đau những năm 90 cùa thế kỳ XX, nó đã trư thành một trong

các ngôn ngữ lập trình hướng đoi tượng được ưa chuộng nhất trong Cóng nghệ thõng tin nhờ một số đặc điếm rất phù hợp cho công nghệ mạng I n t e r n e t , hiện đã và đang được dùng pho biến trên loàn thế giới nhăm đáp img các yêu cầu phái Irien các ửnẹ dụng trên mạng (Vỉeb-based), phục vụ cho nhiều người sư dụng với những môi trường thực hiện ( p la t f o r m ) nen khác nhau. J a v a là một ngôn ngữ lập trình hoàn chính, được thiết kế theo cách tiếp cận hướng đối lượng và ké thừa, sứ dụng lại; được nâng cấp cùa những ngôn ngữ lập trình trước nó.

vè mặt cú pháp, J a v a rất giong với C++, mội ngôn ngữ lập trình hướng đối lượng mở rộng cùa c, nhimg loại đi một số tính khá dụng quá phức tạp và ít dùng, hoặc thừa về mặt ngôn ngữ lập trình như: loại bỏ kế thừa bội vì chúng có thé tạo ra những lược đồ dữ liệu dạng đồ thị và là nguyên nhân chính gáy ra sự phức tạp trong hệ thong và không đám bào tính nhất quán, tinh đúng đan trung quan hệ cùa hệ thống thông tin. J a v a cũng không cho phép thao tác sổ học trên kiều con Iró vì đày là nguồn gốc cùa những "con bọ" rất khó phát hiện khi biên dịch, khi thực hiện chương trình, ... Mục đích chính cùa J a v a là đơn giàn, thân thiện, hướng đối tượng và cách tân nham tạo ra những phân mém ứng dụng độc lập với mói trường sử dụng.

Nội dung chính cùa giáo trình được trình bày trong tám chương.Chương 1 giới thiệu những đặc trưng noi trội cùa J a v a va các loại

chương trình ứng dụng độc lập, chương trình a p p l e t , chương trình lai ghép cùa i7ava. Chương tiếp theo trình bày nhĩrng khái niệm cơ sớ nhắt cùa một ngôn ngữ lập trình và nêu cách xây dựng, tổ chức lớp các đoi tượng trong các chương trình ứng dụng; các lệnh điều khiển dòng thực hiện chương trình, đặc biệt là cơ chế xừ lý ngoại lệ hổ trợ đế tạo ro những chương trình hoạt động tốt trong mọi tình huống, thích ứng được với mọi điểu kiện trên cơ sở kiếm soát được các loi, các tình huống có thể xày ra. Chương 3 cung cấp những khái niệm đặc trưng cơ bán nhất cùa lập trình hướng đối tieợng, phân tích cách sứ dựng cơ ché đóng gói, che giấu thông tin, lính đa xạ và các mối quan hệ, đặc biệt là quan hệ ke thừa giữa các lớp đối lượng. Chương 4 đê cập đên một sô

5

Page 5: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java

lớp cơ sở nhất cùa <Java và các kiếu cấu trúc dữ liệu phổ dụng, vẩn đề phát triển những ứng dụng a p p l e t và sứ dụng giao diện đồ hoạ, âm thanh, hình ánh dưới dạng các trang Web với nhiều ví dụ minh hơạ được giới thiệu ở chương 5. Chương 6 giới thiệu các lớp xù lý các luồng dữ liệu vào/ra chuẩn và các phương pháp, kỹ thuật tổ chức đọc, ghi lên các loại tệp dữ liệu. Chương 7 trình bày van để két noi các cơ sở dữ liệu với JDBC nham tạo ra những hệ thống phần mềm tích hợp từ nhiều loại hệ thống thông tin khác nhau trên mạng. Chương cuối giới thiệu một số kỹ thuật bào mật thông tin, chữ ký số và ứng dụng mật m ã R SA đế đàm bào an ninh cho các hệ thống thông tin. Trong các chương có nhiều ví dụ là nhũng chương trình hoàn chình, minh hoạ cho cách sứ dụng những khái niệm đã nêu ở trên.

Giáo trình được biên soạn dựa trên kinh nghiệm giàng dạy cùa các lác già trong nhiều năm lại các khoá đào tạo đại học, cao học ngành Cóng nghệ thông tin cùa Đại học Quốc gia Hà Nội, Đại học Bách khoa Hà Nội, Đại học Khoa học Huế, Đại học Sư phạn Hà Nội, Đại học Bách khoa Đà Nang, Đại học Thái Nguyên, Đại học Công nghiệp Hà Nội,... Giáo trình được biên soạn về Lập trình J a v a , ngoài ra nó có thế sừdụng làm lài liệu học lập ve Lập trình hướng đối tượng càn bàn cùa ngôn ngữ J a v a cho sinh viên các hệ kỹ sư, cứ nhân, học viên cao học ngành Công nghệ thông tin và cho những ai quan lâm đen phương pháp lập trình hướng đoi tượng đế phát triến những ứng dụng độc lập với môi trường, hay để xây dựng các W ebsi t e trên mạng.

Các lác già bày tò lòng biêt ơn chân ihành tới các bạn đong nghiệp ớ các đơn vị đào lạo ké trên và Phòng Các hệ thống Phần mềm tích hợp, Viện Công nghệ Thông tin, Viện Khoa học và Công nghệ Việt Nam đã động viên, góp ý và giúp đỡ đê hoàn chinh nội dung giáo trình.

Mặc dù co gang rất nhiều, nhưng khó tránh khói những thiểu sót, chúng tôi mong nhận được những ý kiến đóng góp cùa bạn đọc đẽ giáo trình ngày càng tól hơn. Thư góp ý xin gứi về Cóng ly c ò phần Sách Đại học - Dạy nghè, Nhà xuất bàn Giáo dục Việí Nam, 25 Hàn Thuyên, Hà Nội.

Xin chân thành cám ơn!CÁC TÁC GIA

6

Page 6: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java

Chương 1 NHẬP MÔN LẬP TRÌNH JAVA

Chương này giới thiệu khái quát về ngôn ngữ lập trinh Java:• Các đặc trưng nổi bật của ngôn ngữ lập trinh J a v a■ Các loại chương trình của Ja v a* Máy ảo J a v a (Ja v a V i r t u a l M achine)■ Môi trường phát triển chương trình JDK (Java D evelopm ent K it)

1.1. Giới thiệu về ngôn ngữ lập trinh Java

1.1.1. Java là gì?

J a v a được phát triển bởi J a m e s G o s l in g và bạn đồng nghiệp ở Sun M ic r o s y s te m , ban đầu ngôn ngữ này được gọi là O ak (cây sồi) vào năm 1991, sau năm 1995 được đồi tên thành J a v a . Ngôn ngữ J a v a được tạo ra với mục tiêu " Viết (code) một lần, thực thi ở mọi nơi" ( " W rite O nce, R un A nyw here").J a v a là ngôn ngữ vừa biên dịch, vừa thông dịch. Đầu tiên, mã chương trình nguồn được biên dịch bằng chương trình ja v a c .c o m (trong JDK) để chuyển thành dạng D y tc C ode. Sau đó, được thực thi tròn từng loại máy cụ thổ nhà chương trình thông dịch trong máy ảo JVM ( J a v a V i r t u a l M a c h in e ). Mục tiêu cùa các nhà thiết kế J a v a là cho phép người lập trình viết chương trinh một lần, nhưng có thể chạy trên bất cứ phần cứng, môi trường cụ thể nào. Môi trường thực thi của S u n M ic r o s y s te m hỗ trợ S un S o l a r i s , L in u x , Mac o s , F reeB SD , W in d o w s ,...Mặc dù mục tiêu ban đầu không phải cho I n t e r n e t , nhưng do đặc trưng không phụ thuộc vào nền ( P l a t f o r m ) , nên J a v a đã trờ thành ngôn ngữ lập trình cho I n t e r n e t . Ngày nay, J a v a được sử dụng rộng rãi để viết chương trình chạy trên I n t e r n e t . Nó là ngôri 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. J a v a không chi dùng đề viết các ứng dụng chạy độc lập hay chương trình a p p l e t , 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, các thiết bị nhúng ,...

1.1.2. Một số đặc điếm nối bật của ngôn ngữ lập trình Java

Các đặc trưng cơ bán cùa ngôn ngữ lập trinh J a v a là:■ Dơn giàn, thân thiện;■ Hướng đối tượng;

7

Page 7: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java

■ Độc lập với nền ( p l a t f orm): phần cứng và hệ điều hành;■ Mạnh mẽ và an toàn;■ Lập trình mạng, phân tán;■ Thực hiện đa luồng;■ Chuẩn hoá.

a) Đơn giản, thân thiệnNhững người thiết kế ngôn ngữ lập trình 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. J a v a được xây dựng trên nền tảng của c /C + + , có cú pháp giống như của c và có các đặc trưng hướng đối tượng cùa C+ + . Để đảm bảo đơn giản trong lập trình, J a v a loại bỏ các đặc trưng phức tạp của C/C++ như thao tác con tró số học, không hỗ trợ đjnh nghĩa nạp chồng các toán tử ( o p e r a t o r o v e r lo a d in g ) , ... J a v a không sử dụng lệnh g o to cũng như f i l e h e a d e r (.h) và không hỗ trợ kế thừa bội ( M u l t i p l e I n h e r i t a n c e ) như trong C++, mà thay vào đó, J a v a đưa ra khái niệm giao diện ( i n t e r f a c e ) để hỗ trợ tính kế thừa bội.

b) Hướng đéi tượngCác dữ liệu và các phương thức được kết hợp vào một đơn vị cấu trúc tạo nên một đối tượng. Đối tượng được xem như là thành phần chính cùa chương trình hướng đối tượng ( O b j e c t - O r ie n t e d ) , nó gồm hai thành phần chính: phần các phương th ứ c (m e th o d ) và phần các thuộc tính ( a t t r i b u t e ) . Trong lập trình, các phương thức của đối tượng là các hàm và các thuộc tính cùa nó là các biến, các tham số hay hằng nội tại của một đối tượng (hay nói cách khác, tập hợp các dữ liệu nội tại tạo thành thuộc tính của đối tượng). Các phương thức là phương tiện để sử dụng một dối iưựng, irong khi các thuộc tính sỗ mô tà các tính chất đăc trưng cùa đối tượng.Các đối tượng thường được trừu tượng hoá ( A b s t r a c t i o n ) và bao gói ( E n c a p s u l a t i o n ) thành một lớ p ( c la s s ) . Hay nói cách khác, lóp là nguyên mẫu ( p r o t o t y p e ) cùa những đối tượng giống nhau về các tính chất đặc trưng (các thuộc tính), tương tự nhau về hành vi ứng xừ (các phương phức) và cùng có mối quan hệ với các đối tượng của các lớp khác.J a v a là ngôn ngữ lập trình hướng đối tượng thực sự:

■ Hỗ trợ tất cả các khái niệm hướng đối tượng cơ bản: lớp, đối tượng, trừu tượng hoá, bao gói, che giấu thông tin, kế thừa ( I n h e r i t a n c e ) , đa xạ (P o ly m o rp h is m ) bao gồm nạp chồng ( O v e r lo a d in g ) , viết đè ( O v e r r id i n g ) và liên kết động (D ynam ic B in d in g ) .

■ Mọi thực thể trong chương trình đều được coi là một đối tượng, tức là một thể hiện cụ thể của một lớp xác định.

■ Chương trình là tập hợp các lớp ( c l a s s ) . Các lớp được xem như các kiểu của đối tượng, được sử dụng để tạo ra các đối tượng trao đối với nhau nhăm thực thi nhiệm vụ được giao.

8

Page 8: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java

Tất ca mọi thứ được đề cập trong J a v a đều liên quan đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương trinh viết bằng J a v a (đó là hàm m ain ()) cũng phải đặt bên trong một lớp. Một cách khái quát ta có thể viết:

Chương trình hướng đối tượng = Các lớp + Ke thừa.

c) Độc lập vói nềnĐối với các ngôn ngữ lập trình truyền thống như B a s ic , P a s c a l , C/C++, plnrơng pháp biên dịch được thực hiện như hình 1.1.

Hinh 1.1. Chu trinh phát triển và thực hiện cùa chương trình C/C++

Với mỗi nền phần cứng (kiến trúc máy — mã máy) khác nhau, có một trình biên dịch khác nhau để biên dịch mã nguồn chương trình cho phù hợp với nền phần cứng ấy. Do vậy, khi chạy trên một nền phần cứng hay hệ điều hành khác thì bắt buộc phải biên dịch lại, nghĩa là tất cả các chương trình viết bằng ngôn ngữ lập trình truyền thống đều phụ thuộc vào môi trường mà chúng được biên dịch.Công nghệ mạng I n t e r n e t phát triền mạnh mẽ đã cung cấp nhiều dịch vụ tiện lợi cho nhiều ứng dụng khác nhau trên các nền (phần cứng, hệ điều hành, chương trình tiện ích) rất khác nhau, nhất là các ứng dụng trên mạng của công nghệ Web. Điều mà người dùng muốn nhất hiện nay là cần có một ngôn ngữ lập trình thật mạnh để khắc phục những nhược điểm nêu trên, đặc biệt đề phát triển được dễ dàng các ứng dụng với Web trên mạng. J a v a là một trong những ngôn ngũ được thiết kế để đưa được các yếu tố lập trình lên mạng và kết hợp với Web.J a v a vượt qua được các nhược điểm trên bàng cách dịch các chương trình nguồn sang ngôn ngữ cùa máy ào không phụ thuộc vào phần cứng và hệ lệnh cụ thể nào cà: sau đó khi cần thực hiện, nó sẽ được thông dịch sang hệ máy cụ thể như trong hình ] .2 .

Kết quả cùa chương trình dịch là chuỗi các b y t e c o d e cơ sờ bao gồm các mã lệnh thực hiện (O pcode) và các tham số của máy lý thuyết (máy ảo) là máy ào J a v a (JVM - J a v a V i r t u a l M a ch in e ).

9

Page 9: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java

Chương trinh nguon

(Source Codes)

Các mã byte (Byte Codés)

Tệp các lớp (.class)Dịch (Compiler)

Kiểm tra các Byte CodesTệ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 (Hardware and OS)

Mã thực hiện (.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 te co 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 lo í ío r ld A p p khi thực hiện thì hiển thị thông báo " H e l lo W orld", đượ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 ram

HellcMorldApp J » v » ----------------------̂ -----------1-----------̂ -----------------------(krtarpiela ì (lirterpreter J (lirteipi Htur )

- ✓ ♦

™ Í J Ì B l Ẹ P I__wầầJL J» — ì2 m k LW in 3 2 S o l a r i s M a c O 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

Page 10: MỤC LỤCtailieudientu.lrc.tnu.edu.vn/Upload/Collection/brief/... · 2018. 8. 10. · " Viết (code) một lần, thực thi ở mọi nơi" ("Write Once, Run Anywhere"). Java

d) Mạrh mẽ và đảm bảo an toànJ 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.

■ Cava 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 to 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 co 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 rb 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.