อะไรคือข้อแตกต่างระหว่าง default-jdk, ecj, gcj และ openjdk?


23

เช้านี้ฉันพยายามติดตั้งบางอย่างและพบข้อความเช่นนี้:

The program 'javac' can be found in the following packages:
 * default-jdk
 * ecj
 * gcj-4.6-jdk
 * gcj-4.7-jdk
 * openjdk-7-jdk
 * openjdk-6-jdk
Try: sudo apt-get install <selected package>

อะไรคือข้อแตกต่างระหว่าง default-jdk, ecj, gcj และ openjdk?

ขอบคุณล่วงหน้า.


1
นอกจากนี้ยังมี Jikes
Pacerier

คำตอบ:


16

เริ่มต้น JRE

นี้เป็นชุดที่เรียบง่ายซึ่งขึ้นอยู่กับOpenJDK-7-JRE (และเพื่อให้เป็นพื้นเทียบเท่ากับOpenJDK-7-JRE ) และเริ่มต้น JRE-หัวขาด จะติดตั้ง "มาตรฐาน Java หรือ Java เข้ากันได้กับ Runtime" ซึ่งเป็น OpenJDK 7 JRE

แพ็กเกจนี้ชี้ไปที่รันไทม์ Java หรือรันไทม์ที่เข้ากันได้กับ Java ที่แนะนำสำหรับสถาปัตยกรรม i386 ซึ่งเป็น openjdk-7-jre สำหรับ i386

ข้อมูล
แพ็คเกจการพึ่งพาแพ็คเกจ (saucy)

ECJ

นี่คือ "คอมไพเลอร์ Eclipse Java แบบสแตนด์อโลน" การติดตั้งจะไม่ติดตั้ง Eclipse เนื่องจากเป็นแพ็กเกจแบบสแตนด์อะโลน (ดูลิงก์การพึ่งพาด้านล่าง) มันมี "เวอร์ชั่นสแตนด์อโลนของคอมไพเลอร์ Eclipse JDT ซึ่งแจกจ่ายเป็นส่วนหนึ่งของ Eclipse" และเข้ากันได้กับ Java 1.3 ถึง 1.7

แพ็กเกจนี้จัดเตรียมเวอร์ชันสแตนด์อโลนของคอมไพเลอร์ Eclipse JDT ซึ่งแจกจ่ายเป็นส่วนหนึ่งของ Eclipse มันผ่าน JCK (Java Compatibility Kit) และเข้ากันได้กับ Java 1.3, 1.4, 1.5, 1.6 และ 1.7

ข้อมูล
แพ็คเกจการพึ่งพาแพ็คเกจ (saucy)

GCJ-4.6-jdk

(gcj-4.7-jdk เหมือนกัน แต่สำหรับ Java 7)

นี่คือส่วนหน้าของคอมไพเลอร์ GCC เพื่อรวบรวม Java bytecode และไฟล์ต้นฉบับ

GCJ เป็นส่วนหน้าของคอมไพเลอร์ GCC ซึ่งสามารถรวบรวมได้ทั้งซอร์ส Java (tm) และไฟล์ bytecode คอมไพเลอร์ยังสามารถสร้างไฟล์คลาส เครื่องมือการพัฒนา java อื่น ๆ จาก classpath จะรวมอยู่ในแพ็คเกจนี้

แพคเกจประกอบด้วยคอลเลกชันของสคริปต์ wrapper และ symlink มันมีไว้เพื่อให้อินเทอร์เฟซเหมือน Java-SDK กับชุดเครื่องมือ GCJ

มันหมายถึงการเป็นทางเลือกที่มาเปิดให้คอมไพเลอร์ Oracle Java ปิดแหล่งที่มา ดูเหมือนว่าส่วนใหญ่จะล้าสมัยและล้าสมัย (ไม่อัปเดต) ในขณะนี้ดูลิงก์ด้านล่าง (โดยเฉพาะการอัปเดตล่าสุดในหน้าแรกของ GCJ)

ข้อมูลแพ็คเกจ

