Trong nhiệm vụ của tôi để hiểu được lý do sử dụng Java trên C++ hoặc ngược lại để viết các ứng dụng, tôi đã bị mắc kẹt ở điểm này. Tôi đã xem một video giới thiệu tôi với Java và họ nói lý do có JVM là vì nó làm cho Java di động, có nghĩa là nó chạy trên nhiều kiến trúc như điện thoại và công cụ mà không cần phải viết trình biên dịch mới cho mỗi hệ điều hành CPU khác nhau. Nhưng mọi người phải làm một cái gì đó để làm cho nó tương thích với mỗi CPU và hệ điều hành. Tôi không thấy cách sử dụng JVM thay đổi bất cứ điều gì.Làm thế nào để JVM tương thích với kiến trúc CPU khác với việc tạo trình biên dịch cho kiến trúc CPU?
Trả lời
Phiên bản Java ban đầu (BETA) là bị tắt để được "viết một lần, kiểm tra ở mọi nơi". Cải thiện chất lượng của phần mềm trên nền tảng ban đầu (SunOS/Solaris, Windows, Mac, v.v.) đã tăng đáng kể tính di động của nó (và phần mềm di động vốn dễ dàng hơn để cổng). Hiện tại, có nhiều triển khai Java (IBM, JRockit, v.v.).
Về cơ bản, Java là thông số của máy ảo thực thi mã byte; và không bất kỳ triển khai cụ thể nào. Vì mã byte giống nhau trên nền tảng nên trình biên dịch Java không cần phải thay đổi để hỗ trợ các nền tảng mới. Hơn nữa, phần lớn số OpenJDK (và, do đó, Oracle JVM) được viết bằng Java. Về cơ bản, bootstrapping Java được đơn giản hóa so với việc khởi động trình biên dịch cho kiến trúc CPU "thực" ".
Không bao gồm CPU natively execute Java byte code.
Sửa lỗi nếu tôi sai, nhưng JVM có nhiều khả năng được viết bằng cả C hoặc C++. Tôi phải chạy JVM trên một architecure. Vì vậy, nó không tạo sự khác biệt cho dù tôi chạy Java/JVM trên một kiến trúc hoặc thẳng C/C++. Dù bằng cách nào tôi cũng cần một trình biên dịch C/C++ được viết cho kiến trúc. – BrettG
- 1. Biên dịch chương trình C với kiến trúc cụ thể
- 2. ICC vs GCC - Kiến trúc tối ưu và CPU
- 3. Kiến trúc nội bộ của trình biên dịch Java
- 4. Làm thế nào để hướng dẫn CMake sử dụng trình biên dịch kiến trúc xây dựng?
- 5. Trình biên dịch/trình biên dịch BCPL cho hệ điều hành và kiến trúc hiện tại?
- 6. Các tùy chọn GCC để tối ưu hóa trên kiến trúc CPU đã cho
- 7. Chuyển kernel sang một kiến trúc khác?
- 8. Kiến trúc công việc của Azure Web
- 9. Có một lá cờ trình biên dịch cho biết thiếu kiến trúc armv7s
- 10. Ký hiệu không xác định cho kiến trúc x86_64: Tôi nên sử dụng kiến trúc nào?
- 11. Đề xuất kiến trúc hướng dịch vụ
- 12. Kiến trúc Java EE với Khung Chơi
- 13. Kiến trúc CPU Độc lập P/Gọi: DllName hoặc đường dẫn có thể là "động" không?
- 14. .NET tương đương với kiến trúc web Java hiện đại
- 15. Biên dịch và tối ưu hóa cho các kiến trúc đích khác nhau
- 16. Câu hỏi kiến trúc
- 17. Spark Sợi Kiến trúc
- 18. Xcodebuild không tạo ra khung động với kiến trúc x86_64
- 19. Kiến trúc SOA với WCF + Cấu trúc IOC
- 20. Lỗi biên dịch Xcode iOS6: Không có kiến trúc
- 21. Kiến trúc N-Layer
- 22. Triển khai Downtime Zero cho kiến trúc Dịch vụ Micro
- 23. Kiến trúc Amazon S3
- 24. Kiến trúc Plugin Spring MVC
- 25. Kiến trúc Net và plugin
- 26. Kiến trúc Onion
- 27. Kiến trúc SIMD và Vector
- 28. Kiến trúc lập trình chức năng
- 29. Kiến trúc NHibernate?
- 30. Kiến trúc trình cắm thêm Swift
Tôi nghĩ rằng tuyên bố "trình biên dịch đắt tiền" đòi hỏi một số bằng cấp để có bất kỳ ý nghĩa nào. –
Tôi nghĩ bạn đã đúng, tôi đã chỉnh sửa nó. – BrettG
Có vẻ như video đang giải thích rất rõ. – juanchopanza