Java compiler ( javac
), virtual machine (JVM) และตัวjava
เขียนเริ่มต้นเป็นภาษาใด?
Java compiler ( javac
), virtual machine (JVM) และตัวjava
เขียนเริ่มต้นเป็นภาษาใด?
คำตอบ:
การใช้ถ้อยคำที่แม่นยำของคำถามนั้นทำให้เข้าใจผิดเล็กน้อย: ไม่ใช่"JVM"หรือ"คอมไพเลอร์"เนื่องจากมีผู้ขาย JVM หลายราย (jrockit คือหนึ่ง IBM อีกคน) และคอมไพเลอร์หลายตัวที่นั่น
The Sun JVM จะเขียนในC
แม้ว่านี้ไม่จำเป็นต้องเป็นกรณี - JVM ที่ขณะที่มันวิ่งบนเครื่องของคุณเป็นขึ้นอยู่กับแพลตฟอร์มปฏิบัติการและด้วยเหตุนี้อาจได้รับการเขียนในภาษาใด ๆ ตัวอย่างเช่น IBM JVM ดั้งเดิมเขียนด้วยSmalltalk
ชวาห้องสมุด ( java.lang
, java.util
ฯลฯ มักจะเรียกว่าชวา API ) จะตัวเองเขียนใน Java แม้ว่าวิธีการทำเครื่องหมายว่าnative
จะได้รับการเขียนในหรือC
C++
ฉันเชื่อว่าคอมไพเลอร์ Java ของ Sun นั้นเขียนด้วยภาษาจาวาด้วย (แม้ว่าจะมีคอมไพเลอร์หลายตัวอยู่ก็ตาม)
คอมไพเลอร์ Java ตัวแรกได้รับการพัฒนาโดย Sun Microsystems และเขียนเป็น C โดยใช้ไลบรารีบางตัวจาก C ++ วันนี้คอมไพเลอร์ Java เขียนเป็น Java ขณะที่ JRE เขียนเป็น C
เราสามารถจินตนาการได้ว่าคอมไพเลอร์ Java เขียนใน Java เช่นนี้:
คอมไพเลอร์ Java ถูกเขียนเป็นโปรแกรม Java และคอมไพล์แล้วด้วยคอมไพเลอร์ Java ที่เขียนใน C (คอมไพเลอร์ Java ตัวแรก) ดังนั้นเราสามารถใช้คอมไพเลอร์ Java ที่คอมไพล์ใหม่ (เขียนเป็นภาษาจาวา) เพื่อคอมไพล์โปรแกรม Java
จากJava Docs
คอมไพเลอร์เขียนใน Java และรันไทม์เขียนใน ANSI C
จริงๆแล้ว Oracle JVM เขียนด้วยภาษา C ++ ไม่ใช่ C
ดูรหัส HotSpot JVM ได้ที่นี่: http://openjdk.java.net/groups/hotspot/
ลิงก์นี้ควรตอบคำถามของคุณ
ดูเหมือนว่าคอมไพเลอร์ตอนนี้เขียนใน Java แต่รันไทม์ถูกเขียนใน ANSI C
ในหลักการเกือบทุกอย่างมักจะ C
Jikes RVM , JVM แบบโฮสติ้งด้วยตนเองที่ใช้อย่างกว้างขวางเพื่อวัตถุประสงค์ในการวิจัยเขียนใน Java ไม่ใช่คนที่ทำงานบนเดสก์ท็อปของพวกเขา แต่มันอยู่ที่นั่นในรายการ "ตอนนี้เรามาอวดพลังทั่วไปของภาษากันเถอะ"
สมมติว่าคุณกำลังพูดถึง Hotspot JVM ซึ่งเป็น iirc ที่ Sun จัดทำขึ้นเป็นภาษา C ++ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเครื่องเสมือนต่างๆของ Java คุณสามารถตรวจสอบลิงค์นี้ javacเช่นเดียวกับคอมไพเลอร์ Java ส่วนใหญ่เขียนด้วยภาษา Java
(สำหรับข้อมูลเพิ่มเติมคุณสามารถตรวจสอบลิงค์นี้: https://docs.oracle.com/javase/specs/jvms/se7/html/ )