2012-11-25 2 views
5

Je me demande simplement s'il existe des implémentations Java qui fonctionnent sans JVM. La raison pour laquelle je suis intéressé est, eh bien, simplement parce que je suis curieux, et je me demandais s'il y avait des implémentations Java "légères" (sans toutes les bibliothèques Sun attachées).Java sans JVM

Je suis également intéressé par l'intégration de Java en C++, mais l'intégration de la JVM en C++ me semble plutôt ridicule. Je veux juste exploiter certaines fonctionnalités du langage Java dans mes applications C++, mais pas exploiter toutes les API Java frivoles.

EDIT:

Je vois d'un grand nombre de réponses que j'ai obtenu que je dois préciser ...

Je suis arrivé récemment pour développer des applications de Node.js, qui utilise JavaScript. JavaScript dans istelf est une spécification de langage, il ne vient pas automatiquement avec le DOM, window.open, etc., bien que cela ait été fait pendant un certain temps. Je me demande s'il y a quelque chose de similaire à Google v8, sauf pour JavaScript, mais pour Java. Au final, je m'en fous si je ne peux pas écrire des applications Hello World, je veux juste pouvoir intégrer Java dans une application C++ comme je peux intégrer du JavaScript dans une application C++ avec v8 ou SpiderMonkey. Si je pouvais le faire, alors je pourrais implémenter la sortie de console en C/C++ et rendre cette implémentation appelable de Java.

+5

Sun libs et JVM sont deux choses complètement distinctes, et sans doute la caractéristique principale de Java est le garbage collector state-of-the-art --- clairement une fonctionnalité JVM. –

+1

Voulez-vous dire, quelque chose qui compilerait Java à quelque chose d'autre que le bytecode JVM? Ou qui compilerait le bytecode JVM à autre chose? Ou quoi? – hyde

+0

JavaScript est un langage de script, et la plupart des interpréteurs de langage de script sont conçus de manière à pouvoir être facilement intégrés dans une autre langue (généralement un langage compilé comme le C/C++). Je ne suis pas tout à fait sûr pourquoi vous voulez intégrer un langage compilé comme Java dans un autre langage compilé comme C++. Il est préférable d'utiliser un interpréteur de langage de script comme JavaScript ou Python ou Lua, qui a une API clairement définie pour l'intégration si vous voulez un langage de script pour votre programme. –

Répondre

0

il y a poids léger processeurs java conçu pour être utilisé dans les petits appareils, par exemple JOP

+0

Il existe plusieurs UC Java natives, voir [Wikipedia] (http://en.wikipedia.org/wiki/Java_processor) par exemple. – JimmyB

5

Voulez-vous seul la machine virtuelle Java sans l'API (bibliothèque standard)? Le JRE est composé par la JVM (Virtual MAchine) et la bibliothèque standard, je doute que vous puissiez trouver une implémentation java sans la JVM ... Vous pouvez trouver un compilateur qui compile le code source java en code natif (jetez un oeil à GCJ), mais pas une implémentation Java sans la machine virtuelle.

Jetez un oeil à this wikipedia page pour voir quelques implémentations Java alternatives.

1

Il existe GCJ (GNU Compiler for Java), mais le projet a été abandonné depuis que OpenJDK a été ouvert.

1

Comme d'autres l'ont laissé entendre, la «JVM» est le mécanisme qui sait charger les classes, interpréter les «bytecodes» et gérer le stockage. Il n'inclut pas l'un des éléments java.lang ..., sauf que quelques classes (String, Class, et al) sont nécessaires pour représenter des classes et d'autres structures de données de base dans la JVM. En conséquence, Java sans JVM est juste un tas de bits sans signification.

Il existe (ou existait) des versions compilées de Java qui ont besoin ou non de l'interpréteur (bien qu'un interpréteur raisonnablement compact soit assez facile à construire). Un chargeur de classe primitif et une sorte de gestion de stockage sont toujours nécessaires, mais le chargement des classes peut être simple et pour les applications de courte durée (ou celles qui sont soumises à des restrictions spéciales), le gestionnaire de stockage n'a pas besoin de garbage collection. Comme le suggère pstanton, il existe des implémentations Java "légères" (ou "Java") qui conviennent aux petits appareils.

1

À mon humble avis, vous devez ré-analyser ce que vous voulez vraiment.

exécution Java est constitué de deux composants principaux

  • La JVM pour exécuter le code
  • Les bibliothèques standard qui viennent avec elle.

Vous proposez d'utiliser Java, mais il ne vous reste plus rien. Par exemple, vous ne pouvez même pas écrire un programme "hello world" sans les bibliothèques car String est une classe dans le JDK.