2011-01-14 54 views
19

Mặc dù tôi không phải là một nhà phát triển Java thực sự (chưa), tôi cảm thấy như tôi nên biết điều này bây giờ, nhưng tôi vẫn còn rất bối rối. Câu hỏi của tôi có hai phần:JDK, JRE, Java: Phiên bản Lẫn lộn!

  1. sự khác biệt giữa cái gọi là là gì (như tôi đã nhìn thấy nó) "Sun JDK", OpenJDK, và GCJ?

  2. Vào các thời điểm khác nhau, tôi đã nhìn thấy từng nội dung sau đây được ném xung quanh, làm cho nó rất khó hiểu số phiên bản thực sự áp dụng cho những gì. Ai đó có thể giúp tôi sắp xếp thứ này không?

    • Java 6
    • Java 1.6
    • JDK 6
    • JDK 1.6
    • JRE 1.6
    • JVM 11,0

Lưu ý: Tôi hiểu sự khác biệt giữa JDK (Bộ phát triển Java) và Jav một môi trường thời gian chạy. Tôi không hoàn toàn rõ ràng về sự khác biệt giữa JRE và JVM tuy nhiên, mặc dù tôi biết những gì JVM là/không.

+0

Phần mà vẫn thực sự gây nhầm lẫn cho tôi là OpenJDK dường như là một dự án trọng tâm tại Oracle: http://openjdk.java.net/faq/ - Nếu đó là sự thật, tại sao Oracle sẽ tiếp tục duy trì hai phiên bản riêng biệt của JDK (OpenJDK, Oracle JDK)? –

Trả lời

8
  1. Sun JDK do Sun tạo ra, OpenJDK là một triển khai mã nguồn mở cạnh tranh. GCJ là trình biên dịch java GNU.
  2. Java 6 = Java 1.6 và JDK 6 = JDK 1,6

Chi tiết mục 1 http://en.wikipedia.org/wiki/OpenJDK https://stackoverflow.com/questions/1977238/why-should-i-use-the-sun-jdk-over-the-openjdk-or-vice-versa

http://en.wikipedia.org/wiki/GNU_Compiler_for_Java

như thế nào GCJ liên quan đến Sun JDK/OpenJDK? Không có mối quan hệ trực tiếp mà tôi biết. GCJ là một dự án riêng biệt. Giá trị của việc sử dụng một JDK so với cái kia là gì? Các vấn đề cấp phép có thể xảy ra nếu bạn phân phối lại JDK của Mặt Trời. Cá nhân tôi đặt niềm tin nhiều hơn vào JDK Sun, vì sự ổn định của nó. Không phải là dự án OpenJDK a Sun? Có và không. Đó là một dự án cộng đồng.

+0

Bạn là người duy nhất trả lời BOTH câu hỏi, Navi, nhưng tôi đoán tôi đã hy vọng cho một chút chi tiết hơn thế. GCJ liên quan đến JDK/OpenJDK mặt trời như thế nào? Thành tích của việc sử dụng một JDK so với cái kia là gì? Không phải là OpenJDK một dự án Sun? v.v. –

+0

@Brian Tôi đã cập nhật câu trả lời của mình. – Navi

+0

Cảm ơn các tài nguyên được thêm vào, nhưng tôi vẫn còn bối rối là tại sao Oracle sẽ tham gia quá nhiều vào OpenJDK nếu họ vẫn duy trì việc triển khai độc quyền của riêng họ. Tại sao chúng ta cần một nguồn mở và một thực thi độc quyền riêng biệt nếu cùng một công ty là trung tâm phát triển trên cả hai, và cả hai đều mở cửa ở một mức độ nào đó? –

2

Sun qua các năm have made some changes to the naming conventions cho ngôn ngữ lập trình của chúng. Ban đầu bạn đã có jdk1.1 và vân vân. Tại jdk1.2, họ quyết định thay đổi điều này thành Java 2. Vì vậy, bạn sẽ thấy một số sách cũ về Java 2.

Sau đó, vì một lý do bí ẩn nào đó, nó quay lại jdk1.3 rồi jdk1.4. Khi jdk1.5 được phát hành, họ đã thực hiện một nỗ lực để thay đổi tên một lần nữa. Vì vậy, chúng tôi đã có Java 5. Vì họ quyết định gắn bó với điều này, bạn có những điều sau đây:

jdk1.5 = Java 5 
    jdk1.6 = Java 6 
    jdk1.7 = Java 7 

và (có thể), v.v.

Vì vậy, hy vọng điều đó giải thích một phần của nó. Trong câu hỏi của bạn Java6 == Java 1.6 == JDK 6 == JDK 1.6.

Đối với JVM vs JRE. JRE chứa JVM cũng như các thư viện lớp và bất kỳ công cụ nào khác cần thiết để chạy chương trình Java của bạn. JVM chỉ đơn giản là chương trình giải thích mã byte của bạn và thực hiện nó trên máy chủ.

7

Java 6 và Java 1.6 giống nhau. Ban đầu Java được đặt tên là Java 1.X nhưng khi thời gian trôi qua, Sun tiếp thị thấy rằng nó sẽ báo hiệu tốt hơn những cải tiến đáng kể được thực hiện nếu họ bỏ "1." phần. Phiên bản đầu tiên để làm như vậy là Java 1.5 được bán trên thị trường là Java 5.

JRE 6 là bản phân phối tiêu dùng của Java 6. Dễ dàng tải xuống từ http://java.com.

JDK 6 là bản phân phối của nhà phát triển Java 6. Nó chứa các công cụ như trình biên dịch và hỗ trợ nhiều nền văn hóa hơn JRE mặc định. Nó cần phải được tải xuống từ http://javasoft.com.

JVM 11.0 là phiên bản của trình thông dịch "Java" bên trong Oracle JRE/JDK (các nhà cung cấp khác sử dụng các số khác nhau). Điều này cũng tương tự như nói rằng Windows Vista thực sự là Windows 6.0.6001.

3
  1. Về cơ bản, các triển khai khác nhau của cùng một bộ tiêu chuẩn mô tả cách máy ảo Java hoạt động.
  2. Phiên bản Java diễn ra theo cách thông thường từ 1.0 đến 1.4 khi một người thông minh từ tiếp thị đưa ra ý tưởng gọi phiên bản tiếp theo "Java 5" thay vì 1.5, nhưng tất nhiên điều này chỉ gây ra sự nhầm lẫn, loạt 6 (1.6) và có thể sẽ tiếp tục trong một thời gian. Tôi không có ý tưởng gì JVM 11.0 có thể được mặc dù. (Bạn có chắc chắn nó không phải là 1.1.0? Tôi biết đó là một cú sút dài nhưng ai biết.)

Và sự khác biệt giữa JVM và JRE. Nói đúng cách JVM chỉ là máy giải thích bytecode Java, trong khi JRE cũng chứa tất cả các thư viện lớp chuẩn, tệp tài nguyên, dll s (so s) và cứ thế.

1

Hãy coi chừng, GCJ không phải là JVM được chứng nhận. Đây là dự án GNU Classpath cho Java có khả năng tương thích một phần Java theo giấy phép GNU. Bạn nên stear rõ ràng của nó, trừ khi bạn chắc chắn nó đáp ứng nhu cầu của bạn và bạn có một lý do bạn không thể sử dụng một thực hiện Java hoàn thành.