GIÁO TRÌNH CORE JAVA 2

10 198 1
GIÁO TRÌNH CORE JAVA 2

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

Thông tin tài liệu

Định nghĩa Lập trình hướng Đối tượng (Objectoriented Programming).Nhận thức về Trừu tượng hóa Dữ liệu (Data Abstraction).Định nghĩa một Lớp (Class).Định nghĩa một Đối tượng (Object).Nhận thức được sự khác biệt giữa Lớp và Đối tượng.Nhận thức được sự cần thiết đối với phương thức Thiết lập (Construction) và Hủy (Destruction).Định nghĩa tính Bền vững (Persistence).Định nghĩa về tính đóng gói dữ liệu (Data Encapsulation)Hiểu biết về tính Thừa kế (Inheritance).Định nghĩa tính Đa hình (Polymorphism).Liệt kê những ưu điểm của phương pháp hướng Đối tượng.

Chương NHẬP MÔN JAVA Mục tiêu      Nắm đặc trưng Java Các loại chương trình viết Java Ðịnh nghĩa máy ảo Java (Java Virtual Machine) Các nội dung JDK (Java Development Kit) Sơ lược đặc trưng Java 2.1 Giới thiệu Java Java ngôn ngữ lập trình Sun Microsystems giới thiệu vào tháng năm 1995 Từ đó, trở thành công cụ lập trình lập trình viên chuyên nghiệp Java xây dựng tảng C C++ Do sử dụng cú pháp C đặc trưng hướng đối tượng C++ Vào năm 1991, nhóm kỹ sư Sun Microsystems có ý định thiết kế ngôn ngữ lập trình để điều khiển thiết bị điện tử Tivi, máy giặt, lò nướng, … Mặc dù C C++ có khả làm việc trình biên dịch lại phụ thuộc vào 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 đắt Vì để loại CPU có trình biên dịch riêng tốn Do nhu cầu thực tế đòi hỏi ngôn ngữ chạy nhanh, gọn, hiệu độc lập thiết bị tức chạy nhiều loại CPU khác nhau, môi trường khác “Oak” đời vào năm 1995 đổi tên thành Java Mặc dù mục tiêu ban đầu cho Internet đặ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 2.1.1 Java Java ngôn ngữ lập trình hướng đối tượng, dùng Java để viết chương trình hướng chức Java giải hầu hết công việc mà ngôn ngữ khác làm Java ngôn ngữ vừa biên dịch vừa thông dịch Đầu tiên mã nguồn biên dịch công cụ JAVAC để chuyển thành dạng ByteCode Sau thực thi loại máy cụ thể nhờ chương trình thông dịch Mục tiêu nhà thiết kế Java cho phép người lập trình viết chương trình lần chạy phần cứng cụ thể Ngày nay, Java sử dụng rộng rãi để viết chương trình chạy Internet Nó 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 Nó không dùng để viết ứng dụng chạy đơn lẻ hay mạng mà để xây dựng trình điều khiển thiết bị cho điện thoại di động, PDA, … 2.2 Các đặc trưng Java  Đơn giản  Hướng đối tượng  Độc lập phần cứng hệ điều hành Chương 2: Nhập môn Java 23      Mạnh Bảo mật Phân tán Đa luồng Động 2.2.1 Đơn giản Những người thiết kế mong muốn phát triển ngôn ngữ dễ học quen thuộc với đa số người lập trình Do Java loại bỏ đặc trưng phức tạp C C++ thao tác trỏ, thao tác định nghĩa chồng toán tử (operator overloading),… Java không sử dụng lệnh “goto” file header (.h) Cấu trúc “struct” “union” loại bỏ khỏi Java 2.2.2 Hướng đối tượng Java thiết kế xoay quanh mô hình hướng đối tượng Vì Java, tiêu điểm liệu phương pháp thao tác lên liệu Dữ liệu phương pháp mô tả trạng thái cách ứng xử đối tượng Java 2.2.3 Độc lập phần cứng hệ điều hành Đây khả chương trình viết máy chạy đâu Chúng thể mức mã nguồn mức nhị phân Ở mức mã nguồn, người lập trình cần mô tả kiểu cho biến Kiểu liệu Java quán cho tất hệ điều hành phần cứng khác Java có riêng thư viện lớp sở Vì chương trình Java viết máy dịch chạy trơn tru loại máy khác mà không cần viết lại Tính độc lập mức nhị phân, chương trình biên dịch chạy nhiều (phần cứng, hệ điều hành) khác mà không cần dịch lại mã nguồn Tuy cần có phần mềm máy ảo Java (sẽ đề cập đến phần sau) hoạt động trình thông dịch máy thực thi compiler IBM compiler Sparc compiler Macintosh H ình 2.1 Cách biên dịch truyền thống Đối với chương trình viết C, C++ ngôn ngữ khác, trình biên dịch chuyển tập lệnh thành mã máy (machine code),hay lệnh vi xử lý Những lệnh phụ thuộc vào CPU máy bạn Nên muốn chạy loại CPU khác, phải biên dịch lại chương trình Hình 2.1 thể trình để thực thi chương trình viết C++ loại 24 Core Java máy khác Hình 2.2 Quá trình thực thi chương trình viết Java loại máy khác IBM Bytecode Trình biên dịch Trình thông dịch Java (Java Interpreter) Độc lập (Platform independent) Sparc Macintosh Hình 2.2 Dịch chương trình Java Môi trường phát triển Java chia làm hai phần: Trình biên dịch trình thông dịch Không C hay C++, trình biên dịch Java chuyển mã nguồn thành dạng bytecode độc lập với phần cứng mà chạy CPU Nhưng để thực thi chương trình dạng bytecode, máy cần phải có trình thông dịch Java hay gọi máy ảo Java Máy ảo Java chuyển bytecode thành mã lệnh mà CPU thực thi 2.2.4 Mạnh mẽ Java ngôn ngữ yêu cầu chặt chẽ kiểu liệu Phải khai báo kiểu liệu tường minh viết chương trình Java kiểm tra lúc biên dịch thời gian thông dịch Java loại bỏ loại lỗi lập trình định Java không sử dụng trỏ phép toán trỏ Java kiểm tra tất truy nhập đến mảng, chuỗi thực thi để đảm bảo truy nhập không giới hạn kích thước Java kiểm tra chuyển đổi kiểu liệu từ dạng sang dạng khác lúc thực thi Trong môi trường lập trình truyền thống, lập trình viên phải tự cấp phát nhớ Trước chương trình kết thúc phải tự giải phóng nhớ cấp Vấn đề nảy sinh lập trình viên quên giải phóng nhớ xin cấp trước Trong chương trình Java, lập trình viên bận tâm đến việc cấp phát nhớ Qúa trình cấp phát, giải phóng thực tự động, nhờ dịch vụ thu nhặt đối tượng không sử dụng (garbage collection) Cơ chế bẫy lỗi Java giúp đơn giản hóa qúa trình xử lý lỗi hồi phục sau lỗi 2.2.5 Bảo mật Viruses nguyên nhân gây lo lắng việc sử dụng máy tính Trước có Java, lập trình viên phải quét virus tệp trước tải hay thực chúng Thông thường việc không loại trừ hoàn toàn virus Chương 2: Nhập môn Java 25 Ngoài chương trình thực thi có khả tìm kiếm đọc thông tin nhạy cảm máy người sử dụng mà người sử dụng không hay biết Java cung cấp môi trường quản lý thực thi chương trình Nó cho đoạn mã an toàn Và Java không ngôn ngữ lập trình tuý mà cung cấp nhiều mức để kiểm soát tính an toàn thực thi chương trình Ở mức đầu tiên, liệu phương thức đóng gói bên lớp Chúng truy xuất thông qua giao diện mà lớp cung cấp Java không hỗ trợ trỏ không cho phép truy xuất nhớ trực tiếp Nó ngăn chặn không cho truy xuất thông tin bên kích thước mảng kỹ thuật tràn cung cấp kỹ thuật dọn rác nhớ Các đặc trưng tạo cho Java an toàn tối đa có khả động cao Trong lớp thứ hai, trình biên dịch kiểm soát để đảm bảo mã an toàn, tuân theo nguyên tắc Java Lớp thứ ba đảm bảo trình thông dịch Chúng kiểm tra xem bytecode có đảm bảo qui tắc an toàn trước thực thi Lớp thứ tư kiểm soát việc nạp lớp vào nhớ để giám sát việc vi phạm giới hạn truy xuất trước nạp vào hệ thống 2.2.6 Phân tán Java dùng để xây dựng ứng dụng làm việc nhiều phần cứng, hệ điều hành giao diện đồ họa Java thiết kế hỗ trợ cho ứng dụng chạy mạng Vì chúng sử dụng rộng rãi công cụ phát triển Internet, nơi sử dụng nhiều tảng khác 2.2.7 Đa luồng Chương trình Java đa luồng(Multithreading) để thực thi công việc đồng thời Chúng cung cấp giải pháp đồng luồng Đặc tính hỗ trợ đa này cho phép xây dựng ứng dụng mạng chạy hiệu 2.2.8 Động Java thiết kế ngôn ngữ động để đáp ứng cho môi trường mở Các chương trình Java chứa nhiều thông tin thực thi nhằm kiểm soát truy nhập đối tượng lúc chạỵ Điều cho phép khả liên kết động mã 2.3 Các kiểu chương trình Java Chúng ta xây dựng loại chương trình Java sau: 2.3.1 Applets Applet chương trình tạo để sử dụng Internet thông qua trình duyệt hỗ trợ Java IE hay Netscape Bạn dùng Java để xây dựng Applet Applet nhúng bên trang Web Khi trang Web hiển thị trình duyệt, Applet tải thực thi trình duyệt 26 Core Java 2.3.2 Ứng dụng thực thi qua dòng lệnh Các chương trình chạy từ dấu nhắc lệnh không sử dụng giao diện đồ họa Các thông tin nhập xuất thể dấu nhắc lệnh 2.3.3 Ứng dụng đồ họa Đây chương trình Java chạy độc lập cho phép người dùng tương tác qua giao diện đồ họa 2.3.4 Servlet Java thích hợp để phát triển ứng dụng nhiều lớp Applet chương trình đồ họa chạy trình duyệt máy trạm Ở ứng dụng Web, máy trạm gửi yêu cầu tới máy chủ Máy chủ xử lý gửi kết trở lại máy trạm Các Java API chạy máy chủ chịu trách nhiệm xử lý máy chủ trả lời yêu cầu máy trạm Các Java API chạy máy chủ mở rộng khả ứng dụng Java API chuẩn Các ứng dụng máy chủ gọi Servlet Applet máy chủ Xử lý Form HTML cách sử dụng đơn giản Servlet Chúng dùng để xử lý liệu, thực thi giao dịch thường thực thi thông qua máy chủ Web 2.3.5 Ứng dụng sở liệu Các ứng dụng sử dụng JDBC API để kết nối tới sở liệu Chúng Applet hay ứng dụng, Applet bị giới hạn tính bảo mật 2.4 Máy ảo Java (JVM-Java Virtual Machine) Máy ảo Java trái tim ngôn ngữ Java Môi trường Java bao gồm năm phần tử sau:  Ngôn ngữ  Ðịnh nghĩa Bytecode  Các thư viện lớp Java/Sun  Máy ảo Java (JVM)  Cấu trúc file class Các phần tử tạo cho Java thành công  Ðịnh nghĩa Bytecode  Cấu trúc file class  Máy ảo Java (JVM) Khả động file class cho phép chương trình Java viết lần chạy đâu Khả có nhờ giúp đỡ máy ảo Java 2.4.1 Máy ảo Java ? Máy ảo phần mềm dựa sở máy tính ảo Nó có tập hợp lệnh logic để xác định hoạt động máy tính Người ta xem hệ điều hành thu nhỏ Nó thiết lập 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 Trình biên dịch chuyển mã nguồn thành tập lệnh máy ảo mà không phụ thuộc vào phần cứng cụ thể Trình thông dịch máy chuyển tập lệnh thành chương trình thực thi Máy ảo tạo môi trường bên để thực thi lệnh cách: Chương 2: Nhập môn Java 27  Nạp file class  Quản lý nhớ  Dọn “rác” Việc không quán phần cứng làm cho máy ảo phải sử dụng ngăn xếp để lưu trữ thông tin sau:  Các “Frame” chứa trạng thái phương thức  Các toán hạng mã bytecode  Các tham số truyền cho phương thức  Các biến cục Khi JVM thực thi mã, ghi cục có tên “Program Counter” sử dụng Thanh ghi trỏ tới lệnh thực Khi cần thiết, thay đổi nội dung ghi để đổi hướng thực thi chương trình Trong trường hợp thông thường lệnh nối tiếp thực thi Một khái niệm thông dụng khác Java trình biên dịch “Just In TimeJIT” Các trình duyệt thông dụng Netscape hay IE có JIT bên để tăng tốc độ thực thi chương trình Java Mục đích JIT chuyển tập lệnh bytecode thành mã máy cụ thể cho loại CPU Các lệnh lưu trữ sử dụng gọi đến 2.4.2 Quản lý nhớ dọn rác Trong C, C++ hay Pascal người lập trình sử dụng phương pháp trực tiếp để cấp phát thu hồi nhớ vùng “Heap” Heap vùng nhớ lớn phân chia cho tất luồng Để quản lý Heap, nhớ theo dõi qua danh sách sau:  Danh sách vùng nhớ chưa sử dụng  Danh sách vùng cấp Khi có yêu cầu cấp phát nhớ, hệ thống xem xét danh sách chưa cấp phát để lấy khối nhớ có kích cỡ sát với lượng nhớ cần thiết Kỹ thuật cấp phát giảm tối thiểu việc phân mảnh heap “Coalescing” kỹ thuật khác giảm thiểu việc phân mảnh heap cách gom lại vùng nhớ chưa dùng liền thành khối lớn Còn kỹ thuật xếp lại phần dùng để tạo vùng nhớ chưa sử dụng lớn gọi “Compaction” Java sử dụng hai heap riêng biệt cho cấp phát vùng nhớ tĩnh vùng nhớ động Một heap (heap tĩnh) chứa định nghĩa lớp, danh sách phương thức Heap lại (heap động) chia làm hai phần cấp phát theo hai chiều ngược Một bên chứa đối tượng bên chứa trỏ trỏ đến đối tượng “Handle” cấu trúc bao gồm hai trỏ Một trỏ đến bảng phương thức đối tượng, trỏ thứ hai trỏ đến đối tượng Chú ý “compaction” cần cập nhật lại giá trị trỏ cấu trúc “handle” Thuật toán dọn rác áp dụng cho đối tượng đặt heap động Khi có yêu cầu nhớ, trình quản lý heap trước tiên kiểm tra danh sách nhớ chưa cấp phát Nếu không tìm thấy khối nhớ phù hợp (về kích cỡ) trình dọn rác kích hoạt hệ thống rỗi Nhưng đòi hỏi nhớ cấp bách trình dọn rác kích hoạt Trình dọn rác gọi phương thức finalize đối tượng trước dọn dẹp đối tượng Hàm dọn dẹp tài nguyên bên file mở 28 Core Java Công việc không trình dọn rác thực thi 2.4.3 Quá trình kiểm tra file class Việc kiểm tra áp dụng cho tất file class nạp lên nhớ để đảm bảo tính an toàn Trình “Class Loader” kiểm tra tất file class không thuộc hệ điều hành với mục đích giám sát tuân thủ nghi thức để phát file class có nguy gây hư hỏng đến nhớ, hệ thống file cục bộ, mạng hệ điều hành Quá trình kiểm tra xem xét tổng thể tính nguyên vẹn lớp File class bao gồm ba phần logic là:  Bytecode  Thông tin Class phương thức, giao diện giá trị số tập hợp trình biên dịch  Các thuộc tính lớp Các thông tin file class xem xét riêng rẽ bảng sau:  Bảng Field chứa thuộc tính  Bảng Method chứa hàm class  Bảng Interface và số Quá trình kiểm tra file class thực bốn mức:  Mức thực việc kiểm tra cú pháp để đảm bảo tính cấu trúc tính toàn vẹn cú pháp file class nạp  Mức thứ hai xem xét file class để đảm bảo file không vi phạm nguyên tắc quán ngữ nghĩa  Mức thứ ba kiểm tra bytecode Trong bước kiểm tra số thông số truyền vào phương thức, khả truy xuất sai số mảng, chuỗi, biểu thức  Mức thứ tư kiểm tra thời gian thực thi để giám sát việc lại mà ba bước chưa làm Ví dụ liên kết tới lớp khác thực thi, hay kiểm tra quyền truy xuất Nếu điều thỏa mãn, lớp khởi tạo 2.5 Bộ công cụ phát triển JDK (Java Development Kit) Sun Microsystem đưa ngôn ngữ lập trình Java qua sản phẩm có tên Java Development Kit (JDK) Ba phiên là: Java 1.0 - Sử dụng lần đầu vào năm 1995 Java 1.1 – Ðưa năm 1997 vớI nhiều ưu điểm phiên trước Java – Phiên JDK bao gồm Java Plug-In, chúng cho phép chạy trực tiếp Java Applet hay JavaBean cách dùng JRE thay cho sử dụng môi trường thực thi mặ c định trình duyệt JDK chứa công cụ sau: 2.5.1 Trình biên dịch, 'javac' Cú pháp: javac [options] sourcecodename.java 2.5.2 Trình thông dịch, 'java' Cú pháp: Chương 2: Nhập môn Java 29 java [options] classname 2.5.3 Trình dịch ngược, 'javap' javap dịch ngược bytecode in thông tin thuộc tính (các trường), phương thức lớp Cú pháp: javap [options] classname 2.5.4 Công cụ sinh tài liệu, 'javadoc' Tiện ích cho phép ta tạo tệp HTML dựa lời giải thích mã chương trình (phần nằm cặp dấu /* */) Cú pháp: javadoc [options] sourcecodename.java 2.5.5 Chương trình tìm lỗi - Debug, 'jdb‘ Cú pháp: jdb [options] sourcecodename.java hay jdb -host -password [options] sourcecodename.java 2.5.6 Chương trình xem Applet , 'appletviewer‘ Cú pháp: appletviewer [options] url 2.6 Java Core API Nhân Java API thay phiên JFC 1.1 Một số package thông dụng được: 2.6.1 java.lang Chứa lớp quan trọng ngôn ngữ Java Chúng bao gồm kiểu liệu ký tự, số nguyên,… Chúng chứa lớp làm nhiệm vụ xử lý lỗi lớp vào chuẩn Một vài lớp quan trọng khác String hay StringBuffer 2.6.2 java.applet Đây package nhỏ chứa lớp Applet Các Applet nhúng trang Web hay chạy appletviewer thừa kế từ lớp 2.6.3 java.awt Package đươợc gọi Abstract Window Toolkit (AWT) Chúng chứa lớp dùng để tạo giao diện đồ họa Một số lớp bên là: Button, GridBagLayout, Graphics 2.6.4 java.io Cung cấp thư viện vào chuẩ Chúng cho phép tạo quản lý dòng liệu theo nhiều cách 2.6.5 java.util Package cung cấp số công cụ hữu ích Một vài lớp package là: Date, Hashtable, Stack, Vector StringTokenizer 2.6.6 java.net Cung cấp khả giao tiếp với máy từ xa Cho phép tạo kết nối tới Socket URL 2.6.7 java.awt.event 30 Core Java Chứa lớp, giao diện dùng để xử lý kiện chương trình chuột, bàn phím 2.6.8 java.rmi Công cụ để gọi hàm từ xa Chúng cho phép tạo đối tượng máy khác sử dụng đối tượng máy cục 2.6.9 java.security Cung cấp công cụ cần thiết để mã hóa đảm bảo tính an toàn liệu truyền máy trạm máy chủ 2.6.10 java.sql Package chứa Java DataBase Connectivity (JDBC), dùng để truy xuất sở liệu quan hệ Oracle, SQL Server, 2.7 Các đặc trưng Java Các phiên trước Java thích hợp để viết ứng dụng nhỏ Web xây dựng ứng dụng chạy mạng để đảm nhiệm toàn công việc của công ty hệ thống phân tán Java đáp ứng yêu cầu Một vài đặc trưng chúng là: - Swing Đây tập lớp giao diện dùng để tạo giao diện ứng dụng đồ họa "Look and Feel" - Kéo thả Đây khả di chuyển thông tin ứng dụng hay phần khác chương trình - Java 2D API Chứa tập hợp lớp hỗ trợ cho ảnh đồ họa hai chiều - Java sound Tập hợp hoàn toàn lớp đặc trưng âm Java - RMI RMI (Remote Method Invocation) cho phép ứng dụng gọi phương thức đối tượng máy khác cho phép giao tiếp với chúng Chương 2: Nhập môn Java 31 Tóm tắt  Java ngôn ngữ biên dịch thông dịch  Các đặc trưng Java Đơn giản Hướng đối tượng Độc lập phần cứng Mạnh Bảo mật Phân tán Đa luồng Động  Máy ảo JavaJava Development Kit  Các đặc trưng Java Kiểm tra tiến Bạn viết chương trình dạng thủ tục Java Java ngôn ngữ có kiểu liệu chặt chẽ Đúng/Sai Đúng/Sai .là chương trình Java chạy độc lập, sử dụng giao diện đồ họa để người sử dụng nhập liệu .sử dụng JDBC API để kết nối sở liệu hiểu dòng lệnh máy tính trừu tượng Coalescing Compaction gì? Lệnh sử dụng để dịch file mã nguồn java Lớp phải lớp cha applet, applet chương nhúng vào trang Web hay chạy Java AppletViewer Bài tập Cài đặt Java 2 Gõ lệnh sau dấu nhắc liệt kê tham số khác chúng:  javac  java 32 Core Java ... c định trình duyệt JDK chứa công cụ sau: 2. 5.1 Trình biên dịch, 'javac' Cú pháp: javac [options] sourcecodename .java 2. 5 .2 Trình thông dịch, 'java' Cú pháp: Chương 2: Nhập môn Java 29 java [options]... thực thi chương trình viết C++ loại 24 Core Java máy khác Hình 2. 2 Quá trình thực thi chương trình viết Java loại máy khác IBM Bytecode Trình biên dịch Trình thông dịch Java (Java Interpreter)... liên kết động mã 2. 3 Các kiểu chương trình Java Chúng ta xây dựng loại chương trình Java sau: 2. 3.1 Applets Applet chương trình tạo để sử dụng Internet thông qua trình duyệt hỗ trợ Java IE hay Netscape

