Java có miễn phí / nguồn mở hay không?


33

Vào ngày 13 tháng 11 năm 2006, Sun đã phát hành phần lớn Java dưới dạng phần mềm nguồn mở và miễn phí, (FOSS), theo các điều khoản của Giấy phép Công cộng GNU (GPL). Vào ngày 8 tháng 5 năm 2007, Sun đã hoàn tất quy trình, cung cấp tất cả mã lõi của Java theo các điều khoản phân phối phần mềm / nguồn mở miễn phí , ngoài một phần nhỏ mã mà Sun không giữ bản quyền.

OpenJDK (Bộ công cụ phát triển Java mở) là một triển khai mã nguồn mở và miễn phí của ngôn ngữ lập trình Java. Đó là kết quả của một nỗ lực Sun microsystems bắt đầu vào năm 2006. Việc triển khai được cấp phép theo Giấy phép Công cộng GNU (GNU GPL) với một ngoại lệ liên kết.

  • Tại sao vẫn có người nói rằng Java không phải là nguồn mở hoặc miễn phí như trong bài phát biểu miễn phí?
  • Tui bỏ lỡ điều gì vậy?
  • Java có còn độc quyền không?


Tôi không biết chính xác chỉ có triển khai Sun JVM hoặc thậm chí công nghệ (mã byte) được bảo vệ, nhưng tất cả các lib cốt lõi (java.xy) đều miễn phí. Vì vậy, nếu bất cứ ai tạo ra một thông số kỹ thuật mã byte và VM khác nhau, nên sử dụng các lib hiện có miễn phí. Rất tiếc, Google đã làm như vậy với Dalvik!
ern0

Câu trả lời:


37

Vấn đề là để gọi một cái gì đó là "Java", bạn cần phải chứng nhận nó tuân thủ thông số kỹ thuật Java.

Một trong những điều kiện tiên quyết để có được chứng nhận này là chạy JVM cho bạn thông qua bộ kiểm tra - Bộ tương thích công nghệ Java (TCK) . Bộ kiểm tra này KHÔNG được mở nguồn.

Vì vậy, bạn có thể xây dựng một JVM hoạt động theo cách rất giống Java và hoàn toàn là nguồn mở, nhưng, nếu bạn muốn gọi nó là "Java JVM", bạn cần mua bộ chứng nhận theo giấy phép nguồn mở. Đối với nhiều người ủng hộ nguồn mở, đây là một công cụ không khởi đầu hoàn chỉnh.


7
Đó là một trong những lý do khiến Apache Harmony (vốn là một triển khai JVM độc lập, khá hoàn chỉnh) bị dừng lại . Thật xấu hổ khi Sun / Oracle đã hành động theo cách này (và vẫn hành động theo cách này). Những gì Google đã làm ("gần như sao chép" Java) có lẽ cũng là kết quả trực tiếp của việc này.
Joachim Sauer

1
Ngoài ra, bộ thử nghiệm là TCK Nền tảng Java (cũng có các TCK khác cho các công nghệ liên quan đến Java).
Joachim Sauer

4
Ngoài ra, nếu bạn xây dựng một JVM thành công, Oracle có thể kiện bạn vi phạm bản quyền và vi phạm bằng sáng chế . Giống như họ đã kiện Google qua Android.
MarkJ

2
Là luật đặt tên có liên quan để gọi một cái gì đó nguồn mở? Tôi không thể tạo trình duyệt của riêng mình và gọi nó là firefox. Tôi nghĩ cho câu hỏi, điều đầu tiên là phải hiểu nó ... nghĩa của từ "Java" nghĩa là ngôn ngữ, cách triển khai jvm, ... và ai gọi nó là không mở ...
johannes

@johannes - Chào mừng bạn đến nhà nguồn mở của các nhà cung cấp dịch vụ và nhà cung cấp dịch vụ! Đối với nhiều người trong cộng đồng nguồn mở, những sự phân biệt này rất quan trọng. Chứng kiến ​​Apaches từ bỏ dự án Harmony. Đối với những người khác thực tế hơn, có một môi trường Giống như Java hoạt động là "đủ tốt" như máy ảo Dalvik ở trung tâm của tất cả các thiết bị Android.
James Anderson

