Sự khác biệt giữa JVM và HotSpot?


147

Chính xác thì HotSpot là gì và nó liên quan đến JVM và OpenJDK như thế nào? Có phải là một thư viện? Chính xác thì nó làm gì?

Ngoài ra, sự khác biệt giữa OpenJDK và HotSpot là gì?

Câu trả lời:


148

Định nghĩa chính xác Máy ảo Java được nêu trong Đặc tả máy ảo Java là gì

JVM theo định nghĩa là một máy ảo , tức là một máy phần mềm mô phỏng những gì một máy thật làm. Giống như một máy thật, nó có một tập lệnh , kiến ​​trúc máy tính ảo và mô hình thực thi. Nó có khả năng chạy mã được viết bằng tập lệnh ảo này, gần giống như một máy thật có thể chạy mã máy.

HotSpot là một triển khai của khái niệm JVM. Nó ban đầu được phát triển bởi Sun và bây giờ nó thuộc sở hữu của Oracle. Có các triển khai khác của đặc tả JVM, như JRockit , IBM J9 , trong số nhiều thứ khác.

Xem danh sách triển khai máy ảo Java

Các OpenJDK là một dự án mà theo đó một thực hiện mã nguồn mở của HotSpot (và nhiều phần khác của JDK ví dụ như trình biên dịch, các API, công cụ, vv) được phát triển.


25

OpenJDK (Bộ công cụ phát triển Java mở) là một triển khai nguồn mở và miễn phí của Nền tảng Java, Phiên bản tiêu chuẩn (Java SE). Openjdk là một dự án được bắt đầu bởi Sun microsystems, hiện được nhiều công ty và cộng đồng quan tâm để xây dựng Bộ công cụ phát triển Java hoàn toàn trong nguồn mở. Theo tài liệu chính thức .

OpenJDK là một triển khai nguồn mở của các đặc tả Nền tảng Java, Phiên bản tiêu chuẩn (Java SE). Vào tháng 5 năm 2007, Sun đã phát hành phiên bản Bộ công cụ phát triển Java (JDK) hoàn toàn có thể xây dựng cho Java SE cho Cộng đồng OpenJDK dưới dạng phần mềm miễn phí theo phiên bản Giấy phép công cộng GNU hai (GPLv2). Sun đã công bố Hội đồng quản trị tạm thời cho cộng đồng OpenJDK. Sun cũng thông báo rằng các triển khai dựa trên OpenJDK có thể sử dụng Bộ tương thích kỹ thuật Java SE 6 (JCK) để thiết lập khả năng tương thích với đặc tả Java SE 6.

Các dự án OpenJDK bao gồm một số thành phần - HotSpot (máy ảo) , Thư viện Java Class và javac Java compiler.For thêm về nó, hãy truy cập của nó tại chỗ .

JVM hiện tại do Sun / Oracle cung cấp được gọi là HotSpot vì nó tìm kiếm các điểm sử dụng nóng trong mã (những nơi mã được sử dụng nhiều hơn) để tối ưu hóa "chỉ trong thời gian". Từ wikipedia , HotSpot, được phát hành dưới dạng "Java HotSpot Performance Engine" là một máy ảo Java cho máy tính để bàn và máy chủ, được duy trì và phân phối bởi Tập đoàn Oracle.


Tôi nghe nói OpenJDK cũng sử dụng HotSpot để thực thi mã? Điều đó có đúng không?
Justin

@TheNewIdiot, vậy bạn đang nói HotSpot là một phần của OpenJDK? Hoặc cũng có một HotSpot độc quyền như câu trả lời ở trên cho thấy?
Pacerier

@NINC, vậy Hotspot là một phần của OracleJDK và OpenJDK? Hotspot = JRockit = OracleJDK = OpenJDK?
Pacerier

12

Lưu ý: AdoptOpenJDK đã đổi tên thành Adoptium sau khi chuyển sang Quỹ Eclipse vào cuối năm 2020-06.


Sự khác biệt giữa JVM và HotSpot?

Một Java Virtual Machine (JVM) là một máy tính tưởng tượng rằng chưa bao giờ được thể chất xây dựng như phần cứng. Một JVM chạy các chương trình được biên dịch theo trí tưởng tượng của nó tập lệnh được ghi vào bộ lưu trữ dưới dạng một biểu diễn trung gian được gọi là mã byte .

Trong thời gian chạy, mã byte phải được dịch từ tập lệnh tưởng tượng sang tập lệnh thực tế của CPU của máy chủ. Điều này có thể được thực hiện nhanh chóng bởi một thông dịch viên. Hoặc mã byte có thể được biên dịch và lưu trữ đầy đủ, để chạy nhanh hơn thông qua trình thông dịch, trong một quy trình được gọi là biên dịch đúng lúc (JIT) .

Trong nhiều thập kỷ, đã có nhiều triển khai JVM . Hầu hết đã biến mất.

HotSpot là một triển khai của công nghệ JIT bắt đầu bằng cách chạy phiên dịch và xem hiệu suất thực tế của ứng dụng. Các phần của ứng dụng sau đó được chọn để được biên dịch đầy đủ dưới dạng mã gốc và được lưu trong bộ nhớ cache, để thực thi nhanh hơn nhiều. HotSpot được phát triển tại Sun như một sản phẩm thương mại. Sau khi có được Sun, Oracle đã phát triển thêm HotSpot bằng cách kết hợp các phần quan trọng của sản phẩm cạnh tranh của họ, JRockit . HotSpot hiện có nguồn mở thông quadự án OpenJDK , miễn phí.

