Tổng quan về giáo trình
Giáo trình Lập trình Java (tài liệu học tập dành cho sinh viên do giảng viên Dương Thăng Long, Khoa Công nghệ Tin học – Viện Đại học Mở Hà Nội biên soạn) là tài liệu giảng dạy chính quy thuộc khối kiến thức cơ sở ngành và chuyên ngành Công nghệ thông tin. Trong khung chương trình đào tạo đại học, học phần này giữ vai trò cầu nối quan trọng: chuyển tiếp sinh viên từ tư duy lập trình cấu trúc sang lập trình hướng đối tượng (OOP), đồng thời trang bị kỹ thuật xây dựng ứng dụng đồ họa (GUI), xử lý hệ thống nâng cao (vào/ra dữ liệu, đa luồng) và lập trình thiết bị di động với công nghệ J2ME.
Mục tiêu học tập của giáo trình được xác định cụ thể trên ba phương diện:
- Về kiến thức: Sinh viên hiểu rõ cơ chế vận hành của máy ảo Java (JVM), cú pháp ngôn ngữ, 4 nguyên lý cốt lõi của lập trình hướng đối tượng (bao gói, kế thừa, đa hình, trừu tượng), kiến trúc MVC trong thư viện Swing, cơ chế đồng bộ luồng và cấu trúc phân tầng của nền tảng J2ME.
- Về kỹ năng: Có khả năng phân tích, thiết kế lớp, lập trình giao diện người dùng hoàn chỉnh, đọc/ghi tệp tin đối tượng tuần tự hóa (
Serializable), kiểm soát biệt lệ (Exception), xử lý đồng thời tránh xung đột tài nguyên (Deadlock) và triển khai ứng dụng dạng MIDlet Suite trên môi trường giả lập. - Về năng lực ứng dụng: Vận dụng công cụ phát triển phần mềm (JDK CLI, IDE, Sun Wireless Toolkit) để đóng gói ứng dụng định dạng
.jarvà.jad.
Cấu trúc giáo trình được thiết kế theo tiến trình phát triển kiến thức tuyến tính và tích lũy: khởi đầu từ cú pháp nền tảng, tiến tới mô hình hóa đối tượng, phát triển giao diện đồ họa trên máy tính cá nhân, hoàn thiện các kỹ thuật lập trình hệ thống nâng cao và mở rộng sang miền ứng dụng di động nhúng. Điểm đặc sắc của tài liệu là phương pháp trình bày cô đọng dạng bài giảng trực quan, kết hợp song song giữa lý thuyết cú pháp, bảng phân tích đặc tính kỹ thuật, sơ đồ cấu trúc bộ nhớ và các đoạn mã nguồn mẫu đối chiếu thực tế.
Nội dung kiến thức cốt lõi
Các chương/chủ đề chính
Tài liệu được chia thành các bài học lớn với phạm vi kiến thức toàn diện:
- Bài 1 – Giới thiệu và Cú pháp Lập trình Java Cơ bản: Giới thiệu lịch sử hình thành ngôn ngữ từ dự án Oak (1990, Sun Microsystems do James Gosling và Bill Joy khởi xướng), kiến trúc 3 phân hệ công nghệ (J2SE, J2ME, J2EE), cơ chế máy ảo Java (JVM). Nội dung chi tiết bao gồm hệ thống từ khóa, quy ước định danh (PascalCase cho lớp, camelCase cho phương thức/biến, UPPER_CASE cho hằng số), kiểu dữ liệu nguyên thủy, lớp đối tượng xâu ký tự (
String), quản lý mảng theo tham chiếu, cấu trúc rẽ nhánh (if,switch), vòng lặp (for,while,do-while), lệnh nhập xuất quaScannervà quy trình biên dịch/thực thi bằng lệnhjavac/java. - Bài 2 – Lập trình Hướng đối tượng trong Java: Trình bày chu trình phát triển phần mềm và 4 đặc trưng OOP. Hướng dẫn cú pháp định nghĩa lớp, phương thức tạo (constructor), cơ chế nạp chồng (overloading), từ khóa
this, cơ chế truyền trị (pass-by-value) và cấp phát bộ nhớ Stack. Kỹ thuật đơn kế thừa với từ khóaextends, ghi đè phương thức (overriding), sử dụngsupervàfinal. Cơ chế đa hình qua tham chiếu, toán tửinstanceof, ép kiểu, các lớp bao gói dữ liệu (Wrapper classes). Định nghĩa lớp trừu tượng (abstract class), phương thức trừu tượng, tổ chức thư viện với gói (package), biến môi trườngCLASSPATHvà lập trình giao diện (interface,implements). - Bài 3 – Cơ chế GUI và Quản lý Bố cục (Layout): So sánh kiến trúc AWT (Heavyweight, phụ thuộc hệ nền) và Swing (Lightweight, kiến trúc MVC). Kỹ thuật lập trình cửa sổ với
JFrame, phân biệtContainervàComponent. Phân tích chi tiết các trình quản lý bố cục:FlowLayout,BorderLayout,GridLayout,GridBagLayout(thông qua đối tượng cấu hìnhGridBagConstraintsvới các tham sốgridx,gridy,gridwidth,gridheight,weightx,weighty,fill,anchor), thiết lập không dùng bố cục (null layout) và kỹ thuật lồng ghépJPanel. - Bài 4 – Lập trình GUI Cơ bản và Mô hình Xử lý Sự kiện: Khảo sát các thành phần giao diện thừa kế từ
AbstractButton(JLabel,JTextField,JTextArea,JPasswordField,JButton,JCheckBox,JRadioButton). Trình bày mô hình ủy quyền sự kiện (Delegation Event Model) gồm Nguồn phát sinh (Source), Đối tượng sự kiện (Event) và Đối tượng lắng nghe (Listener/Adapter). Triển khai các giao diện sự kiện:ActionListener,MouseListener,MouseMotionListener,KeyListener,WindowListener,ItemListener. - Bài 5 – Lập trình GUI Nâng cao: Hướng dẫn xây dựng các thành phần tương tác phức tạp: danh sách lựa chọn (
JComboBox,JList), hộp thoại chuẩn (JDialog,JOptionPane,JFileChooser,JColorChooser), hệ thống thực đơn (JMenuBar,JMenu,JMenuItem,JPopupMenu), khung chứa chuyên biệt (JScrollPane,JSplitPane,JTabbedPane), thanh điều khiển (JProgressBar,JSlider,JSpinner), cấu trúc phân cấp cây (JTree,TreeNode,TreeModel) và bảng dữ liệu hai chiều (JTable,TableModel,DefaultTableModel). - Bài 6 – Các Kỹ thuật Lập trình Nâng cao:
- Đồ họa 2D: Lớp
Graphics2D, phương thức vẽ/tô màu (paint,repaint,drawString,drawImage), quản lý ảnh bằngImage,Toolkitvà đồng bộ tải ảnh quaMediaTracker. - Xử lý ngoại lệ: Phân loại Checked Exceptions, Runtime Exceptions, Errors; cấu trúc
try-catch-finally, ném biệt lệ vớithrow,throwsvà xây dựng lớp ngoại lệ tùy biến kế thừa từException. - Cơ chế Vào/Ra (I/O): Mô hình luồng dữ liệu (Stream), phân tầng luồng mức thấp (
FileInputStream,FileOutputStream,PipedInputStream) và luồng mức cao (BufferedInputStream,DataInputStream,ObjectInputStream). Xử lý luồng ký tự (Reader,Writer), thao tác nhập từ bàn phím vớiBufferedReadervà cơ chế lưu trữ đối tượng tuần tự (Serializable). - Đa luồng (Multithreading): Khái niệm tiến trình và tiểu trình; vòng đời luồng; 3 cách khởi tạo luồng (implements
Runnable, extendsThread, extendsTimerTask); thiết lập độ ưu tiên (setPriority), đồng bộ hóa khối lệnh/phương thức với từ khóasynchronized, xử lý bế tắc tài nguyên (Deadlock) và cơ chế liên lạc giữa các luồng quawait(),notify(),notifyAll().
- Đồ họa 2D: Lớp
- Bài 7, 8, 9 – Công nghệ Di động J2ME và Lập trình MIDlet: Phân tầng kiến trúc J2ME gồm máy ảo KVM, cấu hình CLDC/CDC, hồ sơ MIDP 1.0/2.0 và các gói mở rộng (WMA, MMA, RMS, Bluetooth). Quy trình phát triển ứng dụng di động với Sun Wireless Toolkit (WTK) và plugin EclipseME. Vòng đời ứng dụng MIDlet (
startApp,pauseApp,destroyApp), quản lý hiển thị vớiDisplayvàDisplayable. Lập trình giao diện mức cao dạngScreen(Alert,Form,TextField,DateField,Gauge,ImageItem,ChoiceGroup,Ticker) và giao diện mức thấpCanvas/GameCanvascho đồ họa trò chơi tương tác (quản lý trạng thái phím,Sprite,TiledLayer,LayerManager).
Kiến thức nền tảng được xây dựng
Giáo trình thiết lập hệ thống nguyên lý khoa học máy tính thông qua môi trường Java:
- Mô hình Thực thi Độc lập Nền tảng: Nguyên lý mã bytecode chạy trên JVM giúp chương trình "viết một lần, chạy mọi nơi" (Write Once, Run Anywhere).
- Mô hình Hướng đối tượng Thực hành: Triển khai chặt chẽ các quan hệ kế thừa đơn, đóng gói dữ liệu qua phạm vi truy xuất (
public,protected,private, mặc định) và trừu tượng hóa bằnginterface. - Mô hình Kiến trúc Giao diện: Ứng dụng mô hình MVC trong thư viện Swing và mô hình phân tách cấu hình phần cứng (Configuration - Profile) trong kiến trúc thiết bị hạn chế tài nguyên (J2ME).
- Mô hình Đồng thời và Quản lý Tài nguyên: Nguyên lý khóa đơn nguyên (Monitor Lock), đoạn mã giới hạn (Critical Section) và kiểm soát luồng I/O theo kiến trúc đường ống (Piped Streams / Decorator Streams).
Kỹ năng phát triển
Thông qua nội dung giảng dạy, người học hình thành các kỹ năng kỹ thuật và tư duy phân tích:
- Kỹ năng thiết kế mã nguồn: Tổ chức cây thư mục gói hợp lý, quản lý không gian tên, cấu hình đường dẫn biên dịch
CLASSPATHvà xuất bản tệp nén.jar. - Kỹ năng xây dựng giao diện tương tác: Phối hợp các bộ quản lý Layout lồng nhau, bắt và xử lý sự kiện bàn phím, chuột, sự kiện kích hoạt điều khiển.
- Kỹ năng lập trình hệ thống: Đọc/ghi tệp nhị phân, xử lý văn bản đa ngôn ngữ định dạng UTF-8, truyền nhận đối tượng qua mạng hoặc tệp lưu trữ.
- Kỹ năng lập trình đồng thời và đồ họa di động: Phân luồng tác vụ nền, tránh nghẽn luồng xử lý giao diện (EDT), xây dựng hoạt cảnh trò chơi 2D sử dụng khung lưới và quản lý lớp ảnh trên thiết bị cầm tay.
Phương pháp giảng dạy và học tập
Giáo trình áp dụng phương pháp sư phạm tiếp cận từ cú pháp cơ bản đến cấu trúc phân tầng phức tạp, kết hợp song song giữa lý thuyết mô tả và mã nguồn thực thi mẫu.
Phương pháp tiếp cận sư phạm
- Quy nạp từ ví dụ cụ thể: Mỗi khái niệm trừu tượng (như đa hình tham chiếu hay cơ chế khóa đồng bộ) đều bắt đầu từ một bài toán thực tế (tính lương nhân viên, giao dịch tài khoản ngân hàng, chuyển động phản xạ của quả bóng trong cửa sổ).
- Trực quan hóa cơ chế vận hành: Sử dụng sơ đồ hình học để biểu diễn các khái niệm trừu tượng như bảng phân bổ ô lưới của
GridBagConstraints, kiến trúc ngăn xếp khi gọi phương thức, mô hình Nguồn - Bộ nghe sự kiện và sơ đồ cây phân cấp củaJTree/TableModel.
Hệ thống bài tập và thực hành
Tài liệu cung cấp hệ thống bài tập phong phú, chia làm 3 cấp độ:
- Bài tập minh họa có hướng dẫn (Mã định danh C_VD):**
- C1_VD1 đến C1_VD4: Xử lý số thực, tìm ước số chung lớn nhất (USCLN), phân tích tách từ trong xâu, tính toán tham số truyền qua dòng lệnh (
args). - C2_VD1, C2_VD2, C2_VD4: Xây dựng lớp
Nhan_viencó thuộc tính tĩnh cập nhật mức lương cơ bản; kế thừa lớp hình học từHinhTronsangHinhElip; thiết kế đa giao diện thử nghiệm. - Bài tập đồ họa/đa luồng: Xây dựng ứng dụng vẽ chấm tròn theo vệt kéo chuột, chương trình đa luồng mô phỏng giao dịch rút/gửi tiền tài khoản và ứng dụng truyền nhận thông điệp qua đường ống (
PipedStream).
- C1_VD1 đến C1_VD4: Xử lý số thực, tìm ước số chung lớn nhất (USCLN), phân tích tách từ trong xâu, tính toán tham số truyền qua dòng lệnh (
- Bài tập tự làm: Yêu cầu sinh viên tự lập trình hoàn chỉnh thuật toán tính khoảng cách tọa độ, sắp xếp và thống kê mảng số nguyên, đếm tần suất xuất hiện ký tự, tính tích hai ma trận vuông cấp N trên giao diện Swing.
- Bài tập kiểm tra điều kiện: Bài tập viết tay dành cho đánh giá thường xuyên (ví dụ: xử lý mảng số thực giảm dần, tính tổng số dương và trung bình số âm).
Hướng dẫn tự học và đánh giá
Người học được khuyến nghị thực hiện quy trình 4 bước:
- Đọc hiểu cú pháp và giải thích tham số trong từng slide bài giảng.
- Tự tay gõ lại mã nguồn trên trình soạn thảo, biên dịch thủ công qua lệnh
javacđể hiểu cơ chế báo lỗi và đường dẫn tệp. - Mở rộng bài toán bằng cách thêm các ràng buộc nghiệp vụ (bắt biệt lệ dữ liệu nhập sai, thiết lập thuộc tính giao diện).
- Cài đặt môi trường Sun WTK và bộ giả lập điện thoại để kiểm thử các MIDlet trên môi trường tài nguyên hạn chế.
Điểm nổi bật và cập nhật
- So sánh đối chiếu đa nền tảng: Tài liệu cung cấp bảng so sánh trực quan giữa Java và Microsoft .NET (C#, VB), giữa Java và C++, chỉ rõ ưu điểm về độ độc lập hệ nền, tính an toàn bộ nhớ và nhược điểm về tốc độ thực thi do phải thông qua bộ thông dịch JVM.
- Bao quát hoàn chỉnh thư viện Swing và kiến trúc MVC: Giáo trình không dừng lại ở các điều khiển cơ bản mà đi sâu vào các cấu trúc hiển thị dữ liệu phức tạp (
JTree,JTable) kết hợp các mô hình dữ liệu trừu tượng (TreeModel,TableModel,DefaultTableModel), phản ánh đúng thực tế phát triển phần mềm máy tính. - Tích hợp toàn diện nhánh công nghệ di động J2ME: Khác với các tài liệu chỉ tập trung vào Java Standard Edition (J2SE), giáo trình dành trọn 3 chương (Bài 7, 8, 9) để trang bị kiến trúc di động kinh điển (KVM, CLDC, MIDP), quy cách đóng gói tệp thực thi di động (
.jad,.jar) và kỹ thuật phát triển Game 2D chuyên nghiệp (GameCanvas,Sprite,TiledLayer,LayerManager). - Giải quyết trực diện các bài toán hệ thống kinh điển: Đưa ra ví dụ minh họa cụ thể cho hiện tượng Deadlock đa luồng giữa hai tài khoản ngân hàng và mô hình Bài toán Sản xuất – Tiêu thụ (Producer – Consumer) sử dụng các lệnh điều khiển luồng
wait()vànotify().
Đối tượng sử dụng giáo trình
| Đối tượng | Mục đích & Cách thức sử dụng | Yêu cầu tiên quyết |
|---|---|---|
| Sinh viên Đại học ngành CNTT (Năm 2 - Năm 3) | Dùng làm tài liệu học tập chính khóa cho học phần Lập trình Java, Lập trình Hướng đối tượng hoặc Lập trình Thiết bị Di động. | Kiến thức cơ bản về logic lập trình, cấu trúc dữ liệu và giải thuật. |
| Giảng viên Đại học / Cao đẳng | Dùng làm đề cương chi tiết, khung bài giảng lý thuyết và ngân hàng bài tập thực hành trên lớp. | Thành thạo môi trường JDK, Eclipse/JCreator và các công cụ giả lập J2ME. |
| Lập trình viên & Người tự học | Tài liệu tham khảo hệ thống hóa nền tảng Java Core, cơ chế quản lý bộ nhớ, mô hình xử lý đa luồng và kiến trúc GUI. | Đã có kinh nghiệm lập trình cơ bản với C/C++ hoặc một ngôn ngữ có cấu trúc. |
Câu hỏi thường gặp
1. Giáo trình này phù hợp với ai?
Giáo trình được thiết kế chuẩn hóa cho sinh viên đại học chuyên ngành Công nghệ thông tin, Kỹ thuật phần mềm và Hệ thống thông tin, cũng như những người học cần nắm vững bản chất ngôn ngữ Java từ nền tảng hướng đối tượng đến lập trình hệ thống.
2. Cần kiến thức nền nào để học giáo trình này hiệu quả?
Người học cần có kiến thức nhập môn lập trình căn bản (khái niệm biến, kiểu dữ liệu, hàm, mảng, thuật toán lặp và rẽ nhánh). Sự hiểu biết trước về cú pháp ngôn ngữ C/C++ sẽ giúp tiếp cận nhanh hệ thống từ khóa và toán tử trong Java.
3. Điểm khác biệt cơ bản giữa thư viện AWT và Swing được nêu trong giáo trình là gì?
AWT (Abstract Window Toolkit) là thư viện đồ họa thế hệ đầu, hoạt động dựa trên các thành phần gốc của hệ điều hành (Native Components) thông qua đối tượng trung gian (Peer Objects), do đó được gọi là "Heavyweight". Ngược lại, Swing hoạt động độc lập hoàn toàn với hệ nền, do chính Java dựng hình, được gọi là "Lightweight", cung cấp khả năng tùy biến giao diện cao và vận hành theo mô hình kiến trúc MVC (Model-View-Controller).
4. Quy trình biên dịch và chạy một chương trình Java được tài liệu hướng dẫn ra sao?
Quy trình gồm 3 bước chính:
- Soạn thảo mã nguồn lưu trong tệp có phần mở rộng
.java(tên tệp phải trùng khớp tuyệt đối với tên lớppublicchứa hàmmain). - Dịch mã nguồn sang mã bytecode bằng trình biên dịch:
javac TênTệp.java(tạo ra tệp.class). - Khởi chạy chương trình thông qua máy ảo Java:
java TênLớp [tham_số_nếu_có].
5. Một bộ ứng dụng di động MIDlet hoàn chỉnh trên J2ME gồm những tệp tin nào?
Một ứng dụng MIDlet Suite gồm hai thành phần chính:
- Tệp JAR (
.jar): Chứa toàn bộ các tệp mã máy bytecode (.class), tài nguyên đồ họa/âm thanh và tệp đặc tảManifest. - Tệp JAD (
.jad- Java Application Descriptor): Chứa các thông tin mô tả ứng dụng như tên MIDlet, phiên bản, nhà cung cấp (MIDlet-Vendor), kích thước tệp JAR, cấu hình (CLDC-1.1) và hồ sơ (MIDP-2.0).
Kết luận
Tài liệu học tập Lập trình Java của Khoa Công nghệ Tin học – Viện Đại học Mở Hà Nội là một giáo trình kỹ thuật có cấu trúc bài bản, tính sư phạm cao và nội dung bám sát khung đào tạo đại học chính quy. Bằng việc kết nối mạch lạc từ cú pháp ngôn ngữ căn bản, tư duy mô hình hóa hướng đối tượng, kỹ thuật thiết kế đồ họa Desktop (Swing) cho đến các giải pháp hệ thống nâng cao (I/O, Đa luồng) và ứng dụng di động (J2ME), tài liệu cung cấp đầy đủ nền tảng lý thuyết và năng lực thực hành cho người học công nghệ thông tin. Lộ trình học tập đề xuất là thực hành tuần tự theo từng bài giảng, hoàn thành đầy đủ các bài tập minh họa mã nguồn và kiểm thử ứng dụng trên môi trường giả lập chuyên dụng.