33 votes

Pourquoi autant de nouveaux langages sont-ils écrits pour la machine virtuelle Java?

De plus en plus de langages de programmation (Scala, Clojure, ...) sont conçus pour la machine virtuelle Java et sont donc compatibles avec le Byte-Code Java.

Je commence à me demander: pourquoi la machine virtuelle Java?

  • Qu'est-ce qui le rend si puissant ou si populaire qu'il existe de nouveaux langages de programmation, qui semblent aussi gagner en popularité, créés pour cela?

  • Pourquoi n'écrivent-ils pas une nouvelle machine virtuelle pour une nouvelle langue?

54voto

Joachim Sauer Points 133411

Pourquoi ne pas écrire une nouvelle VM pour une nouvelle langue?

Celle-ci est facile:

  • la rédaction d'un bon VM est dur
  • l'écriture d'un rapide VM est dur
  • faire une VM exécuter sous plusieurs architectures est dur
  • les bibliothèques existantes travailler avec des machines virtuelles existantes
  • les outils existants (des débogueurs, des profileurs, compilateurs, ...) travailler avec les machines virtuelles existantes
  • amener les gens à installer une nouvelle machine virtuelle est dur
  • instantanée de l'interopérabilité avec d'autres langues ciblant la même VM
  • machines virtuelles existantes ont été testés dans la production

26voto

b.roth Points 4198

Performance et Bibliothèques

  • La JVM est l'un des logiciels les plus optimisés au monde.
  • Pour tirer parti de la vaste gamme de bibliothèques de classes Java.
  • Le fait que l'interaction entre les langages Java et non Java au sein de la machine virtuelle Java fonctionne.

19voto

SyntaxT3rr0r Points 10771

La JVM est solide et fonctionne à partir de la plus petite carte à puce Java (ok, une petite VM ;) pour le plus grand cluster super-ordinateurs que vous pouvez imaginer.

Parce qu'il est solide comme un roc, il y a des pays entiers où les gens ont:

  • une carte à puce Java dans leur porte-monnaie que soit leur carte d'identité nationale ou de leur système de soins médicaux de la carte (ou les deux)
  • un téléphone portable qui a une JVM (ou un Dalvik VM, qui est essentiellement Google version rebaptisée de la machine virtuelle Java). Heck, l'iPhone dispose d'un CPU ARM optimisé pour exécuter le bytecode Java (mais pour des raisons commerciales Apple a décidé de ne pas offrir de Java sur iPhone/iPad).
  • un lecteur BluRay qui bien sûr a Java (parce que ça fait partie de l'BluRay spec).

Je suis de développer un logiciel commercial en Java: nous vendons sur Windows et sur OS X, mais nous sommes tous à développer sur Linux. Et ça fonctionne, tout simplement. Et il fonctionne sur un système Solaris trop, etc. Et c'est parce que nous sommes originaires de la JVM: au revoir la portabilité de numéro. Aussi longtemps que la plateforme dispose d'une machine virtuelle, le logiciel doit travailler.

Alors je ne peux pas croire que quelqu'un le mentionne encore: c'est un très bon démarrage à partir d'un point de vue sécurité.

La machine virtuelle Java est, de par sa conception, le système immunitaire de dépassement de la mémoire tampon/débordement. C'est énorme. C'est en fait plus énorme que la plupart des gens réalisent.

Le seul "Java" débordement de la mémoire tampon que je me souviens sur Linux (qui m'a incité à la mise à niveau en raison de préoccupations en matière de sécurité) était en fait un dépassement de la mémoire tampon conduisant à l'exécution de code arbitraire dans les... une C écrit lib (zlib, si je me souviens bien, dans les jours de Java sur Linux était encore défaut que lib).

Bien sûr, pour les webapps de dépassement de mémoire tampon/débordement conduisant à l'exécution de code arbitraire ne sont pas le vecteur le plus important de l'attaque plus (maintenant que XSS et de l'injection SQL ont volé le show). Mais dans tous les autres cas de dépassement de mémoire tampon/débordement sont la source de la plupart des problèmes de sécurité.

La JVM est à l'abri de cela.

En outre, grâce à son design, il est facile de brancher divers outils comme les profileurs et débogueurs.

C'est un très solide et sécurisé (lorsqu'il est utilisé correctement) de la technologie. C'est pourquoi il est si largement utilisé par les deux tech-savvy (Java est énorme à Google, à partir de GMail pour Android pour GWT, etc.) et tech-pas-que-les entreprises.

Il est effectivement possible de soutenir que Java succès de la JVM et que "la machine virtuelle Java" est beaucoup plus important que de "Java le langage".

La JVM est le plus grand "langage" d'histoire à succès de ces 20 dernières années. Et c'est mérité. Et il est là pour rester :)

15voto

  • 15 ans d’amélioration, de performance, etc.
  • est gratuit et open source
  • fonctionne sur une grande variété de plateformes
  • prend en charge plusieurs langues sur une seule machine virtuelle
  • la langue principale (Java) est l’une des langues les plus répandues, donc Java + JVM est un point d’entrée relativement sûr
  • raisonnablement sécurisé et robuste

5voto

Paul Tomblin Points 83687

Parce que quelqu'un d'autre a déjà pris la peine de s'assurer que tout fonctionne bien sur toutes les grandes plates-formes.

Si vous écrivez votre propre machine virtuelle, vous devez en écrire une pour Linux / Unix / BSD, une pour Mac et une pour Windows, et vous devez prendre en charge la machine virtuelle sur toutes ces plates-formes, ainsi que votre compilateur de langage et vos bibliothèques d'exécution. Si vous utilisez la machine virtuelle Java, la première partie est prise en charge par Oracle, IBM et Apple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X