Java Compiler (GCJ) ของ GNU เสียชีวิตหรือไม่ -
หน้าแรกของStack Overflow GCJ บน gnu.org (อัปเดต: ลิงก์หายไปแล้ว แต่วิกิ GCJ ยังคงพร้อมใช้งาน

OpenJDK-6-jdk

(openjdk-7-jdk เหมือนกัน แต่สำหรับ Java 7)

เวอร์ชันโอเพนซอร์สของแพลตฟอร์ม Java
จากWiki :

เป้าหมายหลักของโครงการ OpenJDK คือการสร้างการใช้งานโอเพนซอร์ซของแพลตฟอร์ม Java SE (6 และ 7) นี่เป็นเวอร์ชันเริ่มต้นของ Java ที่ Ubuntu ใช้และเป็นวิธีที่ง่ายที่สุดในการติดตั้ง

สรุปแพ็คเกจ:

OpenJDK เป็นสภาพแวดล้อมการพัฒนาสำหรับการสร้างแอปพลิเคชันแอปเล็ตและส่วนประกอบโดยใช้ภาษาการเขียนโปรแกรม Java

แพ็คเกจถูกสร้างโดยใช้ IcedTea build support และ patches จากโครงการ IcedTea

ข้อมูลแพ็คเกจ


นอกจากนี้ยังไม่ได้กล่าวถึงในคำถามของคุณคือ Oracle Java (เพราะมันไม่ได้อยู่ใน repos เริ่มต้น) ซึ่งฉันจะแสดงรายการด้านล่างเพื่อความสมบูรณ์

ออราเคิล java7-ติดตั้ง

(ชื่อแพ็คเกจจากWeb Up8 PPAจัดจำหน่ายโดย Oracle ใน. tar.gz)

การดำเนินการปิด 'แหล่งที่มาอย่างเป็นทางการของ Java โดย Oracle (อาทิตย์ก่อนหน้านี้) ไม่ได้โฮสต์ใน repos อย่างเป็นทางการเนื่องจากปัญหาการออกใบอนุญาต มีให้ในเว็บ Up8 ซึ่งเป็นสคริปต์ที่ดาวน์โหลดและติดตั้งให้กับคุณ

วิธีการติดตั้ง - Web Up8


มันหมายความว่าการติดตั้ง ecj จะติดตั้ง Eclipse + Java?
rɑːdʒɑ

จุดประสงค์ของ GCJ โดยเฉพาะคืออะไร
rɑːdʒɑ

@rajagenupula ดูการแก้ไขของฉัน↑↑
kiri

4

ผมมีปัญหาเหมือนกัน. สิ่งที่ฉันพบคือพวกเขามีความแตกต่างจากที่อื่น

ทั้งสองdefault-jdkและคล้ายกันopenjdkมากขึ้นเนื่องจากมีรหัส Java API เดียวกัน แต่ความแตกต่างอยู่ในแพลตฟอร์มเป้าหมาย

  • OpenJDK นี้ส่วนใหญ่มีเสถียรภาพอย่างใดอย่างหนึ่ง มันถูกออกแบบมาสำหรับทุกแพลตฟอร์ม มันเป็นพื้นเป้าหมายแพลตฟอร์มโอเพนซอร์ส

  • เริ่มต้น jdk: คือไม่ได้มีเสถียรภาพ มันถูกออกแบบมาเล็งบางแพลตฟอร์มเป้าหมาย โดยทั่วไปจะมีการกำหนดเป้าหมายเป็นแพลตฟอร์มแบบปิด (มีให้ในภายหลังสำหรับ Open-Source) JRE s อยู่ในนี้

แต่คนอื่น ๆ มีความแตกต่างกันโดยสิ้นเชิง: พวกเขาเป็นเพียงแค่คอมไพเลอร์ พวกเขารู้ว่ามาเพราะในตอนต้น Java ไม่สามารถใช้ได้สำหรับโอเพนซอร์ส คอมไพเลอร์ cetain เท่านั้นที่เปิดตัวสำหรับสิ่งที่ต้องการ Eclipse

  • gcj -jdk: (GNU Compiler สำหรับ Java) มันเป็นคอมไพเลอร์สำหรับ Java ใน GNU (ใช้โดย Java)

  • ecj: (Eclipse Java Compiler) เป็นคอมไพเลอร์ Java ที่ใช้โดย Eclipse

ecj นี้ไม่ใช่ ECJ ซึ่งเป็นชุดเครื่องมือคำนวณการวิวัฒนาการของ Java


ขอบคุณที่หยุดโดยโปรดดูความคิดเห็นข้างต้นที่ฉันทำกับเพื่อนตอบและพยายามที่จะแก้ปัญหาโปรด
rɑːdʒɑ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.