Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 149 trang
THÔNG TIN TÀI LIỆU
Nội dung
LẬP TRÌNHHƯỚNGĐỐITƯỢNG VỚI JAVA Hà nội, ngày 19 tháng 02 năm 2006 1 Lời nói đầu Lậptrìnhhướngđốitượng được xây dựng dựa trên hướng tiếp cận bài toán thực tế theo phương pháp mới, có rất nhiều khái niệm mới đòi hỏi phải có sự thay đổi về tư duy lập trình. Hiện nay có rất nhiều công cụ hỗ trợ phương pháp lậptrìnhhướngđốitượng giúp cho việc tạo ra các sản phẩm phần mềm có chất lượng cao. Ngôn ngữ lậptrìnhJava do hãng Sun phát triển từ đầu những năm 90 và là một trong những ngôn ngữ lậptrìnhhướngđốitượng được ưa chuộng nhất hiện nay. Nhờ đặc tính hỗ trợ rất mạnh cho lậptrình web và có thể chạy trên rất nhiều hệ điều hành khác nhau. Java là ngôn ngữ thuần khiết hướngđốitượng và được thiết kế theo cách tiếp cận hướngđốitượng và kế thừa, dễ dàng nâng cấp và sử dụng lại các phần code chương trình đã viết trước đó. Về mặt cú pháp, Java rất giống với ngôn ngữ C++, nhưng loại bớt tính khó và ít dùng của ngôn ngữ C++, loại bỏ phần con trỏ… Với mục đích chính là đơn giản, thân thiện và chạy trên nhiều môi trường khác nhau, bộ biên dịch và thông dịch với dung lượng nhỏ gọn dề cài đặt Tác giả trân trọng cảm ơn sự tham gia đóng góp của PGS TS. Phạm Văn ẤT, ThS. Nguyễn Thị Mười Phương, KS.Vũ Anh Tuấn cùng toàn thể độc giả đã góp ý và giúp đỡ để hoàn chỉnh nội dung bài giảng này. Mặc dù đã rất cố gắng nhưng tài liệu này chắc chắn không tránh khỏi những sai sót. Rất mong nhận được các ý kiến đóng góp của bạn đọc để kịp thời chỉnh lý. Xin trân trọng cảm ơn ! Vũ Anh Tuấn 2 Mục lục Chương I: Giới thiệu về lậptrìnhhướngđốitượng .5 1.1 Các cách tiếp cận trong lậptrình .5 1.2 Những khái niệm cơ bản của lậptrìnhhướngđốitượng .6 Chương II: Giới thiệu về lậptrình với Java .12 2.1 Giới thiệu chung .12 2.2 Môi trường Java .14 2.3 Các dạng chương trình ứng dụng của Java .15 Chương III:Các thành phần cơ sở của Java 21 3.1 Các phần tử cơ sở của Java 21 3.2 Các kiểu dữ liệu nguyên thủy 23 3.3 Khai báo các biến 24 3.4 Khởi tạo giá trị cho các biến 26 3.5 Cấu trúc tệp chương trìnhJava .27 3.6 Các phép toán và các biểu thức .29 3.7 Truyền tham số và các lời gọi hàm 33 Chương IV: Các lớp cơ sở và các cấu trúc dữ liệu 39 4.1 Cấu trúc mảng trong Java 39 4.2 Các lớp cơ bản của Java .42 4.3 Lớp String 47 Chương V: Các lệnh điều khiển dòng thực hiện và xử lý ngoại lệ 52 5.1 Các câu lệnh điều khiển rẽ nhánh chương trình 52 5.2 Các câu lệnh lặp .54 5.3 Các câu lệnh chuyển vị 55 5.4 Xử lý ngoại lệ .57 Chương VI: Lớp và các thành phần của .63 lớp các đốitượng .63 6.1 Định nghĩa lớp .63 6.2 Định nghĩa hàm thành phần 63 6.3 Phạm vi và các thuộc tính kiểm soát truy nhập các thành phần của lớp 66 6.4 Các đối số của chương trình 78 4.5 Toán tử tạo lậpđốitượng 78 6.6 Quan hệ kế thừa giữa các lớp 81 6.7 Giao diện và sự mở rộng quan hệ kế thừa trong Java .85 Chương VII: Lậptrình ứng dụng Applet và AWT .89 7.1 Lậptrình applet .89 7.2 Các thành phần của AWT .92 7.3 Bố trí và sắp xếp các thành phần giao diện trong các ứng dụng .101 7.4 Xử lý các sự kiện 105 Chương VIII: Các luồng vào/ra và các tệp dữ liệu 112 8.1 Các luồng vào/ra .112 8.2 Lớp File 112 8.3 Các luồng vào/ra xử lý theo byte 114 8.4 Đọc, ghi các ký tự: Reader, Writer .120 Chương IX: Kết nối các cơ sở dữ liệu với JDBC và lậptrình trên mạng .125 9.1 Giới thiệu tổng quan về ODBC và JDBC .125 9.2 Chương trình ứng dụng JDBC 127 3 9.3 Lậptrình trên mạng .136 Từ điển giải thích các thuật ngữ có liên quan đến ngôn ngữ lậptrìnhJava 141 Tài liệu tham khảo .149 4 Chương I: Giới thiệu về lậptrìnhhướngđốitượng Nội dung: Hai cách tiếp cận trong lập trình: lậptrìnhhướng chức năng và lậptrìnhhướngđối tượng; Những khái niệm, thành phần cơ bản của phương pháp hướngđối tượng; Ngôn ngữ lậptrìnhhướngđối tượng. 1.1 Các cách tiếp cận trong lậptrình 1. Phương pháp lậptrìnhhướng chức năng dựa chủ yếu vào việc phân tách các chức năng chính của bài toán thành những chức năng đơn giản hơn và thực hiện làm mịn dần từ trên xuống ( top-down ). 2. Phương pháp lậptrình mà ngày nay chúng ta nghe nói tới nhiều đó là lậptrìnhhướngđốitượng . Lậptrìnhhướngđốitượng dựa trên nền tảng là các đối tượng. Lậptrìnhhướngđốitượng cho phép chúng ta kết hợp những tri thức bao quát về các quá trình thực tế với những khái niệm trừu tượng được sử dụng trong máy tính. Chương trình hay hệ thống hướngđốitượng được xem như là tập các lớp đốitượngtương tác với nhau để thực hiện các yêu cầu của bài toán đặt ra. 1.1.1 Lậptrìnhhướng chức năng (thủ tục) Trọng tâm của cách tiếp cận này là các hàm chức năng. Cấu trúc của chương trình được xây dựng theo cách tiếp cận hướng chức năng có dạng như Hình H1-1. Hình H1-1 Cấu trúc của chương trìnhhướng chức năng Kỹ thuật phân rã các chức năng (hàm) theo cách tiếp cận top-down để tạo ra cấu trúc phân cấp. Chương trình được xây dựng theo cách tiếp cận hướng chức năng thực chất là tập các chương trình con. Các hàm trong một chương trình phải có liên hệ, trao đổi được với nhau. Như chúng ta đã biết, các hàm (các bộ phận chức năng) chỉ có thể trao đổi được với nhau thông qua các tham số, nghĩa là phải sử dụng biến chung (global). Mỗi hàm có thể có vùng dữ liệu riêng còn gọi là dữ liệu cục bộ (local). 5 Hình H1-2 Quan hệ giữa dữ liệu và hàm trong LTHTT Đối với những chương trình, dự án tin học lớn, phức tạp đòi hỏi nhiều người, nhiều nhóm tham gia thì những thay đổi của những biến dữ liệu liệu chung sẽ ảnh hưởng tới tất cả những ai có liên quan tới chúng. Tính mở (open) của hệ thống kém. Tách dữ liệu khỏi chức năng xử lý nên vấn đề che giấu, bảo vệ thông tin trong hệ thống là kém, nghĩa là vấn đề an toàn, an ninh dữ liệu là rất phức tạp. Không hỗ trợ việc sử dụng lại và kế thừa nên chất lượng và giá thành của các phần mềm rất khó được cải thiện. 1.1.2 Lậptrìnhhướngđốitượng Đặt trọng tâm vào các đốitượng . Dữ liệu được gắn chặt với các hàm thành phần và chúng được tổ chức, quản lý truy nhập theo nhiều mức khác nhau. Phân tích bài toán thành tập các thực thể được gọi là các lớp đối tượng, Hệ thống được xem như là một tập các lớp đốitượng và các đốitượng đó trao đổi với nhau thông qua việc gửi và nhận các thông điệp (message), do vậy một chương trìnhhướngđốitượng thực sự có thể hoàn toàn không cần sử dụng biến chung. Tính mở cao hơn. Cơ chế bao bọc, che giấu thông tin của phương pháp hướngđốitượng giúp tạo ra được những hệ thống an toàn, an ninh cao hơn cách tiếp cận hướng chức năng. Hỗ trợ rất mạnh nguyên lý sử dụng lại nhiều nhất có thể và tạo ra mọi khả năng để kế thừa những lớp đã được thiết kế, lậptrình tốt để nhanh chóng tạo ra được những phần mềm có chất lượng, gia thành rẻ hơn và đáp ứng các yêu cầu của người sử dụng. 1.2 Những khái niệm cơ bản của lậptrìnhhướngđốitượng Phương pháp hướngđốitượng được xây dựng dựa trên một tập các khái niệm cơ sở: 1. Đốitượng (object), 2. Lớp đốitượng (class), 3. Trừu tượng hóa dữ liệu (Data Abstracttion), 4. Bao bọc và che giấu thông tin (Encapsulation and Information Hiding), 5. Mở rộng, kế thừa giữa các (Inheritance), 6. Đa xạ và nạp chồng (Polymorphism and Overloading), 7. Liên kết động (Dynamic Binding), 6 8. Truyền thông điệp (Message Passing). Đốitượng Đốitượng là thực thể của hệ thống, của CSDL và được xác định thông qua định danh ID ( IDentifier ) của chúng. Mỗi đốitượng có tập các đặc trưng bao gồm cả các phần tài sản thường là các dữ liệu thành phần hay các thuộc tính mô tả các tính chất và các phương thức, các thao tác trên các dữ liệu để xác định hành vi của đốitượng đó. Đốitượng là những thực thể được xác định trong thời gian hệ thống hướngđốitượng hoạt động. Như vậy đốitượng có thể biểu diễn cho người, vật, hay một bảng dữ liệu hoặc bất kỳ một hạng thức nào đó cần xử lý trong chương trình. Lớp đốitượng Lớp là bản mẫu hay một kiểu chung cho tất cả những đốitượng có những đặc trưng giống nhau. Đốitượng chính là thể hiện (cá thể) của một lớp xác định. Trong lậptrìnhhướngđối tượng, lớp được xem là đồng nhất với kiểu dữ liệu trừu tượng (ADT - Abstract Data Type được Barbara đề xuất vào những năm 1970). Lập trìnhhướngđốitượng là cách phân chia chương trình thành các đơn thể (các lớp) bằng cách tạo ra các vùng bộ nhớ cho cả dữ liệu lẫn hàm và chúng sẽ được sử dụng như các mẫu để tạo ra bản sao từng đốitượng khi chúng được tạo ra trong hệ thống. Lớp chính là tập các đốitượng có cùng các thuộc tính và hành vi giống nhau. Các thành phần của lớp có thể chia thành ba vùng quản lý chính: + công khai ( public ), + được bảo vệ ( protected ), + riêng ( private ). Hình H1-3 Lớp Student trong UML UML (Unified Modeling Language) là ngôn ngữ mô hình hoá hình thức, thống nhất và trực quan. Phần lớn các thông tin trong mô hình được thể hiện bởi các ký hiệu đồ hoạ, biểu đồ thể hiện mối quan hệ giữa các thành phần của hệ thống một cách thống nhất và có logic chặt chẽ. UML được sử dụng để đặc tả, xây dựng và làm tài liệu cho các tác phẩm (Artifacts), các kết quả của các pha phân tích, thiết kế và lập trìnhhướngđốitượng dưới dạng các biểu đồ, bản mẫu hay các trang Web . UML là ngôn ngữ chuẩn công nghiệp để lập kế hoạch chi tiết phát triển phần mềm. Hiện nay nhiều hãng sản xuất phần mềm lớn như: Microsoft,IBM, HP, Oracle, Digital Equipment Corp., Texas Instruments, Rational Software, v.v., sử dụng UML như là chuẩn cho ngôn ngữ mô hình hoá hệ thống phần mềm. Trừu tượng hóa dữ liệu Trừu tượng hóa là cách biểu diễn những đặc tính chính và bỏ qua những chi tiết. Trừu tượng hóa là sự mở rộng khái niệm kiểu dữ liệu và cho phép định nghĩa những phép toán trừu tượng trên các dữ liệu trừu tượng. 7 Khi xây dựng phần mềm thì nguyên lý trừu tượng hoá được thực hiện thông qua việc trừu tượng hoá các chức năng, hàm (thuật toán) và trừu tượng hoá các kiểu dữ liệu nguyên thuỷ. Bao bọc và che giấu thông tin Đóng gói dữ liệu và các hàm vào một đơn vị cấu trúc (gọi là lớp) được xem như một nguyên tắc bao bọc thông tin . Kỹ thuật này cho phép xác định các vùng đặc trưng riêng, công khai hay được bảo vệ bao gồm cả dữ liệu và các câu lệnh nhằm điều khiển hoặc hạn chế những truy nhập tuỳ tiện của những đốitượng khác. Chính các hàm thành phần công khai của lớp sẽ đóng vai trò như là giao diện giữa các đốitượng và với phần còn lại của hệ thống. Nguyên tắc bao bọc dữ liệu để ngăn cấm sự truy nhập trực tiếp trong lậptrình được gọi là sự che giấu thông tin . Hình H1-4 Bao bọc và che giấu thông tin của lớp đốitượng Sự mở rộng, kế thừa giữa các lớp Một lớp này được quyền sử dụng một số tính chất (cả dữ liệu và các hàm thành phần) của các lớp khác. Nguyên lý chung của kế thừa thì chỉ những thuộc tính, hàm thành phần được bảo vệ và công khai là được quyền kế thừa , còn những thuộc tính, hàm thành phần riêng là không được phép kế thừa . Hỗ trợ hai nguyên lý kế thừa: kế thừa đơn và kế thừa bội. Kế thừa đơn là một lớp có thể kế thừa từ một lớp cơ sở, còn kế thừa bội là một lớp có thể kế thừa từ nhiều hơn một lớp cơ sở. Ngôn ngữ C++ hỗ trợ cả hai nguyên lý kế thừa, nhưng Java chỉ hỗ trợ thực hiện kế thừa đơn . Nguyên lý kế thừa đơn hỗ trợ cho việc tạo ra cấu trúc cây phân cấp các lớp. 8 Hình H1-5 Cấu trúc phân cấp các lớp theo quan hệ kế thừa trong UML Trong LTHĐT, khái niệm kế thừa kéo theo ý tưởng sử dụng lại. Nghĩa là từ một lớp đã được xây dựng, chúng ta có thể bổ sung thêm một số tính chất tạo ra một lớp mới kế thừa lớp cũ mà không làm thay đổi những cái đã có. Có thể diễn đạt cơ chế kế thừa như sau: o Lớp A kế thừa lớp B sẽ có (không tường minh) tất cả các thuộc tính, hàm đã được xác định trong B, ở những vùng được phép kế thừa (được bảo vệ, công khai), o Bổ sung thêm một số thuộc tính, hàm để mô tả được đúng các hành vi của những đốitượng mà lớp A quản lý. Đa xạ (tương ứng bội) và nạp chồng Đa xạ tương tự như trong toán học . Đa xạ là kỹ thuật được sử dụng để mô tả khả năng gửi một thông điệp chung tới nhiều đốitượng mà mỗi đốitượng lại có cách xử lý riêng theo ngữ cảnh của mình . Hình H1-6 Tương ứng bội của hàm Ve() Nạp chồng (Overloading) là một trường hợp của đa xạ. Nạp chồng là khả năng của một khái niệm (như các phép toán chẳng hạn) có thể được sử dụng với nhiều nội dung thực hiện khác nhau khác nhau tuỳ theo ngữ cảnh, cụ thể là tuỳ thuộc vào kiểu và số các tham số của chúng. int Cong(int, int); // Cộng hai số nguyên float Cong(float, float); // Cộng hai số thực Complex Cong(Complex, Complex); // Cộng hai số phức String Cong(String, String); // Ghép hai xâu String Cong(String, int); // Ghép một xâu với một số nguyên Liên kết động Liên kết thông thường (liên kết tĩnh) là dạng liên kết được xác định ngay khi dịch chương trình. Hầu hết các chương trình được viết bằng Pascal, C đều là dạng liên kết tình. Liên kết động là dạng liên kết các hàm, chức năng khi chương trình thực hiện các lời gọi các hàm, chức năng đó. Liên kết động liên quan chặt chẽ với những khái niệm đa xạ và kế thừa trong lập trìnhhướngđối tượng. Truyền thông điệp Chương trìnhhướngđốitượng (được thiết kế và lậptrình theo phương pháp hướngđối tượng) bao gồm một tập các đốitượng và mối quan hệ giữa các đốitượng đó với nhau. Lậptrình trong ngôn ngữ hướngđốitượng bao gồm các bước sau: 1. Tạo ra các lớp đốitượng và mô tả hành vi của chúng, 2. Tạo ra các đốitượng theo định nghĩa của các lớp, 9 3. Xác định sự trao đổi thông tin giữa các đốitượng trong hệ thống. Trong chương trình, thông điệp gửi đến cho một đốitượng chính là để yêu cầu thực hiện một công việc cụ thể, nghĩa là sử dụng những hàm tương ứng để xử lý dữ liệu đã được khai báo trong lớp đốitượng đó. Ví dụ, khi hệ thống máy tính muốn in một tệp dataFile thì máy tính hiện thời (: Computer ) gửi đến cho đốitượng :PrinterServer một yêu cầu Print(dataFile) . Hình H1-7 Truyền thông điệp giữa các đốitượng Mỗi đốitượng chỉ tồn tại trong thời gian nhất định. Các ưu điểm của lập trìnhhướngđốitượng 1. Thông qua nguyên lý kế thừa, chúng ta có thể loại bỏ được những đoạn chương trìnhlặp lại, dư thừa trong quá trình mô tả các lớp và mở rộng khả năng sử dụng các lớp đã được xây dựng. 2. Chương trình được xây dựng từ những đơn thể (đối tượng) trao đổi với nhau nên việc thiết kế và lậptrình sẽ được thực hiện theo quy trình nhất định chứ không phải dựa vào kinh nghiệm và kỹ thuật như trước. Điều này đảm bảo rút ngắn được thời gian xây dựng hệ thống và tăng năng suất lao động. 3. Nguyên lý che giấu thông tin giúp người lậptrình tạo ra được những chương trình an toàn không bị thay đổi bởi những đoạn chương trình khác một cách tuỳ tiện. 4. Có thể xây dựng được ánh xạ các đốitượng của bài toán vào đốitượng của chương trình. 5. Cách tiếp cận thiết kế đặt trọng tâm vào dữ liệu, giúp chúng ta xây dựng được mô hình chi tiết và phù hợp với thực tế. 6. Những hệ thống hướngđốitượng dễ mở rộng, nâng cấp thành những hệ lớn hơn. 7. Kỹ thuật truyền thông điệp trong việc trao đổi thông tin giữa các đốitượng giúp cho việc mô tả giao diện với các hệ thống bên ngoài trở nên đơn giản hơn. 8. Có thể quản lý được độ phức tạp của những sản phẩm phần mềm. Các ngôn ngữ lậptrìnhhướngđốitượng Dựa vào khả năng đáp ứng các khái niệm về hướngđối tượng, chúng ta có thể chia ra làm hai loại: 1. Ngôn ngữ lậptrình dựa trên đốitượng (object-based), 2. Ngôn ngữ lậptrìnhhướngđốitượng (object-oriented). 10 [...]... Machine) Chương trìnhJava được thực hiện như sau: Hình H2- 2 Quá trình dịch và thông dịch chương trìnhJavaJava giải quyết vấn đề tốc độ bằng cách dịch chương trình nguồn sang các mã byte (byte codes) Khi JVM thực hiện, nó sẽ tìm các đốitượ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) Hình H2-3 Quá trình phát triển chương trìnhJava Tóm lại, C/C++ và Java là những ngôn... hành, miễn là ở đó có chương trình thông dịch (máy Java ảo - JVM) Cơ chế xử lý các Web Site, Tại sao lại sử dụng Java cho công nghệ Web, Tổ chức thực hiện các dự án ứng dụng với Java Xử lý các Web Site Một đặc trưng của Java được đặc biệt chú ý là khả năng nạp xuống (downloaded) Web 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 Với Java, Web được bổ sung thêm sự liên kết giữa các... triển phần mềm với Java như: Visual J++, Symatec’s Cafe, Borland JBuilder, JDK, v.v Bộ JDK do Sun cung cấp theo Web Site: http:/ /java. sun.com Bộ JDK cung cấp các công cụ và các chương trình sau: 1 javac Chương trình dịch chuyển mã nguồn sang mã byte 2 java Bộ thông dịch: Thực thi các ứng dụng độc lập, các tệp tin class trực tiếp 3 appletviewer Bộ thông dịch: Thực thi các ứng dụng nhúng ( java applet) từ... trình duyệt như 4 Nestcape, hay Internet Explorer, v.v 5 javadoc Bộ tạo tài liệu dạng HTML từ mã nguồn cùng các chú thích bên trong 6 jdb Bộ gỡ lỗi (java debuger) 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, v.v 7 javah Bộ tạo lập header của C và cho phép chương trình C gọi các phương thức (hàm) của Java và ngược lại 8 javap Trình dịch ngược Assembler Hiển thị các phương... đuôi “ .java hay không; 3) Dịch tệp chương trình để tạo ra các tệp mã byte code với các đuôi “.class” tương ứng; 4) Sử dụng chương trình thông dịch của Java để chạy chương trình đã dịch Ví dụ 2.1 Chương trình ứng dụng độc lập Bài toán: Xây dựng lớp Hello .java // Hello .java public class Hello { public static void main(String args[]) { System.out.println(“Chao ban”); } } Tệp chương trình Hello .java có... void main(String args[]){ // Nội dung thực hiện của chương trình } Dịch và thực hiện chương trình Hello .java javac Hello .java Kết quả của lệnh dịch trên là hai tệp Hello.class, chứa mã byte code của lớp tương ứng java Hello Kết quả thực hiện của chương trình: Chao ban Lưu ý: Khi thực hiện với Java thì chỉ cần viết tên lớp chứa hàm main() và không cần đưa thêm đuôi class, Khi soạn thảo chương trình... được tạo ra ở thư mục chứa chương trình nguồn Phải chỉ rõ thư mục chứa các chương trình dịch, thông dịch javac.exe, java. exe Thường các chương trình này được cài đặt và được lưu ở thư mục, ví dụ c:\jdk1.4\bin \java Mọi lớp trong Java đều mặc định xem là lớp con của lớp Object được xây dựng sẵn trong gói java. lang và gói này cũng được xem là mặc định sử dụng mà không cần nhập (import) vào như các gói khác... nhúng Applet Applet là loại chương trìnhJava đặc biệt mà khi thực hiện phải được nhúng vào chương trình ứng dụng khác như các trình duyệt Web Browser , hoặc appletviewer của JDK 16 Ví dụ 1.2 Java Applet Bài toán: Nhiệm vụ tương tự như bài toán ở ví dụ 2.1 nhưng thực hiện theo applet // Hello .java import java. applet.Applet; // Nhập thư viện chứa lớp Applet import java. awt.Graphics; // Nhập thư viện chứa... Applet lẫn dạng độc lậpJava cho phép xây dựng chương trình chạy được cả ở Web Browser lẫn như một ứng dụng độc lập Một chương trình như thế phải: Định nghĩa lớp ứng dụng mở rộng, kế thừa từ lớp Applet,Trong lớp ứng dụng phải có hàm main() Ví dụ 2.3 Chương trình chạy được cả với Web Browser và chạy độc lập import java. awt.Graphics; // XinChao .java import java. awt.Frame; import java. applet.Applet; public... trúc tệp chương trìnhJava Tệp chương trìnhJava có thể có các phần được đặc tả như sau: Định nghĩa một gói là tùy chọn thông qua định danh của gói (package) Một số lệnh nhập import (0 hoặc nhiều) Một số định nghĩa lớp và interface có thể định nghĩa theo thứ tự bất kỳ Cấu trúc chương trìnhJava vì vậy có thể khái quát như sau: // Filename: NewApp .java Lưu ý: Tệp chương trìnhJava luôn có tên trùng . là máy Java ảo (JVM - Java Virtual Machine). Chương trình Java được thực hiện như sau: Hình H2- 2 Quá trình dịch và thông dịch chương trình Java Java giải. chương trình Hello .java javac Hello .java Kết quả của lệnh dịch trên là hai tệp Hello.class, chứa mã byte code của lớp tương ứng. java Hello Kết quả