Лицензия Java и JVM

17

Позволяет ли лицензия Java другим компаниям создавать свои собственные версии языка Java или просто точно их реализовывать? Тот же вопрос о JVM.

Я слышал о том, что Sun подала в суд на Microsoft за изменение их версии Java для .NET и 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.

Jesper
источник
2
Апач хотел получить TCK и лицензирование бесплатно, а Sun отказалась (так как это их право). Sun разработала Microsoft IMO, поскольку то, что они делали, соответствовало спецификации языка, они создали библиотеку поверх Java, чтобы упростить взаимодействие с Windows. Это было просто плохое время, когда Sun одновременно выталкивала Swing. В то время Сун обналичил антисемейские настроения в политике США и победил.
jwenting
что вы подразумеваете под «официально называть это Java»? Могу ли я изменить JVM и продать его? Могу ли я назвать его «VM с поддержкой Java»?
пиотрек
1
@jwenting - то, что сделал MS, совершенно не соответствовало спецификации Java. Это была не просто «библиотека поверх» (что было бы хорошо), это была абсолютно несовместимая реализация (она не прошла тесты на соответствие Sun, которые были требованием для использования торговой марки Java). Независимо от политической ситуации, Сунь определенно был прав в этом.
Микера
@mikera за исключением того, что MS никогда не называл это Java именно по этой причине ...
jwenting
1
Проблема заключалась в том, что MS добавляла методы к существующим классам Java, делая код, скомпилированный для них, несовместимым со стандартными классами. Это, конечно, создаст блокировку, в то время как предпосылка Java заключается в том, что он должен работать без изменений на любой платформе без изменений.
Питер Криенс
3

Ну, насколько я понимаю, вы можете реализовать спецификацию так, как вам нравится - чтобы иметь возможность по праву называть ее «Java», вам нужно лицензировать и передать комплект совместимости, что, очевидно, не тривиально.

Android не является "Java", хотя он использует язык Java. Он даже не пытается пройти TCK.

Джозеф Оттингер
источник