# Thực thi một chương trình java Trong phần này, ta sẽ đi tìm hiểu về cách thực thi một chương trình java từ dòng lệnh (`commandline`). ## Các lớp Java được thực thi khi nào - Lớp Java có thể thực thi khi nó chứa phương thức `main`, JVM sẽ tìm và thực thi các dòng code nằm trong đó. Ta có thể hiểu `main` như một điểm đánh dấu, giúp cho JVM tìm và thực thi code, nếu không có nó JVM sẽ không biết nên thực thi phương thức nào. - Một chương trình có thể có nhiều lớp thực thi (lớp chứa phương thức main), nhưng JVM chỉ tìm 1 phương thức để thực thi. ![class executable](https://hackmd.io/_uploads/SkKuCVQEp.pn) ## Phương thức main Đây là một phương thức bắt buộc nếu bạn muốn thực thi một class. ``` public class HelloExam { public static void main(String args[]) { System.out.println("Hello exam"); } } ``` Phương thức `main` phải tuân thủ một số quy tắc sau: - Nó phải là `public method` - Nó phải là `static method` - Nó phải được đặt tên là `main` - Kiểu trả về là `void` - Đối số truyền vào phải là một mảng String hoặc `Varargs` (Varargs cũng là một mảng, ví dụ: String... args) ![4](https://hackmd.io/_uploads/HJ7sgHmEp.png) Một số ví dụ về cách khai báo phương thức `main`: ``` public static void main(String... args) // hợp lệ public static void main(String args...) // không hợp lệ // tên đối số public static void main(String[] arguments) // hợp lệ public static void main(String[] HelloWorld) // hợp lệ nhưng không rõ nghĩa // khai báo mảng đối số public static void main(String[] args) // hợp lệ public static void main(String minnieMouse[]) // hợp lệ // các keyword có thể hoán đổi vị trí cho nhau public static void main(String[] args) // cách này dễ đọc và được sử dụng nhiều static public void main(String[] args) ``` Mỗi một class chỉ chứa 1 phương thức `main` duy nhất để thực thi, nếu có nhiều hơn 1 phương thức `main` thì các phương thức đó gọi là `overloaded method`, bắt buộc các phương thức đó phải khác kiểu trả về, hoặc khác đối số truyền vào, nếu không sẽ gây ra lỗi. ![5](https://hackmd.io/_uploads/r1oN7r74a.png) ## Thực thi chương trình Java từ commandline Hầu hết hiện nay chúng ta đều sử dụng IDE (Integrated Development Environment), nó đã tích hợp hết để ta có thể dễ dàng chạy 1 chương trình java chỉ bằng 1 cú click chuột. Ta có đoạn code sau và sẽ thực thi chúng bằng `commandline` ``` public class HelloExam { public static void main(String args[]) { System.out.println("Hello exam"); } } ``` Để thực thi đoạn mã trên, ta sẽ gõ `java HelloExam` ở `commandline` và sẽ nhận được kết quả như sau: ![6](https://hackmd.io/_uploads/SkagBrQET.png) Như đã tìm hiểu ở trên, ta có thể truyền các đối số dòng lệnh vào cho phương thức `main` thông qua `commandline`, ví dụ: ``` public class HelloExamWithParameters { public static void main(String args[]) { System.out.println(args[0]); System.out.println(args[1]); } } ``` ![7](https://hackmd.io/_uploads/rkyDHr7Va.png) ## Kết luận Bài viết này đã giúp ta hiểu rõ hơn về thực thi một chương trình java, và cách thực thi chúng thông qua `commandline` ## Tài liệu tham khảo [OCA Java SE 8 Programmer I Certification Guide - Mala Gupta](https://www.amazon.com/OCA-Java-Programmer-Certification-Guide/dp/1617293253)