JVM ไม่สามารถรันโค้ดที่คุณเขียนได้โดยตรง รู้วิธีรันโปรแกรมที่เขียนด้วยไบต์โค้ดเท่านั้น Bytecode เป็นภาษาระดับต่ำที่ใกล้เคียงกับรหัสเครื่อง

สำหรับ Java การคอมไพล์คือการแปลโปรแกรม (ระดับสูง) ที่เขียนด้วยภาษาจาวาเป็นโปรแกรมเดียวกันที่เขียนด้วยไบต์โค้ด

รหัสของคุณถูกส่งในไฟล์ .java ไปยังคอมไพเลอร์ หากคอมไพเลอร์ไม่พบข้อผิดพลาดในโค้ด คุณจะได้รับไฟล์ไบต์โค้ดใหม่กลับมา ไฟล์นี้จะมีชื่อเหมือนกันแต่นามสกุลต่างกัน: .class หากมีข้อผิดพลาดในโค้ด คอมไพเลอร์จะแจ้งให้คุณทราบว่า "โปรแกรมไม่ได้คอมไพล์" จากนั้นคุณต้องอ่านข้อความแสดงข้อผิดพลาดแต่ละข้อความและแก้ไขข้อผิดพลาด

คุณใช้คำสั่ง javac เพื่อเรียกใช้คอมไพเลอร์ ซึ่งเป็นส่วนหนึ่งของ JDK (Java Development Kit) นั่นหมายความว่าหากคุณติดตั้งเฉพาะ JRE (Java Runtime Environment) คุณจะไม่มีคอมไพเลอร์! คุณจะมี JVM ซึ่งสามารถเรียกใช้ bytecode เท่านั้น ดังนั้นเราจึงติดตั้ง JDK และส่ง ไฟล์ .javaไปยังคอมไพเลอร์

ตัวอย่างเช่น ลองใช้โปรแกรมอย่างง่ายที่มีเอาต์พุตคอนโซล:


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

มาบันทึกโค้ดนี้ไปที่ไฟล์D:/temp/MySolution.javaกัน

มาคอมไพล์โค้ดของเราโดยใช้คำสั่ง


D:\temp>javac MySolution.java

หากไม่มีข้อผิดพลาดในการคอมไพล์ในโค้ด ไฟล์ MySolution.classจะปรากฏในโฟลเดอร์temp ยิ่งไปกว่านั้น ไฟล์ MySolution.javaที่มีรหัสของคุณจะไม่ไปไหน มันยังคงอยู่ตรงที่เดิม แต่ตอนนี้MySolution.classมี bytecode และพร้อมให้ JVM รันโดยตรง

ตัวอย่างของเราทำได้ง่ายที่สุด แต่แม้แต่โปรเจ็กต์ที่ใหญ่ที่สุดและซับซ้อนที่สุดก็ยังใช้คำสั่งjavac ดังนั้นจะเป็นประโยชน์มากสำหรับคุณที่จะรู้ว่ามันทำงานอย่างไร

คุณสามารถรวบรวมมากกว่าหนึ่งชั้นเรียนในแต่ละครั้ง ตัวอย่างเช่น สมมติว่ามีไฟล์Cat.java อื่นอยู่ ใน โฟลเดอร์ temp :


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

หรือสิ่งนี้:


D:\temp>javac *.java

เมื่อคอมไพล์แล้ว ไฟล์ .classสามารถบรรจุใน ไฟล์ jarซึ่งสามารถย้ายไปยังคอมพิวเตอร์เครื่องอื่นได้อย่างสะดวกและเรียกใช้บนคอมพิวเตอร์เหล่านั้น นี่คือตัวอย่างวิธีสร้าง ไฟล์ jar :


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

ที่ไหน:

  • jarเป็นคำสั่งสำหรับสร้าง ไฟล์ .jarซึ่งรวมอยู่ใน JDK

  • cvfeเป็นตัวเลือกบรรทัดคำสั่งที่มีความหมายดังต่อไปนี้:

    • – สร้างไฟล์jar ใหม่

    • v – แสดงข้อมูลอย่างละเอียด

    • f – ระบุว่าเราต้องการให้ผลลัพธ์ของเครื่องมือใส่ลงในไฟล์ ( myjar.jar )

    • e – ระบุจุดเริ่มต้น ( MySolution ) คือคลาสที่มีเมธอดหลัก

  • MySolution.java Cat.class – ชื่อไฟล์ที่คั่นด้วยช่องว่างที่จะบรรจุลงในไฟล์jar

นี่คือวิธีที่เราเรียกใช้ ไฟล์ jar ที่เป็นผลลัพธ์ :


D:\temp>java -jar myjar.jar
สำหรับข้อมูลรายละเอียดเพิ่มเติม:
เครื่องมือ javac และjar มีวิธีใช้ ในตัว เมื่อต้องการแสดง ให้เรียกใช้ต่อไปนี้บนบรรทัดคำสั่ง:
  • javac -- ช่วยด้วย
  • โถ -- ช่วย