1. Trang chủ
  2. » Giáo án - Bài giảng

Giáo trình lập trình java

36 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo Trình Lập Trình Java
Tác giả Đoàn Văn Ban, Đoàn Văn Trung
Trường học Công Nghệ & Kinh Tế Hà Nội
Chuyên ngành Lập Trình Java
Thể loại giáo trình
Năm xuất bản 2011
Thành phố Hà Nội
Định dạng
Số trang 36
Dung lượng 1,74 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

com phát triển từ đầu 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 đốt tượng được ưa chuông nhất trong Công nghệ thông ỉ ìn nhờ một sô đặc điếm rất

Trang 1

ĐOÀN VĂN BAN - ĐOÀN VĂN TRUNG

Trang 2

ĐOÀN VĂN BAN - ĐOÀN VĂN TRUNG

Trang 3

Công ty cổ phẩn Sách Đại học - Dạy nghề, Nhà xuất bản Giáo dục Việt Nam giữ quyền công bõ' tác phẩm _

Trang 4

M ỤC LỤC

LỜI NÓI ĐẦU 5

Chương 1 NHẬP MÔN LẬP TRÌNH JAVA 1.1 Giới thiệu về ngốn ngữ lập trình Java 7

1.2 Máy ảo Java (JVM) ' 13

1.3 Bộ công cụ phát triển JDK (Java Development Kit) 15

1.4 Các loại chương trình Java 16

BÀ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 28

2.2 Các lớp đối tượng 32

2.3 Các kiểu dữ liệu 39

2.4 Các phép toán trong Java 43

2.5 Cấu trúc điều khiển A 50

2.6 Xử lý ngoại lệ 62

BÀI TẬP 69

Chương 3 HƯỚNG ĐỐI TƯỢNG TRONG JAVA 3.1 Giới thiệu 72

3.2 Lớp (class) các đồi tượng 72

3.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 80

3.4 Truyền tham sổ cho các lời gọi h à m 97

3.5 Các tham sổ của chương trình 102

3.6 Phương thức tạo lập đối tượng 102

3.7 Sự kết thúc của đối tư ợ ng 108

3.8 Hàm đệ q u y 110

3.9 Quan hệ kế thừa giữa các lớ p 112

3.10 Đa xạ và nạp chồng 120

3.11 Giao diện và sự mở rộng quan hệ kế thừa trong Java 126

BÀI TẬP ! 130

Chương 4 CÁC LỚP C ơ BẲN VÀ CẤU TRÚC DỮ LIỆU 4.1 Cấu trúc mảng trong Java 134

4.2 Các lớp cơ bản của Java 141

4.3 Cấu trúc tuyển tập đối tư ợ ng 163

4.4 Các cấu trúc dữ liệu động 177

BÀI TẬP 186

Trang 5

Chương 5

APPLET VÀ LẬP TRÌNH Đ ồ HOẠ

5.1 Lập trinh applet 189

5.2 Các thành phần của A W T 194

5.3 Các lớp xử lý đồ hoạ 202

5.4 Chọn mode để vẽ đồ hoạ 220

5.5 Xử lý hình ảnh và âm thanh 223

5.6 Bố trí sẳp xếp các thành phần trong chương trinh ứng dụng 226

5.7 Xử lý các sự kiện 231

BÀ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 248

6.2 Gói java.io 249

6.3 Lập F ile 253

6.4 Các lớp xử lý tệp 258

6.5 Truy nhập tệp ngẫu nhiên 269

6.6 Truy nhập tệp tuần tự theo đối tư ợ ng 270

BÀI TẬP 283

Chương 7 LẬP TRÌNH C ơ SỞ DƯ LIỆU VỞI JDBC 7.1 Giới thiệu 285

7 2 O DBC.’ 285

7.3 JD B C 286

7.4 Các lớp và giao diện của JDBC API 289

7.5 Kết nối cơ sở dữ liệu qua JD B C 290

7.6 Kiểu dữ liệu SQL vả JAVA 294

7.7 Chương trình ứng dụng JDBC 295

BÀ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 tin 308

8.2 Bộ nạp lớp và kiểm tra byte code 310

