2012-04-05 34 views
38

Tôi được hỏi trong cuộc phỏng vấn ngôn ngữ lập trình nào được sử dụng để triển khai Java. Tôi đã choáng váng: Tôi chưa bao giờ nghĩ về điều này. Tôi chỉ biết các lớp Java cốt lõi là trong Java.Ngôn ngữ lập trình nào được sử dụng để phát triển Java?

Ngôn ngữ lập trình nào được sử dụng để phát triển Java?

+1

Java cốt lõi được viết bằng Java, u hỏi ngôn ngữ nào là trình biên dịch được viết và dịch Java sang? Hay bạn đang hỏi về JVM? – Churk

+4

http://stackoverflow.com/q/1220914/1130032 – Ved

+2

http://stackoverflow.com/questions/410320/what-is-java-written-in – OguzOzkeroglu

Trả lời

64

Cùng câu hỏi đã trả lời bằng một trong những người đó, những người viết JDK thực hiện séc của Sun đây Wiki Answers

Java Ngôn ngữ là một đặc điểm kỹ thuật ngôn ngữ - bạn không viết một ngôn ngữ bằng một ngôn ngữ, đó là một đặc điểm kỹ thuật. Điều đó sẽ giống như hỏi "Bạn có viết tiếng Pháp bằng tiếng Đức không?"

Điều tôi giả định người hỏi thực sự muốn biết là "Ngôn ngữ nào là JDK được phát triển?" Tức là, ngôn ngữ cơ bản là gì toàn bộ thư viện Java và Máy ảo được phát triển .

Câu trả lời là: cho VM, nó thay đổi, vì có nhiều triển khai VM khác nhau. Tuy nhiên, các thư viện lớp học được ALWAYS viết bằng Java, vì chúng được dự định chạy bằng cách sử dụng Java VM chính nó. Một số thư viện sử dụng JNI (Giao diện bản địa Java) có thể là được viết một phần bằng nhiều ngôn ngữ khác, vì chúng là được dự định sẽ được sử dụng bên ngoài JVM.

Máy ảo Sun/Oracle được viết bằng C++. BEA/Weblogic/Oracle VM là được viết bằng C. J9 của IBM là (tôi tin) được viết bằng C++. Có một số vài máy ảo thực sự được viết bằng Java và thậm chí được viết bằng Lisp. Phần lớn các JVM cũng bao gồm mã lắp ráp để tăng tốc độ các khu vực "nóng" nhất định .

+4

"bạn không viết ngôn ngữ bằng ngôn ngữ" Điều này không phải lúc nào cũng đúng. GCC đã được viết bằng C++ từ năm 2012 ([trích dẫn] (https://www.quora.com/C-programs-are-compiled-using-gcc-which-itself-is-written-in-C-so-how -code-for-gcc-được biên dịch)) và trình biên dịch Scala được viết bằng Scala ([trích dẫn] (http://stackoverflow.com/a/19580470/1478636)). Cả hai trang đều tham chiếu đến quá trình [bootstrapping] (https://en.wikipedia.org/wiki/Bootstrapping_ (trình biên dịch)) để thực hiện điều này. –

+1

Bạn không nhận được nó. "Ngôn ngữ" là mô tả không cần phải được "viết". Nó chỉ cần được mô tả. Ngay cả * nếu * đặc điểm kỹ thuật này bao gồm một cơ chế như bootstrapping (mà tôi tin rằng nó không), mô tả sẽ vẫn chỉ là một mô tả. – ospf

-1

Java chạy trên máy ảo Java JVM. Việc triển khai JVM thay đổi.

+4

không chính xác ... có một số triển khai và phổ biến nhất (Sun/Oracle JVM) được viết bằng C++. – s1lence

+1

Chết tiệt bạn hiểu sai các giáo sư! Cảm ơn bạn đã chỉnh sửa :) – RyanS

1

Về cơ bản java đang sử dụng C thông qua api gốc trong java. Bạn có thể kiểm tra mã nguồn của bất kỳ lớp nào trong java như lớp Object và kiểm tra xem bất cứ khi nào nó muốn sử dụng ngôn ngữ C họ đã gọi là api gốc trong java.

như hashCode int gốc công khai();

12

Máy ảo Java (JVM) của Oracle mà Java Code được thực thi được viết bằng C++.

Có tồn tại các máy ảo khác bởi các bên khác được triển khai bằng các ngôn ngữ khác và thậm chí một số trong Java. Danh sách một số trong số đó có sẵn trên wikipedia here.

Để hiểu điều đó bạn phải biết, Máy ảo Java thực hiện bytecode được tạo bởi trình biên dịch Java khi xây dựng dự án. Bytecode này ở mức phù hợp với tất cả các hệ điều hành và nền tảng có thể có và do đó sẽ hoạt động trên các máy ảo cho các nền tảng cụ thể.(Đó là cách Java đạt được khả năng tương thích hệ thống chéo)

Cũng tồn tại một số Trình biên dịch Java. (Những người biên dịch mã Java thành bytecode) Phổ biến nhất là trình biên dịch javac bởi oracle chủ yếu được viết bằng C. Thông tin thêm về các số here này.

6

Các thư viện Java (java.lang, java.util etc, often referred to as the Java API) được mình viết bằng Java, mặc dù phương pháp đánh dấu là native.

Các Sun JVM được viết bằng C, JVM chạy trên máy tính của bạn là một platform-dependent executable và do đó có thể là ban đầu được viết trong bất kỳ ngôn ngữ nào.
Oracle JVM (HotSpot) được viết trong C++ programming language.

Trình biên dịch Java do Oracle cung cấp được viết bằng Java chính nó ..

Các vấn đề liên quan