15

Bạn nên đọc câu trả lời này trước khi nó bị xóa về cái nào sẽ sử dụng. Câu trả lời chính đã nêu:

Về Java 7, lưu ý rằng JDK7 và OpenJDK7 sẽ có ( gần ) cơ sở mã giống hệt nhau.

Chú ý gần như tôi nhấn mạnh.

Từ bài viết được liên kết từ câu trả lời đó:

[V]] nhưng có một số mã trong đó có các thay thế nguồn mở mà chúng tôi vẫn sử dụng mã nguồn đóng cũ. Điều này chủ yếu là trong rasterization phông chữ và đồ họa. Mã rasterisation mã nguồn đóng cũ, trong khi bị mã hóa, đã có hơn 10 năm sửa lỗi và tinh chỉnh, v.v., đối với bất kỳ sự thay thế nguồn mở nào để thay thế mã đó trong các bản dựng JDK được sản xuất, nó sẽ phải được chứng minh là nhanh và ổn định và chất lượng tốt như mã đóng hiện có.

Ngoài ra, từ Câu hỏi thường gặp về Java :

Bộ công cụ phát triển Java (JDK) có thể tải xuống và sử dụng miễn phí cho lập trình thương mại, nhưng không phân phối lại .

Vì vậy, không phải nguồn mở . Chỉ gần thôi.

Ngoài ra, ngay cả khi nó là nguồn mở hoàn toàn, mô hình phát triển và quản trị sẽ không. Đó không phải là một mối quan tâm cấp phép, mặc dù.


1
"Miễn phí tải xuống và sử dụng nhưng không phân phối lại" có nghĩa là phần mềm "không phải là phần mềm miễn phí", nhưng nó vẫn có thể là "nguồn mở". Nguồn mở chỉ đơn giản ngụ ý rằng bạn có quyền truy cập vào mã nguồn. Phần mềm miễn phí (theo định nghĩa của FSF và các phần mềm khác) cũng yêu cầu quyền phân phối lại.
một CVn

6
@ MichaelKjorling Định nghĩa OSI chắc chắn đòi hỏi quyền phân phối lại.
luiscubal

1

Năm 1997, Sun microsystems đã tiếp cận ECMA để chính thức hóa Java nhưng nó đã sớm rút khỏi quy trình. Tiêu chuẩn Java thực sự được kiểm soát thông qua Quy trình cộng đồng Java .

Mặc dù vào năm 2006, hầu hết Java đã được Sun microsystems phát hành theo các điều khoản của GPL nhưng việc triển khai chính thức hiện tại thuộc sở hữu của Oracle.

Vì Java thiếu bất kỳ tiêu chuẩn hóa chính thức nào được công nhận bởi ECMA, ISO / IEC, ANSI hoặc tổ chức tiêu chuẩn của bên thứ ba khác, nên việc triển khai Oracle là tiêu chuẩn defacto. Tuy nhiên, có các triển khai thay thế như Trình biên dịch GNU cho Java, GNU Classpath, IcedTea-Web, v.v.


7
-1: Kể từ Java 7, việc triển khai tham chiếu chính thức là OpenJDK của GPL.
Michael Borgwardt

2
Nói về Java, bạn sẽ nhận được -1 :( OpenJDK là nguồn mở nhưng triển khai trên Java.com là BCL, như đã đề cập ở trên và ở đây . Đầu tiên, không có thay đổi nào đối với chính sách của chúng tôi so với Apache Harmony. OCTLA là chương trình cho phép miễn phí truy cập vào TCK cho các triển khai có nguồn gốc OpenJDK được cấp phép theo GPL và chỉ dành cho mục đích đó. Thứ hai, việc triển khai Oracle (những gì bạn tìm thấy trên java.com hoặc java.oracle.com) sẽ chỉ thuộc giấy phép BCL. Cuối cùng, hoàn toàn rõ ràng, mã nguồn OpenJDK vẫn thuộc GPL.
Sajad Deyargaroo
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.