8.3 Lớp SecurityManager vả Permission 317

8.4 Vấn đề bảo mật trong gói java.security 330

8.5 Vấn đề chứng thự c 340

BÀI TẬP 353

TÀI LIỆU THAM KHẢO 354

4

Trang 6

J2òí n ói đau

Ngôn ngữ lập trình J a v a do S u n ( h t t p ĩ / / j a v a s u n com) phát triển từ đầu 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 đốt tượng được ưa chuông nhất trong Công nghệ thông ỉ ìn nhờ một sô đặc điếm rất p hù hợp cho công nghệ mạng I n t e r n e t ,

hiện đã và đang được dùng phổ biến trên toàn thế giới nhằm đáp ứng các yêu cầu phớt triển các ứng dụng trên mạng ( W eb-baseđ '), phục vụ cho nhiều người sử dụng với những môi trường thực hiện ( p l a t f o r m ) nền khác nhau

hưởng đổi tượng và kế thừa, sử dụng lại; được nâng cap 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 giống với C++, một ngôn ngừ lập trình hướng đoi tượng m ở rộng của c nhưng loại đi một so 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ữrtg lược đo dữ liệu dạng đo thị và lờ nguyên nhân chính gây ra

sự phức tạp (rong hệ thông VCỈ không đảm báo tỉnh nhẩt quán, tính đúng đắn trong quan hệ của hệ thong thông tin J a v a cũng không cho phép thao tác so học trên kiêu con (rỏ vì đây là nguôn gôc của những "con bọ" rất khó phái hiện khi biên dịch, khi thực hiện chương trình, Mịtc đí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 nhằm tạo ra những phan 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 ỉ giới thiệu những đặc trưng noi trội của J a v a và 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

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 let cơ chế xử lý ngoại ỉệ ho trợ đế tạo ra 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 tượng, phân lích cách sử dụng cơ chế đóng gói, che giấu thông tin, tinh đa xạ và các moi quan hệ, đặc biệt let quan hệ kế thừa giữa các lớp đổi tượng Chương 4 để cập đến một sổ

Trang 7

ỉởp cơ sở nhất cửa J a v a và các kiểu cẩu trúc dữ liệu p h ổ 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 hoạ đượ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 Chirơng 7 trình bày vẩn để kết nổi các cơ sở dữ liệu với JDBC nhăm tạo ra những hệ thong phần mềm tích hợp từ nhiều loại hệ thong 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ã RSA đề đả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 tác giả trong nhiều năm tạ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 Đà iVang, Đạ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 ve Lập trình J a v a , ngoài ra nó có thể sử dụng làm tài liệu học tập về Lập trình hưởng đôi tượng ccm 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 tâm đến phương pháp lập trình hướng đoi tượng đê phớt triển những ứng dụng độc ỉập với môi trường, hay để xây dựtĩg các Web s i t e trên mạng.

Các tác giả bày tỏ lỏng biết ơn chân thành tới các bạn đong nghiệp ở các đơn vị đào tạo kê trên và Phòng Các hệ thong 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 chỉnh nội dung giảo trình.

M ặc dù CO gang rat 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 tot hơn Thư góp ý xin gửi về Công ty Co phần Sách Đại học - Dạy nghề, Nhà xuất bản Giáo dục Việt Nam, 25 Hàn Thuyên, Hà Nội.

Xin chân thành cảm on!

CÁC TÁC GIẢ

6

Trang 8

C h ư ơ n g 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 trình J a v a :

■ Các đặc trưng nỗi bật của ngôn ngữ lập trình J a v a

■ Các loại chương trình của J a v a

■ Máy ảo J a v a ( J a v a V i r t u a l M a c h i n e )

■ Môi trường phát triển chương trình JDK ( J a v a D e v e l o p m e n t K i t )

1.1 Giới thiệu về ngôn ngữ lập trình 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 i n 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à Oak (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, Run 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) dể chuyển thành dạng

B y te Code 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 ach 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 trình 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 u n S o l a r i s , L in u x Mac OS, FreeB SD ,

W indow 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 la 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ô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 J a v a không chỉ 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 trinh đ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 trình J a v a là:

■ Đơn giản, thân thiện;

■ Hướng đối tượng;

Trang 9

a) Đơn giản, thân thiện

Nhữ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 đon 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ợ định 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ưọìig

Cá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 (Obj e c t - O r i e 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 đối tượng, trong 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 l a 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 trung (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 i d 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

Trang 10

Tất cả 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 trình 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 thong như B a s i c , P a s c a l , C/C+ + , phưong pháp biên dịch được thực hiện như hình 1.1

Hình 1.1 Chu trình 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 trinh 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ưong 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 1.2

Ket 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áv ảo J a v a (JVM - J a v a V i r t u a l M ach in e )

Trang 11

Hình 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à trỉnh thông dịch Không như C/C++, trinh 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ó trinh 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 đã 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 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 dụ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 llo W o rld A p p khi thực hiện thì hiển thị thông báo " H e llo 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,

Trang 12

d) Mạnh mẽ và đảm bảo an toàn

J a v a là ngôn ngữ kiểm soát chặt chẽ về các 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, J a v a kiểm tra lúc 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 một số loại lỗi thường xảy ra trong lập trình

■ J a v a 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

O 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 chỉ như trong các ngôn ngữ truyền thống mà là thông qua tên gọi (định 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 ràng 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 , ỉậ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á trình xử lý lỗi và phục hồi sau lỗi

Mặt khác, 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 chi 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 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 xưẩt thông qua các giao diện mà lóp cung cap J a v a 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à 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, trinh 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ớ đe 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

Trang 13

e) Lập trình mạng, phân tán

J a v a có thể dùng để xây dựng cóc ứng dụng cho phép làm việc trên nhiều phần cứng, hệ điều hành và giao diện đồ hoạ khác nhau J a v a được thiết kế hô trợ cho các ứng dụng chạy trên mạng ( j a v a n e t ) Vì vậy, chúng được sử dụng rộng rài như là công cụ phát triển trên I n t e r n e t , nơi sử dụng nhiều nền tảng khác nhau

■ J a v a được thiết kế để hồ trợ các ứng dụng chạy trên mạng bằng các lớp mạng trong gói j a v a n e t

■ J a v a hỗ trợ nhiều nền chạy khác nhau, nên chúng đưọc sử dụng rộng rãi như là công cụ phát triển trên I n t e r n e t , nơi sử dụng nhiều nền khác nhau

để tạo ra các trang web động

■ Một đặc trưng chính của J a v a là khả năng nạp xuống (d o w n lo a d e d ) theo yêu cầu và thực hiện chương trình ứng dụng trên các máy khách Do vậy, các chương trình (hệ thống) J a v a tương đối gọn nhẹ và linh hoạt

■ Với J a v a , Web được bố sung thêm sự liên kết giữa các mẩu dữ liệu liên quan đế biến đổi những dữ liệu thô thành những thông tin

■ J a v a hồ trợ mạnh mẽ đối với việc phát triển các ứng dụng Web thông qua công nghệ J2E E ( J a v a 2 E n t e r p r i s e E d i t i o n ) Công nghệ J2EE hoàn toàn có thể tạo ra các ứng dụng Web một cách hiệu quả không thua kém công nghệ NET cúa M i c r o s f t

í) Thực hiện đa luồng

■ J a v a đáp ứng được tiêu chuẩn đa luồng vì: Thứ nhất, nó cung cấp các lóp

có thể thực hiện như là các luồng được điều khiến riêng biệt; thứ hai, J a v a

tự thực hiện được sự kết hợp giữa các phần dị bộ trong các luồng với nhau

* Chương trình J a v a đa luồng ( M u l t i t h r e a d i n g ) đê 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 luồng này cho phép xây dựng các ứng dụng trên mạng, trẽn nhũng máy nhiều lõi ( c o r e ) rất hiệu quả

■ Web là môi trường mà ở đó có nhiều sự kiện có thể xảy ra đồng thời Ngôn ngữ sử dụng để lập trình Web phải hỗ trợ cho phép nhiều sự kiện dề dàng có thể thực hiện cùng một lúc, J a v a rất phù hợp để xử lý các sự kiện

■ Ngoài ra, S un còn đưa ra công nghệ J2ME ( J a v a 2 M ic ro E d i t i o n ) hỗ trợ phát triển các chương trình, phần mềm nhúng J2ME cung cấp một môi trường cho những chương trình ứng dụng có thể chạy được trên các thiết bị

cá nhân như: điện thoại di động, máy tính bỏ túi PDA hay Palm , cũng như các thiết bị nhúng khác

Trang 14

trình ứng dụng độc lập của J a v a giống như các chương trình của những ngôn ngữ lập trình truyền thống ( c / c++) là quá trình bắt đầu, thực hiện và kểt thúc diễn ra trong hàm m a in (), nhưng trong J a v a chỉ có một cách viết duy nhất (được chuẩn hoá) là:

p u b l i c s t a t i c v o i d m a in ( s t r i n g [] a r g s ) {

// Nội dung công việc cần thực hiện}

1.2 Máy ảo Java (JVM)

Tất cả các chương trình muốn thực thi được trên máy tính thỉ phải được biên dịch

ra mã máy Mã máy của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU I n t e l , CPU S o l a r i s , CPU M a c in to s h , là khác nhau) Vì vậy, trước đây một chương trinh sau khi được biên dịch xong chỉ có thể chạy được trên một kiến trúc CPU cụ thể nào đó Đối với CPU I n t e l ta có thể chạy các hệ điều hành như M i c r o s o f t Windows, U nix, L in u x , o s /2 ,

Chương trình thực thi được trên W indows được biên dịch dưới dạng f i l e có đuôi EXE, còn trên L in u x thi được biên dịch dưới dạng f i l e có đuôi ELF Vì vậy, trước đây một chương trình chạy được trên W indows muốn chạy được trên

hệ điều hành khác như L in u x chẳng hạn, thi phải chỉnh sửa và biên dịch lại.Ngôn ngữ lập trình J a v a ra đòi, nhờ vào máy ào J a v a JVM mà khó khăn nêu trên

đã đưọc khắc phục Một chương trình viết bàng ngôn ngữ lập trình J a v a (tệp j a v a ) sẽ được biên dịch ra mã của máy ảo J a v a (B y te c o d e ) thành các tệp c l a s s Sau đó máy ảo J a v a JVM chịu trách nhiệm chuyển mã b y t e c o d e ( c l a s s ) thành mã máy tương ứng (.e x e ) để thực thi được ở mọi nơi Sun

M ic r o s y s te m chịu trách nhiệm phát triển các máy ảo J a v a chạy trẽn các hệ điều hành và trên các kiển trúc CPU khác nhau

Khả năng cơ động của f i l e c l a s s (mã b y t e c o d e ) cho phép các chương trình

J a v a viết một lần, nhưng chạy ở bat kỳ đâu Khả năng này có được nhờ sự giúp

đỡ của máy ảo J a v a Cũng chính nhờ cơ chế dịch thành mã trung gian b y t e

c o d e ( c l a s s ) mà tệp ( f i l e ) này có thể dịch ngược (D e c o m p ile ) để thu lại được chương trình nguồn ( ja v a )

1.2.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

l o g i c đê 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ã lệnh đã biên dịch

Trinh biên dịch chuyến mã nguồn thành lập các lệnh của máy ảo (B y te c o d e ) 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ưong 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 bang cách:

Trang 15

Khi JVM thực thi mã b y t e c o d e ( c l a s s ) , một thanh ghi cục bộ có tên

" P ro g ra m C o u n te r " đượ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 sẽ được nối tiếp nhau thực thi

Một khái niệm thông dụng khác trong J a v a là trình biên dịch " J u s t I n Time -

J IT " Các trình duyệt Web thông dụng như N e ts c a p e , IE, F i r e f o x hay Chrom e, đều có J I T bên trong để tăng tốc độ thực thi chương trinh J a v a Mục đích chính của J I T là chuyển tập lệnh b y t e c o d e 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ỗì khi được gọi đến,

1.2.2 Quán lý bộ nhó’ và dọn rác

Trong C/C++ hay P a s c a l , người lập trình thường sử dụng phương pháp trực tiếp

dể cấp phát và thu hồi bộ nhớ "Heap" H eap là vùng bộ nhớ lớn được phân chia cho tất cả các luồng thực hiện

Đẻ quản lý bộ nhớ H eap, bộ nhớ được theo dõi qua các danh sách:

■ 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 bộ nhớ Heap

Kỹ thuật kết hợp lại ( C o a l e s c i n g ) nhằm giảm thiểu việc phân mảnh cua bộ nhớ

H eap 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 hon Còn kỹ thuật sắp xếp lại các phần bộ nhớ đã dùng để tạo vùng nhớ chưa sử dụng lớn hơn gọỉ là kỹ thuật nén (C o m p a c tio n )

J a v a sử dụng hai bộ nhó' H eap riêng biệt cho cấp phát vùng nhớ tĩnh và vùng nhớ động Một bộ nhớ H eap tĩnh chứa các định nghĩa về lớp, các hằng và danh sách các phưong thức Bộ nhớ H eap còn lại (H eap độ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ứa con trỏ tham chiếu đến đối tượng đỏ

H a n d le là cấu trúc bao gồm hai con trỏ Một con trỏ 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ú ý rang khi

" c o m p a c tio n " cần, nó cập nhật lại giá trị con trỏ của cấu trúc h a n d l e

14

Trang 16

Thuật toán "dọn rác" có thể áp dụng cho các đối tượng đặt trong H eap động Khi

có yêu câu về bộ nhớ, trình quản lý bộ nhớ H eap trước tiên kiểm tra danh sách bộ nhớ chưa cấp phát Neu 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ệ thong 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 f i n a l i z e {} 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 f i l e đang mở

1.2.3 Quá trình kiểm tra file class

Việc kiểm tra được áp dụng cho tất cả các f i l e c l a s s sắp được nạp lên bộ nhớ

để đảm bảo tính an toàn thông tin Trình " C la s s L o a d e r" sẽ kiểm tra tất cả các

f i l e c l a s s 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 f i l e c l a s s có nguy cơ gây hư hỏng đển bộ nhớ, hệ thống f i l e cục bộ, mạng hoặc hệ điều hành Ọuá trình kiểm tra sẽ xem xét tổng thể tính nguyên vẹn của từng lớp

■ Bảng M eth o d chửa các hàm (phương thức) của lớp;

■ Bảng I n t e r f a c e chứa các nguyên mẫu hàm và các hằng số

Quá trình kiểm tra f i l e c l a s s đượ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 f i l e c l a s s được nạp

■ Mức thứ hai, xem xét f i l e c l a s s để đảm bảo các f i l e 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, kiểm tra b y t e c o d e 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ứ lư, 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 ket 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 thoả mãn, lóp sẽ được khới tạo

1.3 Bộ công cụ phát triển JDK (Java Development Kit)

J a v a D e v e lo p m e n t K i t (JDK - Bộ công cụ cho người phát triển ứng dụng bàng ngôn ngũ' lập trỉnh J a v a ) là một tập họp nhũng công cụ phần mềm được phát

Trang 17

triển bởi S un M ic r o s y s te m s dành cho các nhà phát triển phần mềm, dùng để viết những J a v a A p p l e t hay những ứng dụng J a v a Bộ công cụ này được phát hành miễn phí gồm có trình biên dịch, trình thông dịch, trình giúp sửa lỗi ( d e b u g g e r ) , trình chạy a p p l e t và tài liệu nghiên cứu,

JDK bao gồm J a v a P lu g - I n , chúng cho phép chạy trực tiếp J a v a A p p l e t hay J a v a B e a n 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 Bộ JDK do S un cung cấp theo Web s i t e :

Hiện nay có nhiều môi trường phát triển phần mềm với J a v a như: E c l i p s e (mã nguồn mở), J C r e a t o r , N e tB e a n , v i s u a l J++, S y m a t e c ' s C a fe ,

B o r l a n d J B u i l d e r ,

Các chương trình của giáo trình này được phát triên và thực hiện với J c r e a t o r

Bộ JDK cung cấp các công cụ và các chương trình sau:

■ j a v a c Trình dịch chuyển mã nguồn sang mã b y t e c o d e

* j a v a Trình thông dịch, nó thực thi các ứng dụng độc ỉập, các tệp tin

Bộ gỡ lỗi ( j a v a d e b u g e r ) cho phép thực hiện từng dòng lệnh, đặt điểm dừng, xem giá trị của các biến,

Bộ tạo lập h e a d e r của c và cho phép chương trình c gọi các phương thức (hàm) của J a v a và ngược lại

Trình dịch ngược A s s e m b l e r , hiển thị các phương thức, dữ liệu truy nhập được bên trong cúa tệp tin c l a s s đã được dịch

và hiển thị nghĩa ciia b y t e c o d e

1.4 Các loại chương trình Java

J a v a hồ trợ để phát triển ba loại chương trình ứng dụng:

Trang 18

Chương trình ứng dụng độc lập là loại chương trình giống như các chương trình của các ngôn ngữ truyền thống, chúng thực thi mà không cần sự hỗ trợ của các phần mềm khác Chương trình ứng dụng độc lập bắt đầu thực hiện và kết thúc công việc đều thực thi ở hàm m a in {) giống như trong chương trình c / C+ + Đặc trưng chính của chương trình ứng dụng độc lập là:

■ Mọi chương trình ứng dụng độc ỉập dều được tạo ra từ các lớp ( c l a s s )

* Một lớp ( c l a s s ) giống như cấu trúc ( s t r u c t ) trong C/C++, nhưng khác

ở chô là c l a s s định nghĩa gộp chung các phương thức xử lý trên dữ liệu trong một đơn vị

* Để tạo ra một chưong trình ứng dụng độc lập trong J a v a , người lập trinh phải định nghĩa một lớp có chứa hàm m a in ()

" Các mã lệnh trong m a in () sẽ được thực hiện khi chương trình bắt đầu thực thi

Quá trình phát triển chương trình ứng dụng độc J a v a với SDK ( S o f tw a r e

Quá trình trên được mô tả như hình 1.4

1.4.1 Chưoìig trình ửng dụng độc lập

Hình 1.4, Quá trình phát triển chương trình với SDK

Sau đây là một chương trình đơn giản đầu tiên hiển thị một thông báo lên màn hình

Ngày đăng: 12/10/2022, 18:23

HÌNH ẢNH LIÊN QUAN

Hình  1.1.  Chu trình phát triển và thực  hiện của chương trình  C/C++ - Giáo trình lập trình java
nh 1.1. Chu trình phát triển và thực hiện của chương trình C/C++ (Trang 10)
Hình  1.2  Chu trình phát triền và thực  hiện của chương trình Java - Giáo trình lập trình java
nh 1.2 Chu trình phát triền và thực hiện của chương trình Java (Trang 11)
Hình  1.4,  Quá trình  phát triển chương trình với  SDK - Giáo trình lập trình java
nh 1.4, Quá trình phát triển chương trình với SDK (Trang 18)
Hình  1.5.  Quá trinh  phát triển  chương trinh Java  applet với  SDK - Giáo trình lập trình java
nh 1.5. Quá trinh phát triển chương trinh Java applet với SDK (Trang 22)
Hình  1.7.  Chu  trình sống của  một applet - Giáo trình lập trình java
nh 1.7. Chu trình sống của một applet (Trang 24)
Hình  1.6.  Kết quà thực  hiện của  chương trình  Prog2 - Giáo trình lập trình java
nh 1.6. Kết quà thực hiện của chương trình Prog2 (Trang 24)
Bảng 1.z Các chương trình  ứng  dụng  độc lập và Applet - Giáo trình lập trình java
Bảng 1.z Các chương trình ứng dụng độc lập và Applet (Trang 27)
Hình 2.1.  Cấu trúc tổng quát của chương trình Java - Giáo trình lập trình java
Hình 2.1. Cấu trúc tổng quát của chương trình Java (Trang 29)
Hình 2.2. Kểt quả  chương trình TrungBínhCong - Giáo trình lập trình java
Hình 2.2. Kểt quả chương trình TrungBínhCong (Trang 34)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN