Trong các ngôn ngữ nào là trình biên dịch Java ( javac
), máy ảo (JVM) và trình java
khởi động được viết?
Trong các ngôn ngữ nào là trình biên dịch Java ( javac
), máy ảo (JVM) và trình java
khởi động được viết?
Câu trả lời:
Các cụm từ chính xác của câu hỏi hơi sai lệch: nó không phải là "JVM" hay "trình biên dịch" vì có nhiều nhà cung cấp JVM (jrockit là một, IBM khác) và nhiều trình biên dịch ngoài đó.
Sun JVM được viết bằng C
, mặc dù điều này không cần phải như vậy - JVM khi nó chạy trên máy của bạn là một tệp thực thi phụ thuộc vào nền tảng và do đó có thể được viết bằng bất kỳ ngôn ngữ nào. Ví dụ, IBM JVM ban đầu được viết bằng Smalltalk
Các thư viện Java ( java.lang
, java.util
v.v., thường được gọi là API Java ) tự viết bằng Java, mặc dù các phương thức được đánh dấu là native
sẽ được viết bằng C
hoặc C++
.
Tôi tin rằng trình biên dịch Java do Sun cung cấp cũng được viết bằng Java. (Mặc dù một lần nữa, có nhiều trình biên dịch ngoài kia)
Trình biên dịch Java đầu tiên được phát triển bởi Sun microsystems và được viết bằng C sử dụng một số thư viện từ C ++. Ngày nay, trình biên dịch Java được viết bằng Java, trong khi JRE được viết bằng C.
Chúng ta có thể tưởng tượng cách trình biên dịch Java được viết bằng Java như thế này:
Trình biên dịch Java được viết dưới dạng chương trình Java và sau đó được biên dịch bằng trình biên dịch Java được viết bằng C (trình biên dịch Java đầu tiên). Vì vậy, chúng ta có thể sử dụng trình biên dịch Java mới được biên dịch (viết bằng Java) để biên dịch các chương trình Java.
Trình biên dịch được viết bằng Java và thời gian chạy được viết bằng ANSI C
Trên thực tế, Oracle JVM được viết bằng C ++ chứ không phải C.
Hãy xem mã JVM của HotSpot tại đây: http://openjdk.java.net/groups/hotspot/
Liên kết này sẽ trả lời câu hỏi của bạn
Có vẻ như trình biên dịch hiện được viết bằng Java, nhưng thời gian chạy được viết bằng ANSI C
Jike RVM , một JVM tự lưu trữ được sử dụng rộng rãi cho mục đích nghiên cứu được viết bằng Java. Đó không phải là người chạy trên máy tính để bàn của họ, nhưng nó xuất hiện trong danh sách "bây giờ hãy thể hiện sức mạnh chung của ngôn ngữ".
Giả sử bạn đang nói về Hotspot JVM, được iirc cung cấp, nó được viết bằng C ++. Để biết thêm thông tin về các máy ảo khác nhau cho Java, bạn có thể kiểm tra liên kết này . javac , giống như hầu hết các trình biên dịch Java, được viết bằng Java.
(Để biết thêm thông tin Bạn có thể kiểm tra liên kết này: https://docs.oracle.com/javase/specs/jvms/se7/html/ )