Apa perbedaan antara default-jdk, ecj, gcj dan openjdk?

23

Pagi ini, saya mencoba menginstal sesuatu dan menemukan pernyataan seperti ini:

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>

Apa perbedaan antara default-jdk, ecj, gcj dan openjdk?

Terima kasih sebelumnya.

rɑːdʒɑ
sumber
1
Ada juga Jikes.
Pacerier

Jawaban:

16

default-jre

Ini adalah paket sederhana yang bergantung pada openjdk-7-jre (dan pada dasarnya sama dengan openjdk-7-jre ) dan default-jre-headless . Ini menginstal "Java Standar atau Java Runtime yang kompatibel", yaitu OpenJDK 7 JRE.

Paket ini menunjuk ke runtime Java, atau runtime yang kompatibel dengan Java direkomendasikan untuk arsitektur i386, yang merupakan openjdk-7-jre untuk i386.

Informasi
paket Ketergantungan paket (cakep)

ECJ

Ini adalah "kompiler Java Eclipse mandiri". Menginstalnya tidak akan menginstal Eclipse, karena ini adalah paket mandiri (lihat tautan dependensi di bawah). Ini berisi "versi mandiri dari kompiler Eclipse JDT yang didistribusikan sebagai bagian dari Eclipse" dan kompatibel dengan Java 1.3 hingga 1.7.

Paket ini menyediakan versi mandiri dari kompiler Eclipse JDT yang didistribusikan sebagai bagian dari Eclipse. Ini melewati JCK (Java Compatibility Kit) dan kompatibel dengan Java 1.3, 1.4, 1.5, 1.6 dan 1.7.

Informasi
paket Ketergantungan paket (cakep)

gcj-4.6-jdk

(gcj-4.7-jdk sama tetapi untuk Java 7)

Ini adalah frontend ke kompiler GCC untuk mengkompilasi Java bytecode dan file sumber.

GCJ adalah ujung depan ke kompiler GCC yang secara native dapat mengkompilasi sumber Java (tm) dan file bytecode. Kompiler juga dapat menghasilkan file kelas. Alat pengembangan java lainnya dari classpath termasuk dalam paket ini.

Paket ini juga berisi kumpulan skrip dan symlink wrapper. Ini dimaksudkan untuk menyediakan antarmuka seperti Java-SDK ke set alat GCJ.

Itu dimaksudkan sebagai alternatif open source untuk sumber tertutup Oracle Java compiler. Tampaknya sebagian besar sudah usang dan ketinggalan zaman (tidak diperbarui) sekarang, lihat tautan di bawah (terutama pembaruan terakhir di laman beranda GCJ).

Informasi paket

Apakah Java Compiler (GCJ) GNU sudah mati? - Stack Overflow,
halaman beranda GCJ di gnu.org (Pembaruan: Tautannya sudah hilang sekarang, tetapi wiki GCJ masih tersedia

openjdk-6-jdk

(openjdk-7-jdk sama tetapi untuk Java 7)

Versi open source dari platform Java.
Dari Wiki :

Tujuan utama dari proyek OpenJDK adalah untuk menghasilkan implementasi open-source Platform Java SE (6 dan 7). Ini adalah versi default Java yang digunakan Ubuntu dan paling mudah untuk diinstal.

Ringkasan paket:

OpenJDK adalah lingkungan pengembangan untuk membangun aplikasi, applet, dan komponen menggunakan bahasa pemrograman Java.

Paket-paket dibangun dengan menggunakan dukungan pembangunan IcedTea dan tambalan dari proyek IcedTea.

Informasi paket


Juga, yang tidak disebutkan dalam pertanyaan Anda adalah Oracle Java (karena tidak ada dalam repo default), yang akan saya sebutkan di bawah ini untuk kelengkapannya

oracle-java7-installer

(nama paket dari Web Up8 PPA , didistribusikan oleh Oracle di .tar.gz)

Implementasi 'resmi' sumber tertutup Java oleh Oracle (sebelumnya Sun). Tidak di-host di repo resmi karena masalah lisensi. Itu tersedia oleh Web Up8 sebagai skrip yang mengunduh dan menginstalnya untuk Anda.

Cara menginstal - Web Up8

kiri
sumber
apakah ini berarti bahwa instalasi ecj akan menginstal Eclipse + Java?
rɑːdʒɑ
apa tujuan GCJ khususnya?
rɑːdʒɑ
@rajagenupula Lihat hasil edit saya ↑↑
kiri
4

Saya memiliki masalah yang sama. Apa yang saya temukan adalah mereka memiliki perbedaan dari satu ke yang lain.

Keduanya default-jdkdan openjdklebih mirip karena mereka memiliki kode java API yang sama. Namun perbedaannya ada pada platform target.

  • openjdk: Apakah yang paling stabil . Itu dirancang untuk semua platform . Ini pada dasarnya menargetkan platform open-source .

  • default-jdk: Tidak stabil . Itu dirancang bertujuan platform target tertentu . Ini pada dasarnya menargetkan platform Tertutup . (Apakah nanti tersedia untuk Open-Source) JRE s ada di sini.

Tetapi yang lain sama sekali berbeda: Mereka hanya Penyusun . Mereka diketahui datang karena, pada awalnya Java tidak tersedia untuk Open-Source. Hanya kompiler cetain yang dirilis untuk hal-hal seperti Eclipse.

  • gcj -jdk: (GNU Compiler untuk Java). Ini adalah kompiler untuk Java di GNU. (Digunakan oleh Java)

  • ecj: (Eclipse Java Compiler) Adalah kompiler Java yang digunakan oleh Eclipse.

ECJ ini Bukan ECJ yang merupakan Java Evolutionary Computation Toolkit


sumber
Terima kasih telah mampir, silakan lihat komentar di atas yang saya buat pada sesama jawaban dan cobalah untuk menyelesaikannya.
rɑːdʒɑ