2012-11-25 12 views
5

Basta chiedersi se esistono implementazioni Java che funzionano senza una JVM. Il motivo per cui sono interessato è, beh, semplicemente perché sono curioso e mi chiedevo se esistessero implementazioni Java "leggere" (senza tutte le librerie Sun collegate).Java senza JVM

Mi interessa anche l'integrazione di Java in C++, ma incorporare la JVM in C++ mi sembra piuttosto ridicolo. Voglio solo sfruttare alcune funzionalità del linguaggio Java nelle mie app C++, ma non sfruttare tutte le frivole API Java.

EDIT:

vedo da un sacco di risposte che ho ottenuto che ho bisogno di chiarire ...

Recentemente ho avuto per lo sviluppo di applicazioni Node.js, che utilizza Javascript. JavaScript in sé è una specifica del linguaggio, non viene automaticamente con il DOM, window.open, ecc., Anche se ha funzionato per un po '. Mi chiedo se ci sia qualcosa di simile alla v8 di Google, tranne che non per JavaScript, ma per Java. Alla fine, non mi interessa se non riesco a scrivere app Hello World con esso, voglio solo essere in grado di incorporare Java in un'applicazione C++ nel modo in cui posso incorporare JavaScript in un'applicazione C++ con v8 o SpiderMonkey. Se potessi farlo, allora potrei implementare l'output della console in C/C++ e rendere l'implementazione richiamabile da Java.

+5

Sun libs e JVM sono due cose completamente separate, e probabilmente la caratteristica principale di Java è il garbage collector allo stato dell'arte - chiaramente una funzionalità JVM. –

+1

Vuoi dire qualcosa che potrebbe compilare Java con qualcosa di diverso dal bytecode JVM? O quale compilerebbe il bytecode JVM con qualcos'altro? O cosa? – hyde

+0

JavaScript è un linguaggio di scripting e la maggior parte degli interpreti di linguaggio di scripting sono progettati in modo che possano essere incorporati facilmente in un'altra lingua (in genere linguaggio compilato come C/C++). Non sono del tutto sicuro del motivo per cui vuoi incorporare un linguaggio compilato come Java in un altro linguaggio compilato come C++. È preferibile utilizzare l'interprete del linguaggio di scripting come JavaScript o Python o Lua, che ha un'API chiaramente definita per l'incorporamento se si desidera un linguaggio di scripting per il proprio programma. –

risposta

0

ci sono processori java leggeri progettati per l'impiego in dispositivi di piccole dimensioni, ad esempio JOP

+0

Esistono/erano diverse CPU native Java, per esempio [Wikipedia] (http://en.wikipedia.org/wiki/Java_processor). – JimmyB

5

Vuoi la Java VM da solo senza l'API (libreria standard)?

Il JRE è composto da JVM (Virtual MAchine) e dalla libreria standard, ho il dubbio che sia possibile trovare un'implementazione java senza JVM ... Si potrebbe trovare un compilatore che compila il codice sorgente java nel codice nativo (dare un'occhiata a GCJ), ma non a un'implementazione Java senza la VM.

Dai un'occhiata a this wikipedia page per vedere alcune implementazioni Java alternative.

1

C'è GCJ (GNU Compiler for Java), ma il progetto è stato ritirato da OpenJDK in open source.

1

Come altri hanno suggerito, la "JVM" è il meccanismo che sa come caricare le classi, interpretare "bytecode" e gestire lo spazio di archiviazione. Non include intrinsecamente alcuna delle cose java.lang ..., tranne che alcune classi (String, Class, et al) sono necessarie per rappresentare le classi e altre strutture di dati di base nella JVM.

Come risultato, Java senza una JVM è solo un mucchio di bit privi di significato.

Ci sono (o erano) versioni compilate di Java che non hanno bisogno dell'interprete (anche se un interprete ragionevolmente compatto è abbastanza semplice da compilare). Un caricatore di classi primitivo e una sorta di gestione della memorizzazione sono ancora necessari, ma il caricamento di classe può essere mantenuto semplice e per le applicazioni di breve durata (o quelle che vivono con restrizioni speciali) il gestore di archiviazione non ha bisogno di eseguire la garbage collection.

Come suggerisce pstanton, esistono implementazioni "leggere" Java (o "simili a Java") adatte per dispositivi di piccole dimensioni.

1

IMHO, hai bisogno di ri-amplificare quello che vuoi veramente.

Java runtime è costituito da due componenti principali

  • La JVM per eseguire il codice
  • Le librerie standard che vengono con esso.

Si consiglia di utilizzare Java, ma in realtà non è rimasto nulla senza di questi.

Ad esempio, non è nemmeno possibile scrivere un programma "ciao mondo" senza le librerie poiché String è una classe nel JDK.