Ліцензія Java та JVM


17

Чи дозволяє ліцензія Java іншим компаніям створювати власні версії мови Java або просто точно реалізовувати її? Те саме питання щодо JVM.

Я чув про те, що Sun не судиться з Microsoft за зміну їх .NET версії реалізації Java та Java для Google Android, але просто не можу зрозуміти всю концепцію як сукупність.

Відповіді:


25

Ви можете написати компілятор, який реалізує специфікацію мови Java, або написати JVM, який реалізує специфікацію віртуальної машини Java, але коли ви офіційно хочете назвати це "Java", ви повинні довести, що він сумісний, пройшовши тести TCK ( комплект сумісності з технологіями) та оплатити ліцензію від Oracle.

Однак Oracle не спрощує це зробити для інших сторін. Apache має власну реалізацію JVM ( Apache Harmony ), але раніше Sun, тепер Oracle, не співпрацює у наданні TCK, а також не дозволяє Apache отримати ліцензію, що призвело до сильного обурення Apache та Oracle.

Давно в Microsoft була своя версія Java (її справді називали "Java"). Вони намагалися змінити його, щоб зробити його специфічним для Windows, що Sun, звичайно, не сподобалось. Був позов, Microsoft програв, вийшов із власної версії Java та створив .NET, що зовсім інша річ, яка, як буває, працює багато, як те, як працює Java ...

Позов про Android взагалі не базується на цьому; Google не каже, що Android - це Java. Цей позов стосується патентів; Oracle має патенти на низку ідей та концепцій у власній реалізації JVM і стверджує, що Google використовує ті самі патентовані ідеї в Android, не отримуючи патентну ліцензію від Oracle.


2
Apache хотів, щоб TCK та ліцензування отримали безкоштовно, саме від цього Sun відмовилася (як це їх право). Microsoft IMO була змінена Sun, оскільки те, що вони робили, відповідало мові, вони створили бібліотеку поверх Java, щоб полегшити взаємодію з Windows. Тільки поганий термін, коли Сонце одночасно виштовхувало Свінг. В той час Sun виграв анти-MS настрої в політиці США і переміг.
jwenting

що ви маєте на увазі під «офіційно називати це java»? Чи можу я змінити jvm і продати його? чи можу я назвати його «VM з підтримкою Java»?
piotrek

1
@jwenting - те, що зробив MS, повністю не відповідало специфікації Java. Це була не просто "бібліотека на вершині" (що було б чудово), це абсолютно несумісна реалізація (вона не пройшла тести на відповідність Sun, що було вимогою використання торговельної марки Java). Незалежно від політичної ситуації, Сонце точно не було в цьому.
mikera

@mikera, за винятком того, що MS ніколи не називав її Java саме з цієї причини ...
jwenting

1
Проблема полягала в тому, що MS додала методи до існуючих класів Java, роблячи компільований проти них код несумісним зі стандартними класами. Це, звичайно, створить блокування, тоді як передумова Java полягає в тому, що він повинен працювати без змін на будь-якій платформі без змін.
Пітер Крінс

3

Ну, наскільки я розумію, ви можете реалізувати специфікацію все, що вам подобається - щоб мати можливість законно називати її "Java", вам потрібно ліцензувати і пройти комплект сумісності, що, мабуть, не є тривіальним.

Android не є "java", хоча він використовує мову java. Він навіть не намагається передати TCK.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.