nếu chúng ta triển khai trình thông dịch java trong phần cứng thì làm cách nào chúng ta có thể đạt được tính trung lập kiến trúc của bytecode java ... java có sử dụng JIT (chỉ trong trình thông dịch thời gian) không? và cách tất cả điều này liên quan đến khái niệm Máy ảo của hệ điều hành và máy ảo java (JVM)chúng ta có thể thực hiện một trình thông dịch java trong phần cứng thực thi các bytecode Java một cách tự nhiên không?
Trả lời
Đã có một số triển khai phần cứng của hệ thống Java (tức là một CPU có thể thực thi bytecode) nhưng chúng không trở thành chủ đạo. Điều này rất có thể là do việc triển khai phần mềm đó hoạt động tốt hoặc thậm chí tốt hơn khi CPU đã trở nên nhanh hơn và nhanh hơn. Như bạn sẽ thấy khi điều tra kỹ hơn, các chi tiết của việc triển khai JVM không quan trọng (và thay đổi một chút) nhưng tất cả đều thực thi ngôn ngữ máy của mã byte JVM - java. Nếu bạn ở trong thế giới Java và không liên kết trong nội dung "bản địa", bạn sẽ ổn với bất kỳ triển khai nào bạn chọn.
Công ty này kiếm sống bằng việc cung cấp các hệ thống máy chủ điều chỉnh cho các chương trình Java, họ có thể bạn quan tâm: http://www.azulsystems.com/
một câu hỏi nhanh, cấu hình thiết bị nào phải chạy phiên bản phần mềm jvm? – inquisitive
@Inquisitive Ai đó phải tạo một JVM cho thiết bị đó. Cấu hình sau đó phải đáp ứng các yêu cầu cho JVM. –
Ở đây trong năm 2017, CPU đã ngừng hoạt động nhanh hơn và nhanh hơn. Thay vào đó, phần mềm JVM sử dụng nhiều bộ nhớ hơn để giữ thông tin lược tả mà JIT có thể sử dụng để tạo ra mã máy cực kỳ được tối ưu hóa ở nơi nó quan trọng. Việc triển khai phần cứng thường không có tùy chọn đó để chúng không thể tối ưu hóa nhiều. Với phần cứng giống hệt nhau, giải pháp phần mềm sẽ thắng. –
- Thực hiện JVM trong phần cứng bỏ qua lợi thế của việc chạy mã được quản lý. Những gì khác nhau sau đó sẽ được từ bất kỳ mã nguồn gốc khác. Và có, nền tảng trung lập cũng bị cản trở. Bất kể, có những triển khai như vậy, hãy kiểm tra loạt bộ xử lý aJile và Jazelle của ARM. Đây là những mục tiêu tại các nền tảng nhúng mặc dù.
- Trình biên dịch của Sun, HotSpot sử dụng JIT. Cá nhân tôi đã không sử dụng những người khác nhưng nó phải là một công nghệ được sử dụng rất cao.
- JVM có thể được coi là một VM tài nguyên giới hạn, được nhắm mục tiêu tại chỉ một nền tảng cụ thể (mã Java bytecode).
có nghĩa là ảo hóa java (hoặc có thể gọi là jre?) Khác với ảo hóa hệ điều hành ... Tôi có đúng không? – paragjain
Ảo hóa, như tôi đã hiểu là mô phỏng phần cứng sử dụng phần mềm. Ứng dụng khách (ứng dụng java hoặc hệ điều hành) xem VM như một máy tính khác và sử dụng mã gốc để tương tác với nó.Mặt khác, máy ảo hiểu mã nguồn máy chủ, giải thích những gì ứng dụng đang yêu cầu và sau đó tự thực hiện các hành động, miễn là có các ủy quyền và quyền cần thiết tại chỗ. Vì vậy, theo định nghĩa này, ảo hóa các ứng dụng java hoặc hệ điều hành là tương tự, phạm vi hoạt động của nó được cung cấp cho khách và sức mạnh của VM khác nhau. – Chintan
ảo hóa đề cập đến việc thay đổi một máy vật lý hoàn chỉnh thành một chương trình đang chạy trên một máy vật lý khác –
Có, bạn có thể. Mặc dù điều này có vẻ như nó bị mắc kẹt trong giai đoạn đặc tả (hoặc đã bị hủy bỏ), picoJava cho phép thực thi native bytecode Java. picoJava has a port available on a FPGA. Có Jazelle, cũng như cho bộ vi xử lý ARM.
Cho rằng phần cứng sẽ thực thi trực tiếp bytecode, tất cả các tối ưu hóa cũng sẽ phải được thực hiện trong phần cứng. JIT sẽ không được yêu cầu, vì bộ vi xử lý sẽ thực thi bytecode trực tiếp. Sau khi tất cả việc triển khai phần cứng sẽ liên quan đến việc triển khai mô hình JVM như được định nghĩa trong Java Virtual Machine Specification. Tối ưu hóa có thể được thực hiện, sẽ được trên các dòng tối ưu hóa phần cứng - hướng dẫn pipelining, sử dụng bộ nhớ cache, vv
Phần cứng trung lập không bị mất, vì thực thi bytecode trên một phần cứng sẽ tiếp tục làm việc trên một phần mềm thực hiện tốt. Nó là tiêu chuẩn bytecode cho phép Java trung hòa phần cứng.
Rất hay khi chỉ ra rằng "Tính trung lập phần cứng không bị mất, vì mã byte thực thi trên thực thi phần cứng cũng sẽ tiếp tục hoạt động trên phần mềm thực hiện. Đây là tiêu chuẩn bytecode cho phép Java trung hòa phần cứng". Tuy nhiên, –
Vâng, có một số việc triển khai Java phần cứng. Tuy nhiên, chúng không phải lúc nào cũng hoạt động tốt hơn phần mềm chạy trên silicon đa dụng hơn.
Mark Lam đã viết several interesting blogs entries về chủ đề này.
Một trong những vấn đề cơ bản là tối ưu hóa phần mềm có thể được 'vá'. Phần cứng không thể. –
Thậm chí nếu việc thực hiện xảy ra trong phần cứng thì không có gì cản trở JVM phần cứng để làm bất cứ việc tối ưu nào mà nó muốn. Máy có RAM và tất cả mọi thứ :) –
Thực ra, không thể cho phần mềm nhanh hơn phần cứng. Nếu phần cứng chậm hơn, điều đó có nghĩa là phần cứng kém phát triển. Ví dụ, nếu Hotspot JIT nhanh hơn so với một số phần cứng thực hiện của Java, bạn chỉ có thể di chuyển phần mềm HotIT JIT sang phần cứng, điều này chắc chắn sẽ nhanh hơn phần cứng hiện tại. Nhưng trong mọi trường hợp, tôi nghi ngờ JIT là cách nhanh nhất để triển khai JVM trong phần cứng. @Vineet: 1. Bất cứ điều gì có thể được thực hiện trong phần mềm có thể được thực hiện trong phần cứng. 2. x86 thực hiện tối ưu hóa nghiêm ngặt ở cấp độ phần cứng. –
- 1. Chúng ta có thể thực thi một chương trình java mà không có phương thức main() không?
- 2. Biên dịch trong thời gian thực của Java bytecode
- 3. Cách đếm số bytecode được thực hiện trong java
- 4. Chúng ta có thể thực hiện quá tải phương thức trong lớp dịch vụ web không?
- 5. Chúng ta có thể tạo một thể hiện của một giao diện trong Java không?
- 6. làm thế nào chúng ta có thể sử dụng một tập tin thực thi trong c + +?
- 7. Chúng ta có thể thực hiện Giao dịch trên các đối tượng C# không?
- 8. Biên dịch sang bytecode java (không sử dụng Java)
- 9. Vấn đề thực hiện một tập tin thực thi trong một ứng dụng Java
- 10. Chúng ta có thể chuyển đổi một mảng byte thành một InputStream trong Java không?
- 11. Java thực hiện một ... JVM?
- 12. Thực thi tệp .jar từ một chương trình Java
- 13. Java thực thi chương trình dòng lệnh
- 14. Có thể biên dịch một ứng dụng JS + trình thông dịch NodeJS thành một tệp thực thi duy nhất không?
- 15. Thực hiện các chương trình Java thông qua Python
- 16. Java: Thực hiện một 128bit Integer Unsigned
- 17. Có thể dừng thực thi chức năng trong một thời gian nhất định trong Java không?
- 18. Làm thế nào để phát ra và thực thi mã Java bytecode khi chạy?
- 19. Chúng ta có thể tự động gọi một phương thức giao diện Java với một tham số chung không?
- 20. Việc thực thi handlebars.js trong java có tồn tại không?
- 21. Có thể xem các tệp lớp Java bytecode
- 22. Phần nào (cụ thể) của một tệp thực thi tự nhiên làm cho nó không thể di chuyển được?
- 23. Chúng ta có cần thực thi lệnh Cam kết sau khi Cập nhật trong SQL Server
- 24. Làm cách nào để tạo chương trình Java thực thi?
- 25. Trình tạo ngôn ngữ tự nhiên cho các ngày (Java)
- 26. Khuôn khổ thực thể - Enums hiện có một cách tự nhiên?
- 27. Tăng tốc phần cứng Java
- 28. Liệu chúng ta vẫn có hiệu suất đạt được của Java 6 nếu bytecode được biên dịch trong 1.4
- 29. Có thể tự động biên dịch và thực thi các đoạn mã C# không?
- 30. Làm thế nào chúng ta có thể ngăn chặn một quá trình chạy java thông qua Windows cmd?
Danh sách triển khai: https://en.wikipedia.org/wiki/Java_processor –