Lisensi Java dan JVM

17

Apakah lisensi Java memungkinkan perusahaan lain untuk membuat versi bahasa Jawa mereka sendiri atau hanya mengimplementasikannya secara akurat? Pertanyaan yang sama tentang JVM.

Saya mendengar tentang Sun menggugat Microsoft karena mengubah .NET versi Java implementasi mereka dan Java untuk Google Android, tapi saya tidak bisa memahami keseluruhan konsep sebagai totalitas.

Sergey
sumber

Jawaban:

25

Anda dapat menulis kompiler yang mengimplementasikan Spesifikasi Bahasa Jawa atau menulis JVM yang mengimplementasikan spesifikasi Mesin Virtual Java, tetapi ketika Anda secara resmi ingin menyebutnya "Java", Anda harus membuktikannya kompatibel dengan melewati tes TCK ( kit kompatibilitas teknologi) dan membayar lisensi dari Oracle.

Oracle tidak membuatnya mudah bagi pihak lain untuk melakukan ini. Apache memiliki implementasi JVM ( Apache Harmony ) mereka sendiri, tetapi sebelumnya Sun, sekarang Oracle, tidak bekerja sama dalam menyediakan TCK atau membiarkan Apache mendapatkan lisensi, yang telah menyebabkan banyak kebencian antara Apache dan Oracle.

Dulu Microsoft memiliki versi Java mereka sendiri (yang memang disebut "Java"). Mereka mencoba mengubahnya untuk menjadikannya Windows khusus, yang tentu saja tidak disukai Sun. Ada gugatan, Microsoft kalah, keluar dari versi Java mereka sendiri dan menciptakan .NET, yang merupakan hal yang sangat berbeda yang kebetulan banyak bekerja seperti cara kerja Java ...

Gugatan tentang Android sama sekali tidak didasarkan pada ini; Google tidak mengatakan bahwa Android adalah Java. Gugatan itu tentang paten; Oracle memiliki paten pada sejumlah ide dan konsep dalam implementasi JVM mereka sendiri dan mengklaim bahwa Google menggunakan ide yang dipatenkan yang sama di Android tanpa mendapatkan lisensi paten dari Oracle.

Jesper
sumber
2
Apache menginginkan TCK dan lisensi gratis, yang ditolak Sun (sebagaimana hak mereka). Microsoft IMO digerakkan oleh Sun karena apa yang mereka lakukan adalah sesuai dengan spesifikasi bahasa, mereka membuat perpustakaan di atas Jawa untuk membuat berinteraksi dengan Windows lebih mudah. Itu hanya waktu yang buruk bahwa Sun mendorong Swing pada saat yang sama. Sun menguangkan sentimen anti-MS dalam politik AS pada saat itu dan menang.
jwenting
apa yang anda maksud dengan 'secara resmi menyebutnya java'? dapatkah saya memodifikasi jvm dan menjualnya? dapatkah saya menamainya 'VM dengan dukungan java'?
piotrek
1
@jwenting - apa yang dilakukan MS sama sekali tidak sesuai dengan spesifikasi Java. Itu bukan hanya "perpustakaan di atas" (yang akan baik-baik saja), itu adalah implementasi yang sepenuhnya tidak kompatibel (tidak lulus tes kepatuhan Sun yang merupakan persyaratan untuk menggunakan merek dagang Java). Terlepas dari situasi politiknya, Sun jelas benar mengenai hal itu.
mikera
@ Mikik kecuali bahwa MS tidak pernah menyebutnya Jawa karena alasan itu ...
jwenting
1
Masalahnya adalah bahwa MS menambahkan metode ke kelas Java yang ada, membuat kode dikompilasi melawan mereka tidak sesuai dengan kelas standar. Ini tentu saja akan membuat kunci sementara premis Java adalah bahwa itu seharusnya berjalan tidak berubah pada platform apa pun tidak berubah.
Peter Kriens
3

Yah, seperti yang saya mengerti, Anda dapat mengimplementasikan spesifikasi sesuka Anda - untuk dapat secara sah menyebutnya "Java" Anda harus melisensikan dan lulus kit kompatibilitas, yang tampaknya tidak sepele.

Android bukan "java" meskipun menggunakan bahasa java. Bahkan tidak mencoba untuk lulus TCK.

Joseph Ottinger
sumber