Một triển khai khác như vậy trong OpenJ9 , được phát triển bởi IBM và hiện có nguồn mở thông qua Quỹ Eclipse và có sẵn miễn phí. Một số bản phân phối JVM được xây dựng trên OpenJDK thay thế HotSpot bằng OpenJ9 trong khi vẫn sử dụng phần còn lại của OpenJDK, chẳng hạn như các thư viện lớp Java SE . Ví dụ: các bản phân phối dựng sẵn có sẵn tại AdoptOpenJDK cung cấp cho bạn lựa chọn HotSpot hoặc OpenJ9 trên một số phần cứng.

Sơ đồ hiển thị lịch sử hợp nhất HotSpot & JRockit và OpenJ9 đều có sẵn trong AdoptOpenJDK.

Sơ đồ hiển thị lịch sử hợp nhất HotSpot & JRockit và OpenJ9 đều có sẵn trong AdoptOpenJDK

Chính xác thì HotSpot là gì và nó liên quan đến JVM và OpenJDK như thế nào? Có phải là một thư viện? Chính xác thì nó làm gì?

  • HotSpot là một triển khai của một phần của JVM để giải thích và / hoặc biên dịch mã byte Java được thực thi trên CPU chủ.
  • OpenJ9 là một thay thế.

OpenJ9 thường được biết đến với khởi đầu nhanh hơn nhiều và sử dụng bộ nhớ thấp hơn nhiều, trong khi HotSpot có thể chạy tổng thể hiệu quả hơn cho các ứng dụng chạy dài. Cả hai đều được đánh giá tốt, được sử dụng tốt và có sẵn với các bản phân phối OpenJDK.

OpenJDK là một dự án nguồn mở thực hiện đầy đủ các Thông số kỹ thuật Java , các mã JSR JEP xác định nền tảng Java . Mọi triển khai JVM mà tôi biết ngày nay đều dựa hoàn toàn hoặc chủ yếu vào OpenJDK cơ sở mã và sử dụng công nghệ HotSpot hoặc OpenJ9.

Bên cạnh JVM, OpenJDK cũng cung cấp một triển khai mã nguồn cho tất cả các lớp theo yêu cầu của các đặc tả Java SE, như java.lang , java.util , java.time và các gói khác.

Ngoài ra, sự khác biệt giữa OpenJDK và HotSpot là gì?

Mã nguồn cho HotSpot được lưu trữ, duy trì và phát triển hơn nữa như là một phần của dự án OpenJDK . Giải pháp thay thế, OpenJ9 , được lưu trữ, duy trì và phát triển hơn nữa tại Quỹ Eclipse , đồng thời thay thế HotSpot trong một số bản phân phối của OpenJDK.

Một số bản phân phối công nghệ Java chọn giao hàng với HotSpot. Một số bản phân phối chọn thay thế một phần của cơ sở mã OpenJDKHotSpot bằng giải pháp thay thế, OpenJ9 .

Dưới đây là một sơ đồ đồ họa để giúp bạn chọn một nhà cung cấp để phân phối nền tảng Java.

Lưu đồ hướng dẫn bạn trong việc chọn nhà cung cấp để triển khai Java 11

Động lực trong việc chọn nhà cung cấp cho Java


8

HotSpot, như đã đề cập ở trên, là một triển khai đa nền tảng của Khái niệm Máy ảo Java (JVM) và được phân phối với OpenJDK (Bộ công cụ phát triển Java), theo Giấy phép công cộng GNU. HotSpot được viết chủ yếu bằng C ++ và ban đầu được phát triển dưới Sun microsystems. Nó hiện đang được phát triển theo Dự án OpenJDK, tại www.java.net. JVM HotSpot có sẵn như là một tiện ích bổ sung cho Java 1.2 và sau đó được sử dụng làm Sun JVM mặc định trong Java 1.3. JVM hiện đang ở Phiên bản 7, Build b147 và có một cộng đồng phát triển tích cực đằng sau nó.

Để biết thêm thông tin, goto: https://www.java.net/

Chúc mừng mã hóa!


7

JVM là một máy trừu tượng (thông số kỹ thuật). HotSpot, OpenJDK và JRockit và các triển khai JVM cũng vậy.

Các triển khai mã nguồn mở và miễn phí

  • HotSpot , triển khai Java VM tham chiếu chính

  • OpenJDK - Bộ công cụ phát triển Java mở là một triển khai nguồn mở và miễn phí đượ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.

Triển khai độc quyền

  • JRockit (ban đầu từ Appeal Virtual Machines) được Oracle mua lại cho Linux, Windows và Solaris

để biết thêm liên kết triển khai giải thích sự khác biệt giữa HotSpot và JRocket


-25

HotSpot là một hình thức hack C ++ tiên tiến, để sử dụng nó, bạn phải xây dựng dựa trên nó để biên dịch ngay cả những thứ đơn giản nhất. Trừ khi bạn điều chỉnh trình biên dịch và viết chúng từ đầu. HotSpot về cơ bản là một cách chuyển đổi mã nguồn thành mã C ++ và sau đó biên dịch nó thành mã gốc do đó thuật ngữ jit được biên dịch.

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.