JVM không thể trực tiếp chạy mã bạn viết. Nó chỉ biết cách thực thi các chương trình được viết bằng bytecode. Bytecode là ngôn ngữ cấp thấp gần với mã máy.

Đối với Java, biên dịch là bản dịch của một chương trình (cấp cao) được viết bằng Java thành cùng một chương trình được viết bằng mã byte.

Mã của bạn được chuyển trong tệp .java tới trình biên dịch. Nếu trình biên dịch không tìm thấy lỗi trong mã, thì bạn sẽ lấy lại tệp mã byte mới. Tệp này sẽ có cùng tên nhưng có phần mở rộng khác: .class . Nếu có lỗi trong mã, thì trình biên dịch sẽ cho bạn biết "chương trình không được biên dịch". Sau đó, bạn cần đọc từng thông báo lỗi và sửa lỗi.

Bạn sử dụng lệnh javac để gọi trình biên dịch, là một phần của JDK (Bộ công cụ phát triển Java). Điều đó có nghĩa là nếu bạn chỉ cài đặt JRE (Môi trường chạy thi hành Java), thì bạn sẽ không có trình biên dịch! Bạn sẽ chỉ có JVM, chỉ có thể chạy mã byte. Vì vậy, chúng tôi cài đặt JDK và chuyển tệp .java của chúng tôi tới trình biên dịch.

Ví dụ: hãy lấy một chương trình đơn giản với một số đầu ra của bàn điều khiển:


class MySolution {
   public static void main(String[] args) {
      System.out.println("Hi, command line!");
   }
}

Hãy lưu mã này vào tệp D:/temp/MySolution.java .

Hãy biên dịch mã của chúng tôi bằng lệnh


D:\temp>javac MySolution.java

Nếu không có lỗi biên dịch trong mã, tệp MySolution.class sẽ xuất hiện trong thư mục tạm thời . Hơn nữa, tệp MySolution.java chứa mã của bạn sẽ không biến mất. Nó vẫn ở đúng vị trí của nó. Nhưng bây giờ MySolution.class chứa mã byte và đã sẵn sàng để chạy trực tiếp bởi JVM.

Ví dụ của chúng tôi càng đơn giản càng tốt, nhưng ngay cả những dự án lớn nhất và phức tạp nhất cũng sử dụng lệnh javac . Vì vậy, nó sẽ rất hữu ích cho bạn để biết nó hoạt động như thế nào.

Bạn có thể biên dịch nhiều hơn một lớp cùng một lúc. Ví dụ: giả sử có một tệp Cat.java khác trong thư mục tạm thời :


D:\temp>javac MySolution.java Cat.java

hoặc cái này:


D:\temp>javac *.java

Sau khi được biên dịch, các tệp .class có thể được đóng gói trong một tệp jar , tệp này có thể được di chuyển thuận tiện sang các máy tính khác nhau rồi chạy trên chúng. Đây là một ví dụ về cách tạo tệp jar :


D:\temp>jar cvfe myjar.jar MySolution MySolution.class Cat.class

Ở đâu:

  • jar là lệnh tạo tệp .jar , có trong JDK

  • cvfe là các tùy chọn dòng lệnh với các ý nghĩa sau:

    • c – tạo một tệp jar mới

    • v – hiển thị thông tin chi tiết

    • f – cho biết rằng chúng tôi muốn đầu ra của công cụ được đưa vào một tệp ( myjar.jar )

    • e – chỉ ra điểm vào ( MySolution ), tức là lớp chứa phương thức chính

  • MySolution.java Cat.class – tên của các tệp được phân tách bằng dấu cách sẽ được đóng gói vào tệp jar .

Đây là cách chúng tôi chạy tệp jar kết quả :


D:\temp>java -jar myjar.jar
Để biết thêm thông tin chi tiết:
Các công cụ javacjar có sẵn trợ giúp. Để hiển thị nó, hãy chạy lệnh sau trên dòng lệnh:
  • javac --trợ giúp
  • lọ --help