Ngày đăng: 24/08/2017, 11:56

Từ khóa liên quan

Mục lục

  • Chương 2

    • NHẬP MÔN JAVA

    • Mục tiêu

    • 2.1 Giới thiệu Java

      • 2.1.1 Java là gì

      • 2.2 Các đặc trưng của Java

        • 2.2.1 Đơn giản

        • 2.2.2 Hướng đối tượng

        • 2.2.3 Độc lập phần cứng và hệ điều hành

          • H ình 2.1 Cách biên dịch truyền thống

          • Hình 2.2 Dịch chương trình Java

          • 2.2.4 Mạnh mẽ

          • 2.2.5 Bảo mật

          • 2.2.6 Phân tán

          • 2.2.7 Đa luồng

          • 2.2.8 Động

          • 2.3 Các kiểu chương trình Java

            • 2.3.1 Applets

            • 2.3.2 Ứng dụng thực thi qua dòng lệnh

            • 2.3.3 Ứng dụng đồ họa

            • 2.3.4 Servlet

            • 2.3.5 Ứng dụng cơ sở dữ liệu

            • 2.4 Máy ảo Java (JVM-Java Virtual Machine)

              • 2.4.1 Máy ảo Java là gì ?

              • 2.4.2 Quản lý bộ nhớ và dọn rác

              • 2.4.3 Quá trình kiểm tra file .class

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan