ใบอนุญาต Java และ JVM


17

ใบอนุญาต Java อนุญาตให้ บริษัท อื่นสร้างภาษา Java ของตนเองหรือใช้อย่างถูกต้องหรือไม่ คำถามเดียวกันเกี่ยวกับ JVM

ฉันได้ยินเกี่ยวกับซุนฟ้อง Microsoft เกี่ยวกับการเปลี่ยนการใช้งานจาวาในเวอร์ชัน. NET และ Java สำหรับ Google Android แต่ฉันไม่สามารถเข้าใจแนวคิดทั้งหมดเป็นจำนวนทั้งสิ้น

คำตอบ:


25

คุณสามารถเขียนคอมไพเลอร์ที่ใช้ Java Language Specification หรือเขียน JVM ที่ใช้สเปค Java Virtual Machine แต่เมื่อคุณต้องการเรียกอย่างเป็นทางการว่า "Java" คุณต้องพิสูจน์ว่ามันเข้ากันได้โดยผ่านการทดสอบของ TCK ( ชุดความเข้ากันได้กับเทคโนโลยี) และชำระค่าลิขสิทธิ์จาก Oracle

Oracle ไม่ได้ทำให้บุคคลอื่นสามารถทำได้ง่ายขึ้น Apache มี JVM ( Apache Harmony) เป็นของตัวเอง ) ของตนเอง แต่ก่อนหน้านี้ Sun ในขณะนี้ Oracle ไม่ร่วมมือในการทำให้ TCK ว่างและไม่อนุญาตให้ Apache ได้รับใบอนุญาตซึ่งทำให้เกิดความไม่พอใจระหว่าง Apache และ Oracle

นานมาแล้ว Microsoft มี Java เวอร์ชันของตัวเอง (ซึ่งเรียกกันว่า "Java") พวกเขาพยายามเปลี่ยนมันเพื่อให้เป็น Windows โดยเฉพาะซึ่งแน่นอนว่า Sun ไม่ชอบ ไมโครซอฟท์แพ้คดีเลิกสร้าง Java เวอร์ชันของตนเองและสร้าง. NET ซึ่งเป็นสิ่งที่แตกต่างอย่างสิ้นเชิงที่เพิ่งเกิดขึ้นกับการทำงานเช่นเดียวกับวิธีการทำงานของ Java ...

คดีเกี่ยวกับ Android ไม่ได้ขึ้นอยู่กับเรื่องนี้เลย Google ไม่ได้บอกว่า Android เป็น Java คดีดังกล่าวเป็นเรื่องเกี่ยวกับสิทธิบัตร ออราเคิลมีสิทธิบัตรเกี่ยวกับแนวคิดและแนวคิดจำนวนมากในการนำ JVM มาใช้และอ้างว่า Google ใช้แนวคิดที่จดสิทธิบัตรเดียวกันใน Android โดยไม่ได้รับใบอนุญาตสิทธิบัตรจาก Oracle


2
Apache ต้องการ TCK และให้สิทธิ์ใช้งานฟรีซึ่งเป็นสิ่งที่ Sun ปฏิเสธ (เช่นเดียวกับสิทธิของพวกเขา) Microsoft IMO ได้รับผลกระทบจาก Sun เนื่องจากสิ่งที่พวกเขาทำนั้นสอดคล้องกับข้อมูลจำเพาะทางภาษาพวกเขาสร้างห้องสมุดบน Java เพื่อให้สามารถเชื่อมต่อกับ Windows ได้ง่ายขึ้น มันเป็นช่วงเวลาที่แย่ที่ซันผลักสวิงออกไปพร้อม ๆ กัน ซุนถอนตัวจากการต่อต้านความเชื่อมั่นทางการเมืองของสหรัฐฯในเวลานั้นและชนะ
jwenting

คุณหมายถึงอะไรโดย 'เรียกอย่างเป็นทางการว่าจาวา'? ฉันสามารถแก้ไข jvm และขายได้หรือไม่ ฉันสามารถตั้งชื่อ 'VM พร้อมการสนับสนุน java' ได้หรือไม่
piotrek

1
@ jwenting - สิ่งที่ MS ทำนั้นไม่สอดคล้องกับข้อกำหนดของ Java มันไม่ใช่แค่ "ไลบรารี่ที่อยู่ด้านบน" (ซึ่งน่าจะใช้ได้) แต่เป็นการใช้งานที่ไม่เข้ากัน (มันไม่ผ่านการทดสอบการปฏิบัติตามกฎเกณฑ์ของซันซึ่งเป็นข้อกำหนดในการใช้เครื่องหมายการค้า Java) โดยไม่คำนึงถึงสถานการณ์ทางการเมืองซุนอยู่ในตำแหน่งที่ถูกต้องอย่างแน่นอน
mikera

@mikera ยกเว้นว่า MS ไม่เคยเรียกมันว่า Java เพราะเหตุผลอย่างนั้น ...
jwenting

1
ปัญหาคือว่า MS เพิ่มวิธีการเรียน Java ที่มีอยู่ทำให้รหัสรวบรวมกับพวกเขาเข้ากันไม่ได้กับชั้นเรียนมาตรฐาน แน่นอนว่าสิ่งนี้จะสร้างการล็อคในขณะที่สมมติฐานของ Java คือว่ามันควรจะทำงานไม่เปลี่ยนแปลงบนแพลตฟอร์มใด ๆ ไม่เปลี่ยนแปลง
Peter Kriens

3

อย่างที่ฉันเข้าใจคุณสามารถใช้สเปคทั้งหมดที่คุณต้องการ - เพื่อให้สามารถเรียกมันว่า "Java" อย่างถูกต้องตามกฎหมายและต้องผ่านชุดความเข้ากันได้ซึ่งดูเหมือนจะไม่สำคัญ

Android ไม่ใช่ "java" แม้ว่าจะใช้ภาษาจาวา มันไม่ได้พยายามส่ง TCK ด้วยซ้ำ

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