คอมไพเลอร์ Java ของ Eclipse เป็นเพียงตัวคลุมรอบแกนกลางเดียวกันกับที่javac
โปรแกรมถูกล้อมรอบหรือเป็นคอมไพเลอร์แยกกันทั้งหมดหรือไม่ หากหลังทำไมพวกเขาจะบูรณาการล้อ?
คอมไพเลอร์ Java ของ Eclipse เป็นเพียงตัวคลุมรอบแกนกลางเดียวกันกับที่javac
โปรแกรมถูกล้อมรอบหรือเป็นคอมไพเลอร์แยกกันทั้งหมดหรือไม่ หากหลังทำไมพวกเขาจะบูรณาการล้อ?
คำตอบ:
Eclipse ได้ใช้คอมไพเลอร์ของตัวเองที่เรียกว่าEclipse Compiler สำหรับ Java (ECJ)
มันแตกต่างจาก javac ซึ่งเป็นคอมไพเลอร์ที่มาพร้อมกับ Sun JDK ข้อแตกต่างที่น่าสังเกตประการหนึ่งคือคอมไพเลอร์ Eclipse ให้คุณเรียกใช้โค้ดที่ไม่ได้รวบรวมอย่างถูกต้อง หากบล็อกของรหัสที่มีข้อผิดพลาดไม่เคยทำงานโปรแกรมของคุณจะทำงานได้ดี มิฉะนั้นจะมีข้อผิดพลาดระบุว่าคุณพยายามเรียกใช้รหัสที่ไม่ได้รวบรวม
ข้อแตกต่างอีกประการคือคอมไพเลอร์ Eclipse อนุญาตให้สร้างบิลด์จากภายใน Eclipse IDE กล่าวคือโค้ดทั้งหมดจะถูกคอมไพล์ทันทีที่คุณพิมพ์เสร็จ
ความจริงที่ว่า Eclipse มาพร้อมกับคอมไพเลอร์ของตัวเองก็ชัดเจนเช่นกันเพราะคุณสามารถเขียนรวบรวมและเรียกใช้โค้ด Java ใน Eclipse โดยไม่ต้องติดตั้ง Java SDK
ตัวอย่างเล็ก ๆ น้อย ๆ ที่ ECJ ต้องการมากกว่า javac คือ:
-proceedOnError
และมันจะไม่เพียงแค่ผลิตไฟล์ .class จากแหล่งที่มีข้อผิดพลาด
ทุกคนอธิบายแล้วว่าพวกเขาแตกต่างกัน นี่คือความแตกต่างของพฤติกรรมที่ฉันสังเกตุระหว่างคอมไพเลอร์ทั้งสอง พวกเขาทั้งหมดลงไปที่ข้อผิดพลาดใน (อย่างน้อย) หนึ่งในการใช้งาน
คราสในตัวคอมไพเลอร์จะขึ้นอยู่กับของไอบีเอ็มJikes คอมไพเลอร์จาวา (โปรดทราบว่า Eclipse เริ่มต้นชีวิตที่ IBM ด้วย) เป็นอิสระอย่างสมบูรณ์จากคอมไพเลอร์ Java ของ Sun ใน JDK javac
มันไม่ได้เป็นห่อหุ้มรอบดวงอาทิตย์
Jikes มีอยู่เป็นเวลานานมันเคยเร็วกว่าคอมไพเลอร์ JDK Java มาตรฐานมาก (แต่ฉันไม่รู้ว่ามันยังคงเป็นจริง) เหตุผลที่ IBM ต้องการเขียน Java คอมไพเลอร์ของตัวเอง: อาจเป็นเพราะเหตุผลการออกใบอนุญาต (พวกเขามีการติดตั้ง Java ของตัวเองด้วย)
มันเป็นคอมไพเลอร์แยกกันโดยสิ้นเชิง สิ่งนี้จำเป็นเนื่องจาก javac ไม่อนุญาตให้รวบรวมโค้ดที่เสียหายเล็กน้อยจากไซต์ eclipse
คอมไพเลอร์ Java ที่เพิ่มขึ้น ดำเนินการในฐานะผู้สร้าง Eclipse ขึ้นอยู่กับเทคโนโลยีที่พัฒนาจาก VisualAge สำหรับคอมไพเลอร์ Java โดยเฉพาะอย่างยิ่งมันช่วยให้การเรียกใช้และแก้จุดบกพร่องรหัสซึ่งยังคงมีข้อผิดพลาดที่ยังไม่ได้แก้ไข