TS LÝ ANH TUẤN TS LÊ NGUYỄN TUẤN THÀNH BÀI GIẢNG LẬP TRÌNH JAVA NHÃ XUẤT BẢN BÁCH KHOA HÀ NỘI Biên mục trên xuất bản phẩm của Thư viện Quốc gia Việt Nam Lý Anh Tuấn Bài giảng lập trình Java / Lý Anh T[.]
Trang 1TS LÝ ANH TUẤN - TS LÊ NGUYỄN TUẤN THÀNH
LẬP TRÌNH JAVA
Trang 2Biên mục trên xuất bản phẩm của Thư viện Quốc gia Việt Nam
Trang 3LỜI NÓI ĐÀU
Vào cuối năm 1995, ngôn ngữ lập trình Java đã bùng nổ trên Internet và lập tức trở nên nổi tiếng Lời hứa của công nghệ Java là nó sẽ trờ thành chất kết dính phổ biến kết nối người dùng với thông tin đến từ bất cứ nơi nào như từ các máy chủ web, cơ sở dữ liệu, nhà cung cấp thông tin hoặc bất kỳ nguồn nào khác Thật vậy, Java ờ một vị trí độc tôn đế thực hiện lời hứa này
Java là ngôn ngữ được thiết kế cực kỳ vững chắc đã được tất cả các nhà cung cấp lớn chấp nhận, ngoại trừ Microsoft Các tính năng bảo mật và an toàn có sẵn của nó đem đến
sự yên tâm cho cả người lập trình lẫn người dùng chương trình Java Java thậm chí còn có
hỗ trợ tích họp các tác vụ lập trình nâng cao, chang hạn như lập trình mạng, kết nối cơ sở
dữ liệu và đa luồng
Kể từ năm 1995, mười bốn phiên bản chính của Bộ công cụ phát triển Java (Java Development Kit) đã được phát hành Trong suốt 24 năm qua, giao diện lập trình ứng dụng (API) đã phát triến từ khoảng 200 lên đến hơn 4.000 lớp API hiện mở rộng nhiều lĩnh vực như xây dựng giao diện người dùng, quản lý cơ sờ dữ liệu, quốc tế hóa, bảo mật và xử lý XML
Ở Việt Nam, hiện ngôn ngữ lập trình, công nghệ Java được đưa vào giảng dạy ờ một
số trường đại học và các cơ sở đào tạo lập trình viên chuyên nghiệp Sau một thời gian tìm hiếu, làm việc và được tham gia giảng dạy lập trình Java, nhóm tác giả quyết định biên soạn cuốn “Bài giăng Lập trình Java” nhằm phục vụ công tác giảng dạy cũng như học tập của sinh viên chuyên ngành công nghệ thông tin
Nội dung cuốn bài giảng tập trung vào những kiến thức căn bản nhất của lập trình Java, giúp người đọc bước đầu tiếp cập dễ dàng với công nghệ mới này, đây cũng chính là một bước đệm giúp chúng ta trở thành một lập trình viên Java chuyên nghiệp Ngoài ra, cuốn bài giảng cũng bao gồm một số chủ đề nâng cao như lập trình cơ sở dữ liệu, lập trình mạng, lập trình đồng thời Đe có thê đọc hiếu cuốn bài giảng này, người đọc cần nắm vững các kiến thức về: nhập môn lập trình, lập trình hướng đối tượng
Đây là lần xuất bản đầu tiên của cuốn bài giảng nên dù nhóm tác giả đã rất cố gắng, nhưng chắc chắn vẫn không tránh khỏi những thiếu sót nhất định Nhóm tác giả rất mong nhận được những ý kiến đóng góp của các thầy cô, các đồng nghiệp và bạn đọc để có thể tiếp tục hoàn thiện cuốn bài giảng này nhằm phục vụ tốt hơn cho việc học tập của sinh viên.Cấu trúc cuốn bài giảng bao gồm:
Chương 1 - Các khái niệm cơ bản.
Chương mở đầu này sẽ giới thiệu chung về Java Bạn sẽ tìm thấy ở chương này
Trang 4dịch và thông dịch Java sẽ được nói ở đây Chương này cũng giới thiệu các thành phần cơ
sở của ngôn ngữ Java với các khái niệm cấu trúc chương trình, biến, hằng, kiểu dữ liệu, các toán tử và cách xuất nhập dữ liệu đế từ đó xây dựng cho mình một ứng dụng cơ bản dựa trên Java
Chương 2 - Điều khiến luồng và xử lý ngoại lệ.
Giống như hầu hết các ngôn ngữ lập trình, Java quản lý điều khiển luồng với các câu lệnh rẽ nhánh và lặp Các câu lệnh rẽ nhánh và lặp trong Java tương tự các câu lệnh rẽ nhánh và lặp trong các ngôn ngữ khác Chúng rất giống với các câu lệnh tương ứng trong ngôn ngữ c và C++ Quản lý ngoại lệ cũng là một cách để quản lý điều khiển luồng Bạn
có thể sử dụng các tiện ích xử lý ngoại lệ của Java để thêm vào các mã lệnh cho các trường họp bất thường sau khi viết xong chương trình hoặc để xử lý các tình huống lỗi khi thực thi chương trình
Chương 3 - Lập trình hướng đoi tượng.
Chương này trình bày các kỹ thuật lập trình hướng đối tượng dựa trên ngôn ngữ lập trình Java: Khai báo lóp, các thuộc tính, các phương thức của lóp; kỹ thuật kế thừa, các lớp trừu tượng, cài đặt nạp chồng và đa hình trên Java Cách khai báo và sử dụng giao diện, lóp trong và gói cũng được trình bày ờ chương này Nội dung được nhấn mạnh là các kỹ thuật duy tri các đặc điểm quan trọng của lập trình hướng đối tượng như tính đóng gói, tính
kế thừa, tính đa hình, với các ví dụ minh họa cụ thế ờ cuối chương
Như với hầu hết các ngôn ngữ lập trình, xâu ký tự được sử dụng rộng rãi trong Java,
do đó, API Java có khá nhiều chức năng để giúp bạn thao tác các xâu ký tự Các lóp giúp
xử lý xâu bao gồm java.lang.String, java.lang.StringBuffer, java.util.StringTokenizer sẽ được mô tả trong chương này
Java còn cung cấp một số lớp tiện ích giúp bạn quản lý một tập hợp các đối tượng (Collection) Các lóp tập hợp này cho phép bạn làm việc với các đối tượng mà không cần quan tâm đến kiểu của chúng, vì vậy chúng có thể cực kỳ hữu ích để quản lý các đối tượng
ở mức độ trừu tượng cao Chương này sẽ mô tả các các giao diện, lóp tập hợp trong cấu trúc phân cap Collection trong Java
Trang 5Chương 5 - Thao tác với tệp.
Trong chưong này chúng ta sẽ tìm hiếu về luồng (stream) và cách dùng luồng đế xử
lý tập tin cũng như dữ liệu Luồng là một khái niệm tuy không mới nhưng đã được Java đưa vào sử dụng gắn liền với bản thân ngôn ngữ, nó thực hiện các thao tác xuất nhập một cách trừu tượng hóa ờ mức dữ liệu Luồng được sử dụng rất nhiều trong các chưong trình ứng dụng Java nhất là các chưong trình truy xuất mạng và tập tin trên đĩa Hiểu được luồng
và cách hoạt động của luồng sẽ giúp ta tiến sâu hơn nữa vào thế giới của Java
Chương 6 - Lập trình giao diện đồ họa.
Chương này giới thiệu cách viết một chương trình Java sử dụng giao diện đồ họa người dùng (GUI - Graphical User Interface) Trước hết, chúng tôi trình bày cách viết chương trình cho phép thiết lập kích cỡ và vị trí cửa số trên màn hình, hiến thị văn bản với nhiều font chữ trong một cửa sổ, hiển thị hình ảnh, Sau đó chúng tôi trình bày cách để xử
lý các sự kiện như keystrokes và nhấp chuột, cách để thêm các thành phần giao diện như menu, nút bam (button) vào trong các ứng dụng Khi bạn đọc xong chương này, bạn sẽ nắm được những thành phần cốt yếu để viết một ứng dụng đồ họa
Chương 7 - Kết nối và xử lý cơ sở dữ liệu.
Java JDBC là một Java API để kết nối và thực thi truy vấn với cơ sờ dữ liệu JDBC API sử dụng các trình điều khiển JDBC (JDBC Driver) để kết nối với cơ sở dữ liệu JDBC làm việc với Java trên nhiều nền tảng đa dạng như Windows, Mac OS, Unix,
Chương này giới thiệu về Java JDBC và cung cấp đầy đủ các khái niệm và các kiến thức cơ bản về Java JDBC cho các lập trình viên Java mong muốn tìm hiểu ve JDBC Framework cũng như cách sử dụng của nó
Chương 8 — Lập trình mạng.
Với chương này bạn sẽ làm quen và tìm hiểu cách lập trình trên mạng bằng ngôn ngữ Java Java cung cấp các lóp Socket, ServerSocket, DatagramSocket, đủ mạnh để thiết kế bất kỳ ứng dụng nào theo mô hình khách/chủ (client/server) Kết thúc chương này bạn sẽ
tự xây dựng được những ứng dụng cơ bản và thông dụng nhất hiện nay như trao đối dữ liệu, truy cập các máy chủ từ xa, cách đọc và xử lý các trang Web trên mạng Internet
Chương 9 - Lập trình đồng thời.
Các ứng dụng chạy đa luồng đem lại rất nhiều lợi ích, giúp tận dụng được các CPU
đa nhân đế phân công cho mồi nhân một luồng xử lý nhằm tăng tốc độ tính toán của bài toán Hay hiện tại, trong một số ứng dụng sử dụng GPU (Bộ xử lý đồ họa) đế tính toán hiệu năng cao dựa vào số nhân vô cùng lớn của GPU Chương này sẽ trình bày cách thêm khả năng đa luồng vào các ứng dụng Java
Các tác giả
Trang 7MỤC LỤC
LỜI NÓI ĐÀU 3
Chương 1 CÁC KHÁI NIỆM co BẢN 15
1.1 Giới thiệu ngôn ngũ’ Java 15
1.1.1 Java là gì 15
1.1.2 Các đặc trưng cơ bản của Java 16
1.1.3 Các kiểu ứng dụng Java 18
1.1.4 Máy ảo Java (JVM - Java Virtual Machine) 19
1.2 Môi trường lập trình Java 20
1.2.1 Cài đặt JDK 21
1.2.2 cấu trúc thư mục của JDK 22
1.2.3 Kiểm tra cài đặt JDK 24
1.2.4 Cài đặt JDK9 24
1.2.5 Thiết lập các biến môi trường 26
1.2.6 Biên dịch và thực thi Java bang Command Prompt 28
1.2.7 Giới thiệu về công cụ JSell 29
1.2.8 Cài đặt công cụ phát triển 29
1.3 Các thành phần cơ sở của Java 36
1.3.1 Kiến trúc chương trình Java 36
1.3.2 Chương trình Java đầu tiên 39
1.3.3 Kiểu dữ liệu 41
1.3.4 Biến 43
1.3.5 Các toán tử 45
1.3.6 Các hàm toán học 50
1.3.7 Xuất nhập dữ liệu trên console 53
Bài tập 57
Trang 8Chương 2 ĐIỀU KHIÉN LUỒNG VÀ xử LÝ NGOẠI LỆ 59
2.1 Các cấu trúc rẽ nhánh 59
2.1.1 Lệnh if-else 59
2.1.2 Lệnh switch 61
2.2 Các cấu trúc lặp 63
2.2.1 Vòng lặp while 63
2.2.2 Vòng lập do-while 65
2.2.3 Vòng lặp for 66
2.2.4 Các lệnh break và continue 68
2.3 Xử lý ngoại lệ 71
2.3.1 Mục đích của việc xử lý ngoại lệ 71
2.3.2 Mô hình xử lý ngoại lệ 71
2.3.3 Đặc tả ngoại lệ 72
2.3.4 Ném ra ngoại lệ 72
2.3.5 Bắt ngoại lệ 73
2.3.6 Khối finally 76
2.3.7 Một số lóp ngoại lệ chuẩn của Java 78
Bài tập 79
Chương 3 LẬP TRÌNH HƯỚNG ĐỔI TƯỢNG 81
3.1 Lóp 81
3.1.1 Khai báo/định nghĩa lóp 81
3.1.2 Sử dụng lóp 82
3.1.3 Khai báo thuộc tính của lớp 82
3.1.4 Khai báo và sử dụng phương thức của lớp 83
3.1.5 Phương thức khời tạo của lớp 85
3.1.6 Biến this 87
3.1.7 Khai báo chồng phương thức 87
3.1.8 Các thành phần tĩnh 88
3.1.9 Phương thức fínalize() 90
3.2 Đặc điểm hướng đối tượng trong Java 91
Trang 93.2.2 Lóp trừu tượng 95
3.2.3 Đa hình 99
3.3 Giao diện, lóp trong, gói 102
3.3.1 Giao diện (interface) 102
3.3.2 Lóp trong 105
3.3.3 Gói 107
3.4 Ví dụ minh họa 112
3.4.1 Ví dụ 1 112
3.4.2 Ví dụ 2 119
Bài tập 122
Chương 4 MẢNG, XÂU KỶ Tự VÀ TẬP HỢP 125
4.1 Măng 125
4.1.1 Mảng một chiều 125
4.1.2 Mảng hai chiều 133
4.2 Xâu ký tự 139
4.2.1 Lớp String 139
4.2.2 Lớp StringBuffer 142
4.2.3 Lớp StringTokenizer 146
4.3 Một số lóp cơ bản của Java 149
4.3.1 Lớp Object 149
4.3.2 Các lóp Wrapper 150
4.4 Các lóp tập họp 157
4.4.1 Collection 159
4.4.2 Set (tập họp) 160
4.4.3 List (danh sách) 162
4.4.4 Map (ánh xạ) 164
4.4.5 SortedSet và SortedMap 166
4.4.6 Lóp TreeSet và TreeMap 167
Bài tập 168
Trang 10Chương 5 THAO TÁC VỚI FILE 170
5.1 Luồng (Streams) 170
5.1.1 Khái niệm luồng 170
5.1.2 Luồng byte (Byte Streams) 171
5.1.3 Luồng ký tự (Character Streams) 172
5.1.4 Những luồng được định nghĩa trước (The Predefined Streams) 174
5.2 Sử dụng luồng byte 174
5.2.1 Đọc dữ liệu từ Console 175
5.2.2 Xuất dữ liệu ra Console 176
5.2.3 Đọc và ghi file dùng luồng Byte 176
5.2.4 Đọc và ghi dữ liệu nhị phân 180
5.3 File truy cập ngẫu nhiên (Random Access File) 183
5.4 Sử dụng luồng ký tự 185
5.4.1 Nhập Console dùng luồng ký tự 186
5.4.2 Xuất Console dùng luồng ký tự 188
5.4.3 Đọc/ghi file dùng luồng ký tự 189
5.5 Lớp File 191
Bài tập 194
Chương 6 LẬP TRÌNH GIAO DIỆN ĐỒ HỌA 195
6.1 Giới thiệu về Swing 195
6.2 Tạo khung (Frame) 199
6.3 Định vị khung 202
6.3.1 Các thuộc tính của khung 204
6.3.2 Xác định một kích thước khung hình tốt 204
6.4 Hiển thị thông tin trong một thành phần 207
6.5 Xử lý sự kiện 212
6.5.1 Khái niệm cơ bản về xử lý sự kiện 212
6.5.2 Ví dụ: Xử lý một nút bấm 215
6.5.3 Các lớp Adapter 220
6.5.4 Các sự kiện chuột 224
Trang 116.6 Các thành phần giao diện người dùng vói Swing 237
6.6.1 Giới thiệu về Trình quản lý bố cục 237
6.6.2 Bố cục viền (Border Layout) 239
6.6.3 Bố cục lưới (Grid Layout) 242
6.6.4 Thành phần kiểu văn bản 247
6.6.5 Trường văn bản 247
6.6.6 Nhãn và các thành phần ghi nhãn 248
6.6.7 Trường mật khẩu 249
6.6.8 Vùng văn bản 249
6.6.9 Bảng cuộn (Scroll Panes) 250
6.6.10 Các thành phần lựa chọn 251
6.6.11 Hộp kiểm 251
6.6.12 Nút radio 252
6.6.13 Hộp kết hợp (Combo box) 254
6.6.14 Menus 256
6.6.15 Xây dựng menu 257
Bài tập 258
Chương 7 KẾT NỐI VÀ xử LÝ cơ SỞ DỮ LIỆU 260
7.1 Giới thiệu về JDBC 260
7.1.1 Tại sao nên sử dụng JDBC? 260
7.1.2 Các thành phần của JDBC 261
7.1.3 Phân loại JDBC Drivers 261
7.2 Cài đặt JDBC 264
7.3 Kiểu dữ liệu trong JDBC 265
7.3.1 Kiểu dữ liệu Date và Time trong JDBC 266
7.3.2 Xử lý giá trị NULL trong JDBC 267
7.4 Kết nối JDBC với cơ sử dữ liệu 267
7.4.1 Bước 1: Import các gói JDBC 268
7.4.2 Bước 2: Đăng ký trình điều khiển JDBC 268
7.4.3 Bước 3: Tạo địa chỉ Database URL chính xác 269
Trang 127.4.4 Bước 4: Tạo đối tượng Connection 270
7.4.5 Đóng kết nối JDBC 271
7.5 Kết nối JDBC với cơ sở dữ liệu Oracle 271
7.6 Kết nối JDBC với cơ sở dũ’ liệu MySQL 274
7.7 Lớp Drivermanager trong JDBC 276
7.8 Giao diện Connection trong JDBC 277
7.9 Giao diện statement trong JDBC 278
7.9.1 Tạo đối tượng Statement 278
7.9.2 Đóng đối tượng Statement 279
7.9.3 Ví dụ minh họa đối tượng Statement trong JDBC 280
7.10 Giao diện PreparedStatement trong JDBC 283
7.10.1 Tạo đối tượng PreparedStatement trong JDBC 283
7.10.2 Các phương thức của giao diện PreparedStatement 284
7.10.3 Đóng đối tượng PreparedStatement trong JDBC 285
7.10.4 Ví dụ về đối tượng PreparedStatement trong JDBC 285
7.11 Giao diện CallableStatement trong JDBC 288
7.11.1 Tạo đối tượng CallableStatement trong JDBC 289
7.11.2 Đóng đối tượng CallableStatement trong JDBC 290
7.11.3 Ví dụ về đối tượng CallableStatement trong JDBC 291
7.12 Giao diện ResultSet trong JDBC 293
7.12.1 Một số phương thức được sử dụng phổ biến của đối tượng ResultSet 294
7.12.2 Giao diện ResultSetMetaData trong JDBC 307
7.12.3 Giao diện DatabaseMetaData trong JDBC 309
7.12.4 Giao diện RowSet trong JDBC 310
7.13 Transaction trong JDBC 314
7.13.1 Ví dụ về Commit và Rollback trong JDBC 315
7.13.2 Ví dụ Savepoint trong JDBC 318
Bài tập 323
Trang 13Chương 8 LẬP TRÌNH MẠNG 327
8.1 Giói thiệu về Socket 327
8.1.1 Số hiệu cổng của Socket 328
8.1.2 Các chế độ giao tiếp 329
8.2 Xây dựng ứng dụng Client - Server với Socket 330
8.2.1 Mô hình Client - Server sử dụng Socket ở chế độ có nối kết (TCP) 330
8.2.2 Mô hình Client - Server sử dụng Socket ở chế độ không nối kết (ƯDP) 333
8.3 Socket trong ngôn ngũ’ Java 334
8.3.1 Xây dựng chương trình Client ở chế độ có nối kết (TCP) 335
8.3.2 Lớp TCPEchoClient 336
8.3.3 Xây dựng chương trình Server ở chế độ có nối kết (TCP) 337
8.3.4 Chương trình Server với kiểu phục vụ tuần tự 338
8.3.5 Lớp STCPEchoServer 339
8.3.6 Chương trình Server với kiểu phục vụ song song 341
8.3.7 Lớp PTCPEchoServer 342
8.3.8 Xây dựng chương trình Client - Server ờ chế độ không nối kết (UDP) 343
8.3.9 Lớp DatagramPacket 344
8.3.10 Lớp DatagramSocket 345
8.3.11 Chương trình UDPEchoServer 347
8.3.12 Chương trình UDPEchoClient 348
8.4 Cơ chế gọi phương thức tù’ xa 350
8.4.1 Lời gọi phương thức ờ xa 351
8.4.2 Kiến trúc của chương trình Client - Server theo cơ chế RPC 351
8.4.3 RMI 352
8.4.4 Kiến trúc của chương trình Client - Server theo cơ chế RMI 353
8.4.5 Các cơ chế liên quan trong một ứng dụng đối tượng phân tán 354
8.4.6 Cơ chế vận hành của của một ứng dụng Client - Server theo kiểu RMI 355
8.4.7 Xây dựng một ứng dụng phân tán với RMI 357
8.4.8 Thiết kế và cài đặt các thành phần của ứng dụng RMI 357
8.4.9 Biên dịch các tập tin nguồn và tạo Stub và Skeleton 358
Trang 148.4.10 Thực thi ứng dụng 358
8.4.11 Ví dụ minh họa 358
Bài tập 364
Chương 9 LẬP TRÌNH ĐỒNG THỜI 366
9.1 Khái niệm về luồng 366
9.2 Ngắt luồng 378
9.3 Trạng thái của luồng 382
9.3.1 Luồng mới tạo 383
9.3.2 Luồng có thể chạy 383
9.3.3 Luồng bị chặn và luồng đang đợi 383
9.3.4 Luồng bị kết thúc 384
9.4 Những thuộc tính của luồng 385
9.4.1 Độ ưu tiên của luồng 385
9.4.2 Luồng chạy ngầm/nền 386
9.4.3 Trình xử lý cho những ngoại lệ không được bắt 386
9.5 Đồng bộ hóa 387
9.5.1 Ví dụ về một trạng thái đua tranh 387
9.5.2 Giải thích trạng thái đua tranh 392
9.5.3 Đối tượng khóa (Lock Objects) 394
9.5.4 Các đối tượng điều kiện (Condition Objects) 398
9.5.5 Từ khóa Synchronized 404
Bài tập 405
TÀI LIỆU THAM KHẢO 407
Trang 15Chương 1 CÁC KHÁI NIỆM Cơ BẢN
1.1 GIỚI THIỆU NGỒN NGỮ JAVA
Java là một ngôn ngữ lập trình được Sun Microsystems giới thiệu vào tháng 6 năm
1995 Từ đó, nó đã trở thành một công cụ lập trình của các lập trình viên chuyên nghiệp Java được xây dựng trên nền tảng của c và C++ Do vậy nó sử dụng các cú pháp của c và các đặc trưng hướng đối tượng của C++
Vào năm 1991, một nhóm các kỹ sư của Sun Microsystems có ý định thiết kế một ngôn ngữ lập trình để điều khiển các thiết bị điện tử như tivi, máy giặt, lò nướng, Mặc
dù c và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vào từng loại CPU Trình biên dịch thường phải tốn nhiều thời gian đế xây dựng nên rất đắt Vì vậy để mỗi loại CPU có một trình biên dịch riêng là rất tốn kém Do đó nhu cầu thực tế đòi hỏi một ngôn ngữ chạy nhanh, gọn, hiệu quả và độc lập thiết bị tức là có thế chạy trên nhiều loại 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 Mặc dù mục tiêu ban đầu không phải cho Internet nhưng do đặc trưng không phụ thuộc thiết bị nên Java đã trở thành ngôn ngữ lập trình cho Internet
1.1.1 Java là gì?
Java là ngôn ngữ lập trình hướng đối tượng, do vậy không thể dùng Java để viết một chương trình hướng chức năng Java có thê giải quyết hầu hết các công việc mà các ngôn ngữ khác có thể làm được
Java là ngôn ngữ vừa biên dịch vừa thông dịch Đầu tiên mã nguồn được biên dịch bằng công cụ JAVAC để chuyến thành dạng ByteCode Sau đó được thực thi trên từng loại máy cụ thể nhờ chương trình thông dịch JAVA Mục tiêu của các nhà thiết kế Java 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 cụ thể, thế nên khẩu hiệu của các nhà thiết kế Java là “Write One, Run Any Where”
Ngày nay, Java được sử dụng rộng rãi để viết chương trình chạy trên Internet 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 Java không chỉ dùng để viết các ứng dụng chạy đơn lẻ hay trong mạng 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,
Trang 161.1.2 Các đặc trưng cơ bản của Java
- Đơn giản:
Những người thiết kế 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 Java tựa như C++ nhưng đã lược bỏ đi các đặc trưng phức tạp, không cần thiết của c và C++ như: thao tác con trỏ, thao tác định nghĩa chồng toán tử (operator overloading), Java không sử dụng lệnh goto cũng như file header (.h) cấu trúc struct và union cũng được loại bô khỏi Java Nên có người bảo Java là “C++—”, ngụ ý bào java là C++ nhưng đã bỏ đi những thứ phức tạp, không cần thiết
- Hướng đối tượng:
Java được thiết kế xoay quanh mô hình hướng đối tượng Vì vậy trong Java, tiêu điếm là dữ liệu và các phương pháp thao tác lên dữ liệu đó Dữ liệu và các phương pháp
mô tả trạng thái và cách ứng xử của một đối tượng trong Java Không có dữ liệu tự do và hàm tự do trong Java, tất cả đều được đóng gói vào các lớp xác định
- Độc lập vói hệ nền:
Mục tiêu chính của các nhà thiết kế Java là độc lập với hệ nền hay còn gọi là độc lập phần cứng và hệ điều hành Đây là khả năng một chương trình được viết tại một máy nhưng có thể chạy được bất kỳ đâu
Tính độc lập với phần cứng được hiểu theo nghĩa một chương trình Java nếu chạy đúng trên phần cứng của một họ máy nào đó thì nó cũng chạy đúng trên tất cả các họ máy khác Một chương trình chỉ chạy đúng trên một số họ máy cụ thể được gọi là phụ thuộc vào phần cứng
Tính độc lập với hệ điều hành được hiêu theo nghĩa một chương trình Java có thế chạy được trên tất cả các hệ điều hành Một chương trình chỉ chạy được trên một số hệ điều hành được gọi là phụ thuộc vào hệ điều hành
Các chương trình viết bang Java có thế chạy trên hầu hết các hệ nền mà không cần phải thay đổi gì, điều này đã được những người lập trình đặt cho nó một khẩu hiệu “viết một lần, chạy mọi nơi”, điều này là không thể có với các ngôn ngữ lập trình khác
Đối với các chương trình viết bằng c, C++ hoặc một ngôn ngữ nào khác, trình biên dịch sẽ chuyển tập lệnh thành mã máy (machine code), hay lệnh của bộ vi xử lý Những lệnh này phụ thuộc vào CPU hiện tại trên máy bạn Nên khi muốn chạy trên loại CPU khác, chúng ta phải biên dịch lại chương trình
Môi trường phát triển của Java được chia làm hai phần: Trình biên dịch và trình thông dịch Không như c hay C++, trình biên dịch của Java chuyển mã nguồn thành dạng bytecode độc lập với phần cứng mà 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 bytecode, tại mỗi máy cần phải có trình thông dịch của Java hay còn gọi là máy ảo Java (JVM - Java Virtual Machine) Máy ảo
Trang 17- Mạnh mẽ: •
Java là ngôn ngữ yêu cầu chặt chẽ về kiểu dữ liệu, việc ép kiểu tự động bừa bãi của
c, C++ nay được hạn chế trong Java, điều này làm chương trình rõ ràng, sáng sủa, ít lỗi hơn Java kiểm tra lúc biên dịch và cả trong thời gian thông dịch vì vậy Java loại bỏ một một số loại lỗi lập trình nhất định Java không sử dụng con trổ và các phép toán con trỏ Java 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
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 bộ nhớ Trước khi chương trình kết thúc thì phải tự giải phóng bộ nhớ đã cấp vấn đề 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 Java, 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 được thực hiện tự động, nhờ dịch vụ thu nhặt những đối tượng không còn sử dụng nữa (garbage collection)
Cơ chế bẫy lỗi của Java giúp đơn giản hóa quá trình xử lý lỗi và hồi phục sau lỗi
- Bảo mật:
Java cung cấp một số lóp để kiểm tra bảo mật
Ở lóp đầu tiên, dữ liệu và các phương pháp được đóng gói bên trong lớp Chúng chỉ được truy xuất thông qua các giao diện mà lớp cung cap Java 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 của mảng bằng kỹ thuật tràn và cũng cung cấp kỹ thuật dọn rác trong bộ nhớ Các đặc trưng này tạo cho Java an toàn và có khả năng cơ động cao
Trong lóp thứ hai, trình biên dịch kiểm soát đế đảm bảo mã an toàn Lóp thứ ba được đảm bảo bởi trình thông dịch Chúng kiểm tra xem bytecode có đảm bảo các qui tắc an toàn trước khi thực thi Lóp thứ tư kiêm soát việc nạp các lớp lên 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
- Phân tán:
Java có thế dùng đế xây dựng các ứng dụng có thế làm việc trên nhiều phần cứng,
hệ điều hành và giao diện đồ họa Java được thiết kế cho các ứng dụng chạy trên mạng
Vì vậy chúng được sử dụng rộng rãi trên Internet, nơi sử dụng nhiều nền tảng khác nhau
- Đa luồng:
Đây là tính năng cho phép viết một chương trình có nhiều đoạn mã lệnh được chạy song song với nhau Với Java ta có thể viết các chương trình có khả năng chạy song song một cách dễ dàng, hơn thế nữa việc đồng bộ tài nguyên dùng chung trong Java cũng rất đơn giản Điều này là không thể có đối với một số ngôn ngữ lập trình khác như C/C++, Pascal
Trang 18Java được thiết kế như một ngôn ngữ động để đáp ứng cho những môi trường mở Các chương trình Java bố sung các thông tin cho các đối tượng tại thời gian thực thi Điều này cho phép khả năng liên kết động các mã
sử dụng đơn giản nhất của JSP/Servlet Chúng còn có thể được dùng để xử lý dữ liệu, thực thi các giao dịch và thường được thực thi thông qua máy chủ Web
Trang 191.1.4 Máy ảo Java (JVM - Java Virtual Machine)
Máy ảo là một phần mềm mô phỏng một máy tính thật (máy tính ảo) Nó có tập họp các lệnh logic để xác định các hoạt động của máy tính và có một hệ điều hành ảo Người ta
có thể xem nó như một máy tính thật (máy tính có phần cứng ảo, hệ điều hành ảo) 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ã đã biên dịch
Những người thiết kế Java chọn cách tổ hợp giữa trình biên dịch và trình thông dịch Các chương trình viết bằng Java được biên dịch thành mã máy, nhưng đây là loại ngôn ngữ máy dành cho máy ảo Java (Java Virtual Machine - JVM) Ngôn ngữ máy dành cho máy
ảo Java được gọi là Java bytecode, hay ngắn gọn là bytecode Để chạy được các chương trình Java trên một loại máy tính bất kì, người ta chỉ cần một trình thông dịch dành cho Java bytecode, trình thông dịch này giả lập máy ảo Java theo kiểu mà Virtual PC giả lập một máy tính PC Máy ảo Java cũng chính là tên gọi dành cho trinh thông dịch bytecode thực hiện nhiệm vụ giả lập, do đó ta nói rằng một máy tính cần một máy ảo Java để chạy các chương trình Java
Tất nhiên, mỗi loại máy tính cần một trình thông dịch Java bytecode khác, nhưng một khi đã có một trình thông dịch như vậy, nó có thể chạy một chương trình Java bytecode bất ki Và cũng chính chương trình Java bytecode đó có thế chạy trên bất cứ máy tính nào có một trình thông dịch Java bytecode Đây chính là một trong các đặc diêm quan trọng của Java: một chương trình sau khi biên dịch có thể chạy trên nhiều loại máy tính khác nhau
Hình 1.1 Biên dịch và thông dịch đối với các chương trình Java.
Trang 20Hình 1.1 mô tả việc trình biên dịch chuyến mã nguồn thành tập các lệnh của máy ảo
mà không phụ thuộc vào phần cứng và hệ điều hành cụ thế Sau đó, trình thông dịch trên mỗi máy sẽ chuyển tập lệnh này thành chuơng 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 bằng cách:
- Các Frame chứa các trạng thái của các phưong thức
- Các toán hạng của mã bytecode
- Các tham số truyền cho phương thức
1.2 MÒI TRƯỜNG LẬP TRÌNH JAVA
Một môi trường lập trình Java thường bao gồm một số chương trình thực hiện các nhiệm vụ khác nhau để phục vụ công việc soạn, dịch và chạy một chương trình Java
Có thể sử dụng một chương trình soạn thảo văn bản dạng text bất kì để viết mã nguồn Java Một chương trình Java bao gồm một hoặc nhiều định nghĩa lớp Theo quy ước, mỗi định nghĩa lớp được đặt trong một file riêng Theo quy tắc một file mã nguồn Java chỉ được chứa nhiều nhất một định nghĩa lớp với từ khóa public - ý nghĩa của từ khóa này sẽ được nói đến sau File chứa định nghĩa lóp phải có tên trùng với tên của lớp public đặt trong file đó, ví dụ file Hello World, java chứa lóp public có tên HelloWorld, file HelloWorldApplet.java chứa lớp public có tên HelloWorldApplet
Java là ngôn ngữ phân biệt chữ hoa chữ thường Do đó, nếu lóp HelioWorld được đặt trong file helloworld.java thì sẽ gây lỗi khi biên dịch
Trang 21Những người mới bắt đầu sử dụng Java nên bất đầu từ việc viết chương trình bằng một phần mềm soạn thảo đơn giản và sử dụng các công cụ dòng lệnh trong bộ JDK để dịch và chạy chương trình Ngay cả những lập trình viên thành thạo đôi khi cũng sử dụng cách này.
Các bước cơ bản để xây dựng và thực thi một chương trình Java:
- Soạn thảo: Mã nguồn chương trinh được viết bằng một phần mềm soạn thảo văn bản dạng text và lưu trên ổ đĩa Ta có thế dùng những phần mềm soạn thảo văn bản đơn giản nhất như Notepad (trong môi trường Windows) hay Emacs (trong môi trường Unix/Linux), hoặc các công cụ soạn thảo trong môi trường tích họp đế viết mã nguồn chương trình Mã nguồn Java đặt trong các file với tên có phần mở rộng là java
- Dịch: Trình biên dịch Java (javac) lay file mã nguồn và dịch thành các lệnh bằng bytecode mà máy ảo Java hiểu được, kết qưả là các file có đuôi class
- Nạp và chạy: Trình nạp Java (java) sẽ dùng máy ảo Java để chạy chương trình đã được dịch ra dạng bytecode
Đe thuận tiện và tăng năng suất cho việc lập trình, người ta dùng các môi trường lập trình tích họp (IDE - Integrated Development Environment) Trong đó, các bước dịch và chạy thường được kết họp và thực hiện tự động, tất cả các công đoạn đối với người dùng chỉ còn là việc chạy các tính năng trong một phần mềm duy nhất Trong số các IDE phổ biến nhất cho Java có Eclipse, NetBean và JBuilder
Tuy IDE rất hữu ích cho các lập trình viên, những người mới làm quen với ngôn ngữ nên tự thực hiện các bước dịch và chạy chương trình thay vì thông qua các chức năng của IDE Như vậy, người học mới có thế nắm được bản chất các bước của quá trình xây dựng chương trình, hiểu được bản chất và đặc điểm chưng của các IDE, tránh tình trạng bị phụ thuộc vào một IDE cụ thể
Đe giúp bạn dễ dàng thiết lập môi trường lập trình Java Trong phần còn lại của mục này chúng tôi sẽ hướng dẫn chi tiết cách thiết lập môi trường lập trình cho Java 9 để có thể dịch và chạy chương trinh trên các môi trường khác nhau, bao gồm: command line, IDE NetBean và IDE Eclipse
Đe xây dựng ứng dụng Java 9 ờ mức độ cơ bản, bạn cần cài đặt:
Trang 22Bạn có thê download JDK theo địa chỉ URL sau:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Do Java có thể chạy trên nhiều nền tảng hệ điều hành khác nhau, nên bạn có thế cài đật JDK trên nhiều hệ điều hành khác nhau Đe biết chi tiết về quá trình cài đặt JDK 9, bạn
có thể xem mục 1.2.4 và vào địa chỉ: https://docs.oracle.eom/javase/9/install/toc.htm
Trong cuốn sách này, chúng tôi đưa ra giả định là chúng ta sẽ cài đặt JDK trong thư mục “C:\Program File\Java” của hệ điều hành Windows Neu bạn cài đặt JDK tại thư mục khác hoặc trên hệ điều hành khác, bạn cần phải thiết lập đường dẫn cho quá trình cài đặt JDK
Các biến nhằm thiết lập môi trường gắn với Java bao gồm:
JRE-HOME tham chiếu đến thư mục cài đặt JRE trên máy tính của bạn
JAVA-HOME tham chiếu tới JDK HOME
1.2.2 Cấu trúc thư mục của JDK
So với các phiên bản trước kia của JDK thì nội dung cũng như là cấu trúc thư mục của JDK 9 có một số phần thay đổi Chúng tôi sẽ thực hiện so sánh cấu trúc thư mục của JDK 9 với JDK 8 Cấu trúc thư mục của JDK 9 có thế làm hỏng ứng dụng của bạn nếu bạn không hiểu rõ về sự thay đổi của nó so với các phiên bản trước kia
Các phiên bản trước của JDK 9 thì JDK bao gồm JRE (Java Runtime Environment)
và JDK (Java Development Kit) JRE cung cấp môi trường để chạy ứng dụng, JDK chứa JRE, các thư viện và cung cấp công cụ cho việc phát triển ứng dụng Bạn có thể chọn các cài đặt chỉ JRE hoặc JDK (JDK chứa JRE) Các thư mục chính của JDK tương ứng với các phiên bản trước cùa JDK 9
Trang 23- Thư mục lib chứa một vài tệp jar và một số các file có định dạng khác cho bộ công
cụ JDK Nó chứa tệp tools.jar, tệp này chứa nội dung các lớp của trình biên dịch javac
- Thư mục jre/bin chứa các câu lệnh của Java Trong hệ điều hành Window, các lệnh phục vụ cho quá trình chạy các thư viện liên kết động (DLL) của hệ thống
.properties và policy
- Thư mục jre/lib chứa một số tệp có đuôi jar Tệp rt.jar chứa các lớp và các tệp tài nguyên (resource) phục vụ cho quá trình chạy và một số các công cụ khác phụ thuộc vào vị trí của tệp rt.jar
- Ngoài ra, thư mục jre/lib còn có chứa một số các thư mục con khác có chứa font và ảnh phục vụ cho quá trình chạy ứng dụng
Thư mục gốc của JDK và JRE không có các tệp như COPYRIGHT, LICENSE và README mà nó chứa tệp triển khai của Java có chứa cặp khóa key/value nhằm mô tả hình ảnh chạy như phiên bản của Java, hệ điều hành và kiến trúc
Dưới đây là nội dung của tệp triển khai của JDK 8:
Trang 24bin conf include jmods legal lib
Hình 1.3 Cấu trúc thư mục JDK 9.
- JDK 9 không chứa thư mục Jre
- Thư mục bin chứa tất cả các câu lệnh Trong hệ điều hành Window, các lệnh phục
vụ cho quá trinh chạy các thư viện liên kết động (DLL) của hệ thống
- Thư mục conf chứa các tệp cấu hình có thể chỉnh sửa được như các file properties
Thư mục gốc của JDK 9 chứa các tệp như COPYRIGHT, LICENSE và README
1.2.3 Kiểm tra cài đặt JDK
Sau khi cài đặt xong JDK 9, bạn có thể kiểm tra các phiên bản của JDK thông qua Java với các tham số truyền vào như: -version, -version, -showversion, -show-version
Ví dụ:
java -version
Kết quà hiển thị:
java 9
Java(TM) SE Runtime Environment (build 9 + 181)
Java HotSpot(TM) 64-Bit Server VM (build 9 + 181, mixed mode)
1.2.4 Cài đặt JDK 9
a) Download bộ cài đặt
Các lập trình viên có thế tiến hành download bộ cài đặt JDK 9 về máy tính của mình theo địa chỉ như sau: http://www.oracle.com/technetwork/java/javase/downloads/jdk9- downloads-3848520.html
Trang 25Sau đó, bạn lựa chọn phiên bản phù họp với hệ điều hành của mình Trong cuốn sách này, chúng tôi sử dụng hệ điều hành Windows 10 Bộ cài đặt có dung luợng gần
400 MB
b) Tiên hành cài đặt
Sau khi download xong, bạn tiến hành cài đặt JDK 9
Hình 1.4 Giao diện cài đặt lần đầu.
Sau đó, bạn lựa chọn thư mục cài đặt
Trang 26Sau đó bộ cài đặt sẽ tiên hành cài đặt JDK 9.
Hình 1.6 Tiến trình cài đặt JDK 9.
Ket thúc quá trình cài đặt nếu thành công, cửa sổ sau đây sẽ hiển thị
Hình 1.7 Tiến trình cài đặt thành công JDK 9.
1.2.5 Thiết lập các biến môi trường
1.2.5.1 Thiết lập biến môi trường JAVA-HOME
Đe thiết lập biến môi truờng JAVA-HOME, bạn vào “System Properties window sau đó lựa chọn “Environment Variables ” để thiết lập
Trang 27Hình 1.8 Thiết lập biến môi trường JAVA-HOME.
1.2.5.2 Thiết lập PATH của hệ thống
+ Trong “Environment Variables”, phía dưới “System variables” chọn Path
+ Lựa chọn “Edit”
+ Trong “Edit environment variable” Lựa chọn “New”
+ Nhập thông tin %JAVA_HOME%\bin
Trang 281.2.6 Biên dịch và thực thi Java bằng Command Prompt
Sau khi cài đặt JDK và thiết lập các biến môi trường, bạn có thể biên dịch và thực thi bang Command Prompt Quá trình thực hiện gồm các bước sau:
1.2.6.1 Lưu chương trình
Sau khi sử dụng công cụ soạn thảo văn bản, chẳng hạn như NotePad để tạo chương trình Java, hãy lưu lại bằng phần mở rộng “.java” Dĩ nhiên, bạn có thế tùy ý đặt tên file
Ví dụ: HelloWorld.java
- Đe đảm bảo file của bạn được lưu dưới dạng file có đuôi “.java”, hãy gõ thêm
“.java” đằng sau tên tập tin và chọn All File (tất cả các tệp) từ trình đơn mờ rộng thả xuống
- Ghi lại vị trí mà bạn lưu file trên hệ thống
1.2.6.2 Mở Command Prompt/Terminal
Thao tác truy cập dòng lệnh trên hệ điều hành Mac và Windows có chút khác nhau
- Trên Windows: Nhấn vào Home rồi gõ cmd Nhấn Enter để mở Command Prompt
- Trên Mac: Trong công cụ Finder, nhấp vào tab Go, chọn Applications, chọn Utilities và sau cùng chọn Terminal
1.2.6.3 Kiếm tra môi trường chạy Java đã được cài đặt chưa
Gõ java-version vào trong dòng lệnh Neu Java đã được cài đặt, bạn sẽ thấy một thông báo cho biết về phiên bản Java hiện có trong máy
1.2.6.4 Điểu hướng đến đúng thư mục của chương trình
Sử dụng lệnh cd cùng tên thư mục để thay đổi thư mục hoạt động Ví dụ, nếu bạn đang ở C:\Users\Bob\Project và muốn chuyển đến C:\Users\Bob\Project\JavaProject, hãy
>java HelloWorld.java
Trang 29I.2.6.6 Thực thỉ chương trình
Nhập lệnh java filename rồi nhấn Enter Ví dụ:
>java Hello World
Sau khi nhấn Enter, chương trình của bạn sẽ được thực thi Neu chương trình gập lồi khi chạy, cần sửa lỗi và biên dịch lại trước khi thực thi lại
1.2.7 Giới thiệu về công cụ JSell
JDK 9 cung cấp công cụ JSell trong thư mục JDK_HOME/bin, công cụ cho phép thực thi đoạn mã ngắn được viết bởi ngôn ngữ Java Việc này cực kỳ hữu ích với các lập trình viên mới của Java Ví dụ trong hình 1.10 sau mô tả cách sử dụng công cụ JSell
C:\>jshell
I Welcome to JShell Version 9
I For an introduction type: /help intro jshell> System.out.printlnf'Hello JDK 9!") Hello JDK 9!
jshell> 2 + 2
$2 ==> 4 jshell> /exit
I Goodbye C:\>
Hình 1.10 Ví dụ cách sử dụng Jsell.
1.2.8 Cài đặt công cụ phát triển
Các bạn có thể cài đặt các bộ công cụ phát triển như NetBean, Eclipse, JBuilder, Visual Studio Code cho việc phát triến ứng dụng Java Ớ phần này chúng tôi xin giới thiệu cách cài đặt bộ công cụ phát triển ứng dụng Java NetBean và Eclipse
I.2.8.I Cài đặt NetBean
Để cài đật bộ cài đặt NetBean, các bạn vào địa chỉ URL sau:
https://netbeans.org/downloads/
Tùy thuộc vào mục tiêu phát triển ứng dụng mà các bạn lựa chọn bộ cài đặt cho họp
lý Ớ đây, chúng ta chọn bộ cài đặt Java SE là phù họp với mục tiêu xây dựng ứng dụng Java cơ bản Hình dưới đây mô tả các phiên bản cài đặt Java SE
Trang 30Supported technologies * Java SE
- - I Download x86 I I Download x86 I I Download x86 I
-I Download -I -I Download ) z - — - z - — - zx -I Download - - Download x64 J Download x64 i Download x64 i - Free, 95 MB Free, 197 MB Free, 108 - 112 MB Free, 108 - 112 MB Free, 107 - 110 MB Free, 221 MB
Hình 1.11 Bộ cài đặt NetBean.
Hình ảnh mô tả quá trình bắt đầu cài đặt NetBean
Welcome to the NetBeans IDE 8.2 Installer
The installer will install the NetBeans IDE with the Java SE pack.
Trang 31Hình ảnh lựa chọn thư mục đê cài đặt NetBean.
Q NetBeans IDE Installer
NetBeans IDE 8.2 Installation
Choose the installation folder and JDK™. ® NetBeansIDE
Install the NetBeans IDE to:
C: program Files VJetBeans 8 2| Browse
JDK™ for the NetBeans IDE:
CiV’rogram Files \Java\jdk-9.0.4 Browse
< Back I Next > I Cancel
Hình 1.13 Lựa chọn thư mục khi cài đặt NetBean.
Sau khi cài đặt xong, hình ảnh NetBean khi chạy lần đầu tiên
Trang 321.2.8.2 Cài đặt Eclipse
Đe cài đặt bộ cài đặt Eclipse, bạn vào địa chỉ URL sau:
http ://www eclipse org/ downloads/
Do chúng ta cài đặt Eclipse trên môi trường Window 10 Vì vậy, bạn lựa chọn file eclipse-inst-win64.exe, sau đó tiến hành download và cài đặt
Màn hình cài đặt đầu tiên
type filter text
X JT
Eclipse IDE for Java Developers
The essential tools for anyjava developer, including a Java IDE, a Git client, XML Editor, Mylyn, Maven and Gradle integration
Tools for Java developers creating Java EE and Web applications, including a Java IDE, tools forjava EE.JPA.JSF Mylyn EGit and others.
Eclipse IDE for C/C++ Developers
An IDE for C/C++ developers with Mylyn integration.
Eclipse IDE for JavaScript and Web Developers
The essential tools for anyJavaScript developer IncludingJavaScript, HTML css, XML languages support Git client and Mylyn.
Eclipse IDE for PHP Developers
The essential tools for any PHP developer, including PHP language support, Git client Mylyn and editors for JavaScript HTML css and XML.
Hình 1.15 Hình ảnh cài đặt bắt đầu.
Eclipse là bộ công cụ hỗ trợ cho phép lập trình viên có thể phát triển nhiều loại ứng dụng khác nhau như Java, C/C++, PHP Ở đây, bạn lựa chọn mục đầu tiên (Eclipse IDE for Java developer)
Sau đó, bạn lựa chọn thư mục cài đặt Eclipse
Trang 33eclipseinstaller byoomph
Eclipse IDE for Java Developers
The essential tools for any Java developer, including a Java IDE, a Git client XML Editor, Mylyn, Maven and Gradle integration.
Installation Folder C:\Users\hung.nm\eclipse\java-oxygen
create start menu entry 5^ create desktop shortcut
INSTALLING
X Cancel Installation
BACK
Hình 1.16 Lựa chọn thư mục cài đặt Eclipse.
Sau khi cài đặt xong, màn hình hiến thị khi chạy sẽ là:
Trang 341.2.8.3 Tạo Project Java VỚỈ Eclipse
Bước 1: Chọn File/New/Java Project
Bước 2: Nhập tên Project và chọn thư mục lưu trữ
Create a Java Project
Create a Java project in the workspace or in an external location.
Project name: Unitị
0 Use default location
J RE
(•) Use an execution environment J RE:
o Use a project specific J RE:
Configure JREs
o Use default JRE (currently 'jdk-9.0.4')
Project layout
o Use project folder as root for sources and class files
Working sets
I I Add project to working sets
Working sets:
New
Hình 1.18 Tạo Project Java.
Trang 35Bước 3: Viết code và chạy thử chương trình.
G JavaCore - Unit1/src/Welcome.java - Eclipse
File Edit Source Refactor Navigate Search Project Run Window Help
public static void main(string[] args) {
String greeting = "Welcome to core lava";
System.out.printin (greeting) ;|
Connect to your task and ALM tools or c
Writable Smart Insert 16:38
Hình 1.19 Bổ sung Code ứng dụng đơn giản.
Bước 4: Dịch và chạy chương trình
|s~' Problems @ Javadoc Declaration 0 Console £3
< terminated: * Welcome [Java Application] C:\Program Fi I es\Java\jdk-9.0.4\bin\javaw.exe (Jan 30, 2018,10:45:24 Welcome to core Java
Trang 361.3 CÁC THÀNH PHÀN cơ SỞ CỦA JAVA
1.3.1 Kiến trúc chương trình Java
Dạng cơ bản của một tập tin mã nguồn Java có cấu trúc như sau:
import java.awt.* ; //Khai báo tên thư viện sẵn có, nếu cần dùng
public class className // Khai báo tên lớp
{
int var;//Khai báo biến
- Phần khai báo tên gói (khối) bằng từ khóa package
- Phần khai báo thư viện tham khảo bằng từ khóa import
- Phần khai báo nội dung lóp bằng từ khóa class
Khai báo package
Package được dùng để đóng gói các lớp trong chương trình lại với nhau thành một khối Đây là một cách hữu hiệu đế lưu trữ các lớp gần giống nhau hoặc có cùng một modulee thành một khối thống nhất
Cú pháp khai báo tên gói bằng từ khóa package:
package <Tên gói>;
Đe đặt tên package trong chương trình, người ta có thể tiến hành như đặt tên thư mục trên 0 đĩa Nghĩa là bắt đầu bằng tên có phạm vi lớn cho đến các tên có phạm vi nhỏ, cuối cùng là tên các gói trực tiếp chứa các lóp Phạm vi đặt tên gói, trên thực tế, được tiến hành theo thứ tự phạm vi lớn đến nhô như sau:
Trang 37Ví dụ:
- Tên miền của công ty là syz.com
- Tên dự án là pro
- Dự án có hai module là modi và mod2
- Module modi có hai chức năng là kết nối cơ sở dữ liệu connection và biểu diễn dữ liệu bean
- Module mod2 có hai chức năng là giao diện interface và xử lí yêu cầu process.Khi đó, cấu trúc khối của dự án được mô tả như hình 1.21
Hình 1.21 Kiến trúc khối của dự án.
Khi đó, trong chức năng bean có lóp User, thì phải khai báo tên khối trong lớp này như sau:
package com.syz.pro.modl.bean;
Ưu điểm của package:
- Cho phép nhóm các lớp vào với nhau thành các đơn vị nhỏ hơn Việc thao tác trên các đơn vị khối sẽ gọn hơn thao tác trên một tập các lóp
- Tránh việc xung đột khi đật tên lóp Vì các lớp không cùng package thì có thể đặt tên trùng nhau Khi số lượng lớp của chương trình quá lớn, ta có thể tránh phải đặt tên khác nhau cho các lóp bằng cách đặt chúng vào các package khác nhau
Trang 38- Cho phép bảo vệ các lóp Khi chương trình lớn, việc chia nhỏ chương trình thành các package sẽ thuận lợi hơn cho việc quản lí và phát triển.
- Tên gói còn được dùng để định danh lớp trong ứng dụng
Lưu ý:
- Dòng lệnh khai báo tên khối phải được đặt đầu tiên trong tệp tin mã chương trình
- Chỉ được khai báo tối đa một tên khối đối với mỗi tệp mã nguồn Java
- Các tệp tin của các lóp nằm cùng gói ứng dụng phải được lưu trong cùng một thư mục (tên thư mục là tên khối) theo cấu trúc khối của dự án
- Tên khối nên đặt theo chữ thường vì tên khối sẽ là tên thư mục tương ứng trong 0 đĩa, tránh nhầm lẫn với tên các tệp tin là tên các lớp của chương trình
- Khi không phân chia chương trình thành khối (chương trình đơn giản), không cần thiết phải khai báo tên khối ở đầu chương trình
Khai báo thư viện
Khai báo thư viện đế chỉ ra những thư viện đã được định nghĩa sằn mà chương trình
sẽ tham khảo tới Cú pháp khai báo thư viện với từ khóa import như sau:
import <Tên thư viện>;
Java chuẩn cung cấp một số thư viện như sau:
- java.lang: cung cấp các hàm thao tác trên các kiểu dữ liệu cơ bản, xử lí lỗi và ngoại lệ, xử lí vào ra trên các thiết bị chuẩn như bàn phím và màn hình
- java.applet: cung cấp các hàm cho xây dựng các applet
- java.awt: cung cấp các hàm cho xây dựng các ứng dụng đồ họa với các thành phần giao diện multi media (sẽ trình bày chi tiết trong Chương 6)
- java.io: cung cấp các hàm xử lí vào/ra trên các thiết bị chuẩn và các thiết bị ngoại vi
- java.util: cung cấp các hàm tiện ích trong xử lí liên quan đến các kiểu dữ liệu có cấu trúc như Date, Stack, Vector
Ví dụ, nếu trong chương trình cần đến các thao tác chuyển kiểu đổi dữ liệu tường minh (từ kiểu string sang kiểu int) thì ta sẽ phải tham khảo thư viện java.lang:
import java. lang *;
Trang 39- Nếu không tham khảo thư viện nào, không cần thiết phải khai báo các tham khảo với từ khóa import.
Khai báo lớp
Phần thứ ba là phần khai báo lóp và nội dung của lóp, phần này luôn bắt buộc phải
có đối với một tệp mã nguồn Java:
- Khai báo tên lóp với từ khóa class
- Khai báo các thuộc tính của lóp
- Khai báo các phương thức của lóp
Việc khai báo lóp với các thuộc tính và phương thức sẽ được trình bày chi tiết trong Chương 3
1.3.2 Chương trình Java đầu tiên
Chúng ta hãy bắt đầu từ chương trình Java cố điển nhất với một ứng dụng đơn giản Chương trình sau đây cho phép hiển thị một thông điệp (nằm trong tệp mã nguồn First.java):
Chương trình 1.1
//Đây là chương trình "Firstjava"
public class First
ỉ
public static void main(String args[])
{ System out.prin tin ("Hello Wo rid }
>java vidu.chuongl.First
Ket quả sẽ hiển thị trên màn hình như sau:
Trang 401.3.2.1 Phân tích chương trình đầu tiên
Trong Java, tất cả mã lệnh đều phải được tổ chức vào trong một lớp nhất định Do
đó, mỗi tệp tin mã nguồn xác định ít nhất một lớp Java và tên tệp tin phải trùng với tên lóp Java phân biệt chữ hoa và chữ thường, cho nên tên tập tin của chương trình trên phải trùng với tên lóp: First.java
Đây là dòng khai báo tên khối của chương trình, vì tên khối của chương trình được đặt theo hai mức:
- Mức thứ nhất là kiếu bài: ví dụ (vidu) hoặc bài tập (baitap)
- Mức thứ hai là tên của chương: chuongl, chuong2, chuong3, chuong4
Vi đây là ví dụ, nằm ở chương 1 nên thuộc vào gói vidu.chiiongl Đồng thời, tệp tin First.java sẽ nằm trong thư mục: /vidu/chuongl/
Chương trình này không tham khảo thư viện nào nên không cần lệnh import nào
// Đây là chương trình “First.java ”
Ký hiệu “//” dùng để chú thích dòng lệnh Trình biên dịch sẽ bỏ qua dòng chú thích này Java hỗ trợ hai loại chú thích:
- Loại chú thích trên một dòng, dùng Trình biên dịch sẽ bỏ qua nội dung bắt đầu
từ kí hiệu “II” cho đến hết dòng lệnh chứa nó
- Loại chú thích trên nhiều dòng có thể bắt đầu với “/ ” và kết thúc với Trình biên dịch sẽ bô qua nội dung nằm giữa hai kí hiệu này
*
Dòng kế tiếp khai báo lóp có tên First: Bắt đầu với từ khóa class, kế đến là tên lớp
class FirstMột định nghĩa lóp nằm trọn vẹn giữa hai ngoặc móc mỡ “{” và đóng Các ngoặc này đánh dấu bắt đầu và kết thúc một khối lệnh
public static void mainfString args[])Đây là phương thức chính, từ đây chương trình bắt đầu việc thực thi của mình Tất cả các ứng dụng Java đều sử dụng một phương thức main này
- Từ khóa public là một chỉ định truy xuất Nó cho biết thành viên của lớp có thể được truy xuất từ bất cứ đâu trong chương trình
(instance) của lóp Nó không phụ thuộc vào các thể hiện của lớp được tạo ra
- Từ khóa void thông báo cho máy tính biết rằng phương thức sẽ không trả lại bất cứ giá trị nào khi thực thi chương trình
- String args[] là tham số dùng trong phương thức main Khi không có một thông tin nào được chuyển vào main, phương thức được thực hiện với các dữ liệu rỗng - không có gi