2012-11-25 24 views
5

Chỉ cần tự hỏi nếu có bất kỳ triển khai Java nào hoạt động mà không có JVM. Lý do tôi quan tâm là, tốt, đơn giản là vì tôi tò mò, và tôi đã tự hỏi liệu có bất kỳ triển khai Java "nhẹ" nào không (không có tất cả các libs kèm theo của Sun).Java không có JVM

Tôi cũng quan tâm đến việc nhúng Java vào C++, nhưng việc nhúng JVM vào C++ có vẻ khá lố bịch với tôi. Tôi chỉ muốn khai thác một số tính năng ngôn ngữ Java trong các ứng dụng C++ của tôi, nhưng không khai thác tất cả các API Java phù phiếm.

EDIT:

tôi nhìn thấy từ rất nhiều câu trả lời tôi đã nhận được rằng tôi cần phải làm rõ ...

Gần đây tôi nhận được trong việc phát triển các ứng dụng Node.js, trong đó sử dụng JavaScript. JavaScript trong bản thân tôi là một đặc tả ngôn ngữ, nó không tự động đi kèm với DOM, window.open, vv, mặc dù nó đã làm trong một thời gian. Tôi tự hỏi nếu có một cái gì đó tương tự như v8 của Google, ngoại trừ không cho JavaScript, nhưng đối với Java. Cuối cùng, tôi không quan tâm nếu tôi không thể viết các ứng dụng Hello World với nó, tôi chỉ muốn có thể nhúng Java vào một ứng dụng C++ theo cách tôi có thể nhúng JavaScript vào một ứng dụng C++ với v8 hoặc SpiderMonkey. Nếu tôi có thể làm điều đó, sau đó tôi có thể thực hiện đầu ra console trong C/C++ và sau đó thực hiện điều đó có thể gọi được từ Java.

+5

Sun libs và JVM là hai điều hoàn toàn riêng biệt, và được cho là tính năng chính của Java là bộ thu gom rác hiện đại --- rõ ràng là tính năng JVM. –

+1

Bạn có nghĩa là, cái gì đó sẽ biên dịch Java sang một cái gì đó khác với JVM bytecode? Hoặc mà sẽ biên dịch bytecode JVM để cái gì khác? Hay cái gì? – hyde

+0

JavaScript là một ngôn ngữ kịch bản, và hầu hết các trình thông dịch ngôn ngữ kịch bản được thiết kế để chúng có thể được nhúng dễ dàng sang một ngôn ngữ khác (thường được biên dịch bằng ngôn ngữ như C/C++). Tôi không hoàn toàn chắc chắn lý do tại sao bạn muốn nhúng một ngôn ngữ biên dịch như Java vào một ngôn ngữ biên dịch như C + +. Tốt hơn là sử dụng trình thông dịch ngôn ngữ kịch bản như JavaScript hoặc Python hoặc Lua, đã xác định rõ ràng API để nhúng nếu bạn muốn có ngôn ngữ kịch bản cho chương trình của mình. –

Trả lời

0

có bộ vi xử lý java trọng lượng nhẹ được thiết kế để sử dụng trong các thiết bị nhỏ ví dụ JOP

+0

Có/là một số CPU Java gốc, xem [Wikipedia] (http://en.wikipedia.org/wiki/Java_processor) chẳng hạn. – JimmyB

5

Bạn có muốn máy ảo Java một mình mà không API (tiêu chuẩn Library)?

JRE được sáng tác bởi JVM (Virtual MAchine) và Thư viện chuẩn, tôi nghi ngờ rằng bạn có thể tìm thấy triển khai java mà không cần JVM ... Bạn có thể tìm trình biên dịch mã nguồn java thành mã gốc (hãy xem GCJ), nhưng không phải là triển khai Java mà không có VM.

Hãy xem this wikipedia page để xem một số triển khai Java thay thế.

1

GCJ (Trình biên dịch GNU cho Java), nhưng dự án đã không được chấp nhận vì OpenJDK đã được mở nguồn.

1

Như những người khác đã gợi ý, "JVM" là cơ chế biết cách tải lớp, diễn giải "bytecodes" và quản lý bộ nhớ. Nó vốn không bao gồm bất kỳ công cụ java.lang ..., ngoại trừ một vài lớp (String, Class, et al) là cần thiết để biểu diễn các lớp và các cấu trúc dữ liệu cơ bản khác trong JVM.

Kết quả là, Java không có JVM chỉ là một loạt các bit vô nghĩa.

Có (hoặc) các phiên bản được biên dịch của Java có/không cần thông dịch viên (mặc dù thông dịch viên nhỏ gọn hợp lý khá dễ xây dựng). Trình tải lớp nguyên thủy và một số loại quản lý lưu trữ vẫn cần thiết, nhưng việc nạp lớp có thể được giữ đơn giản và cho các ứng dụng ngắn ngủi (hoặc những ứng dụng có hạn chế đặc biệt).

Như đã nói ở trên, có các triển khai Java "nhẹ" (hoặc "giống Java") phù hợp cho các thiết bị nhỏ.

1

IMHO, Bạn cần phải làm lại những gì bạn thực sự muốn.

Java runtime bao gồm hai thành phần chính

  • Các JVM để chạy mã
  • Các thư viện tiêu chuẩn mà đi kèm với nó.

Bạn đề nghị bạn muốn sử dụng Java, nhưng bạn không thực sự có bất kỳ thứ gì còn lại mà không có những thứ này.

Ví dụ, bạn thậm chí không thể viết chương trình "hello world" nếu không có thư viện vì String là một lớp trong JDK.

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