Java 및 JVM 라이센스


17

Java 라이센스는 다른 회사가 자신의 Java 언어 버전을 작성하거나 정확하게 구현할 수 있습니까? JVM에 대한 동일한 질문입니다.

Sun이 Java 구현의 .NET 버전과 Google Android 용 Java를 변경 한 것에 대해 Microsoft를 고소하는 것에 대해 들었지만 전체 개념을 전체적으로 파악할 수는 없습니다.

답변:


25

Java 언어 사양을 구현하는 컴파일러를 작성하거나 JVM (Java Virtual Machine) 사양을 구현하는 JVM을 작성할 수 있지만 공식적으로 "Java"라고 부르려면 TCK 테스트를 통과하여 호환되는지 확인해야합니다 ( 기술 호환성 키트)와 Oracle의 라이센스 비용을 지불합니다.

그러나 오라클은 다른 당사자가이를 쉽게 수행 할 수 있도록하지 않습니다. Apache는 자체 구현 된 JVM ( Apache Harmony )을 가지고 있지만 이전에는 Oracle 이었지만 현재 Oracle은 TCK를 사용할 수 있도록하거나 Apache를 라이센스를 얻도록 허용하지 않았으므로 Apache와 Oracle간에 많은 분개를 불러 일으켰습니다.

오래 전에 Microsoft는 자체 버전의 Java (실제로 "Java"라고 함)를 가지고있었습니다. 그들은 Sun이 싫어하는 Windows 전용으로 변경하려고했습니다. 마이크로 소프트가 잃어버린 소송이 있었고, 자체 Java 버전을 종료하고 .NET을 만들었습니다. 이것은 완전히 다른 방식으로 Java 작동 방식과 비슷하게 작동합니다 ...

안드로이드에 대한 소송은 전혀 근거하지 않습니다. 구글은 안드로이드가 자바라고 말하지 않는다. 그 소송은 특허에 관한 것입니다. 오라클은 자체 JVM 구현에서 수많은 아이디어와 개념에 대한 특허를 보유하고 있으며 Google이 Oracle의 특허 라이센스를 얻지 않고 Android에서 동일한 특허 아이디어를 사용하고 있다고 주장합니다.


2
Apache는 TCK와 라이센스를 무료로 원했습니다. 이는 Sun이 거부 한 것입니다. 마이크로 소프트의 IMO는 언어 사양과 일치하는 방식으로 썬에 의해 결정되었으며, Windows와의 인터페이스를보다 쉽게하기 위해 Java 위에 라이브러리를 만들었습니다. 썬이 동시에 스윙을 추진하고있는 것은 타이밍이 좋지 않았다. 썬은 당시 미국 정치에서 반 MS 감정에 돈을 썼다.
jwenting

'공식적으로 자바'라고하는 것은 무엇을 의미합니까? jvm을 수정하여 판매 할 수 있습니까? 이름을 'VM을 지원하는 VM'으로 지정할 수 있습니까?
piotrek

1
@jwenting-MS가 한 일은 Java 사양과 완전히 일치하지 않았습니다. 이 라이브러리는 "최상의 라이브러리"일뿐만 아니라 완벽하게 호환되지 않는 구현이었습니다 (Java 상표를 사용해야하는 Sun의 적합성 테스트를 통과하지 못했습니다). 정치적 상황에 관계없이 Sun은 분명히 그 상황에 옳았습니다.
mikera

@mikera는 MS가 그런 이유로 Java를 결코 호출하지 않았다는 것을 제외하고는 ...
jwenting

1
문제는 MS가 기존 Java 클래스에 메소드를 추가하여 표준 클래스와 호환되지 않는 코드를 컴파일하는 것이 었습니다. 물론 Java의 전제는 변경되지 않은 플랫폼에서 변경되지 않고 실행되어야한다는 전제입니다.
Peter Kriens

3

글쎄, 내가 이해 한대로, 당신은 당신이 좋아하는 모든 사양을 구현할 수있다. 합법적으로 "자바"라고 부르면 호환성 키트를 라이센스하고 통과해야한다.

안드로이드는 자바를 사용하지만 "자바"가 아니다. 심지어 TCK를 통과하려고 시도하지도 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.