Giấy phép Java và JVM


17

Giấy phép Java có cho phép các công ty khác tạo các phiên bản ngôn ngữ Java của riêng họ hay chỉ thực hiện chính xác? Câu hỏi tương tự về JVM.

Tôi đã nghe nói về việc Sun kiện Microsoft vì đã thay đổi phiên bản triển khai Java và Java cho Google Android của họ, nhưng tôi không thể nắm bắt được toàn bộ khái niệm này dưới dạng tổng thể.

Câu trả lời:


25

Bạn có thể viết một trình biên dịch thực hiện Đặc tả ngôn ngữ Java hoặc viết một JVM thực hiện đặc tả Máy ảo Java, nhưng khi bạn chính thức muốn gọi nó là "Java", bạn phải chứng minh nó tương thích bằng cách vượt qua các bài kiểm tra của TCK ( bộ tương thích công nghệ) và trả tiền cho một giấy phép từ Oracle.

Mặc dù vậy, Oracle không làm cho các bên khác dễ dàng thực hiện việc này. Apache có triển khai JVM ( Apache Harmony ) của riêng họ nhưng trước đây Sun, giờ là Oracle, không hợp tác trong việc cung cấp TCK cũng như không để Apache có giấy phép, điều này dẫn đến nhiều sự phẫn nộ giữa Apache và Oracle.

Từ lâu Microsoft đã có phiên bản Java của riêng họ (đó thực sự được gọi là "Java"). Họ đã cố gắng thay đổi nó để biến nó thành Windows cụ thể, điều mà Sun tất nhiên không thích. Có một vụ kiện, Microsoft đã thua, bỏ phiên bản Java của riêng họ và tạo .NET, đó là một điều hoàn toàn khác xảy ra để hoạt động rất giống như cách Java hoạt động ...

Vụ kiện về Android hoàn toàn không dựa trên điều này; Google không nói rằng Android là Java. Vụ kiện đó là về bằng sáng chế; Oracle có bằng sáng chế về một số ý tưởng và khái niệm trong việc triển khai JVM của riêng họ và tuyên bố rằng Google đang sử dụng các ý tưởng được cấp bằng sáng chế tương tự trong Android mà không cần giấy phép bằng sáng chế từ Oracle.


2
Apache muốn TCK và cấp phép miễn phí, đó là điều mà Sun từ chối (như là quyền của họ). Microsoft IMO đã bị Sun làm cho thất vọng vì những gì họ đã làm phù hợp với đặc tả ngôn ngữ, họ đã tạo một thư viện trên Java để giúp việc giao tiếp với Windows dễ dàng hơn. Đó chỉ là thời điểm tồi tệ mà Sun đã đẩy ra Swing cùng một lúc. Sun đã kiếm được tiền nhờ vào tình cảm chống MS trong chính trị Hoa Kỳ vào thời điểm đó và đã giành chiến thắng.
jwenting

bạn có ý nghĩa gì khi 'chính thức gọi nó là java'? Tôi có thể sửa đổi jvm và bán nó không? Tôi có thể đặt tên cho nó là 'VM với java hỗ trợ' không?
piotrek

1
@jwenting - Những gì MS đã làm hoàn toàn không phù hợp với đặc tả Java. Đó không chỉ là một "thư viện trên đỉnh" (điều này sẽ ổn), đó là một triển khai hoàn toàn không tương thích (nó không vượt qua các thử nghiệm tuân thủ của Sun là yêu cầu sử dụng nhãn hiệu Java). Bất kể tình hình chính trị, Sun chắc chắn đã ở bên phải.
mikera

@mikera ngoại trừ việc MS không bao giờ gọi nó là Java vì lý do đó ...
jwenting

1
Vấn đề là MS đã thêm các phương thức vào các lớp Java hiện có, làm cho mã được biên dịch theo chúng không tương thích với các lớp tiêu chuẩn. Điều này tất nhiên sẽ tạo ra khóa trong khi tiền đề của Java là nó được cho là chạy không thay đổi trên bất kỳ nền tảng nào không thay đổi.
Peter Kriens

3

Theo tôi hiểu, bạn có thể thực hiện tất cả các đặc tả mà bạn thích - để có thể gọi nó là "Java" một cách hợp pháp, bạn phải cấp phép và vượt qua bộ tương thích, điều này dường như không tầm thường.

Android không phải là "java" mặc dù nó sử dụng ngôn ngữ java. Nó thậm chí không cố gắng vượt qua TCK.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.