在JavaScript中运行Java

jopen 10年前

This discusses about how to run the Java platform within JavaScript engine in a browser. Standard way of running Java application in a browser is via Java Applets. Applets can provide high level of interactive features in a web browser that will exceed the ordinary capabilities of HTML. If you are looking to run JavaScript in Java, you should refer nashorn JavaScript engine.

JavaScript has no competitor when it comes to client-side scripting. With the advent of modern web and browsers JavaScript is even more thriving. With good JavaScript skill that combined with couple of libraries like jQuery, we can get a good job easily in the present market. In this scenario, I just had a thought to find out how much it is possible to run a Java JVM entirely within a JavaScript engine in a browser. Is there any work going on in this front and any libraries available that provides this support.


Orto JavaScript JVM

In 2008, John Resig has posted a blog post on Orto JavaScript JVM. We can run Java bytecode through Orto which produces a JavaScript  and that can embeded in a Web page. I couldn’t trace the source project URL for Orto and looks like presently it is not being maintained. Luckily some good Samaritan has posted the Orto project in GitHub . There is no information about the license terms and docs all are in Japanese.

Jainja Java to JavaScript

Jainja claims that all the major features of Java 1.5 specification is supported. A demo of Jainja JVM is available as a Chrome App. A Tetris game is hosted in appspot using this JVM and its quite impressive. Response of the application in the browser is sluggish. The project source is available and hosted at SourceForge.

在JavaScript中运行Java

BicaVM

This is an at building a JVM. This is more like a proof of concept (POC) and is not a full-fledged JVM. This is attractive in the sense, we can learn how and where to start for a similar project.

LLVM, VMKit and emscripten Combo

“LLVM Project is a collection of modular and reusable compiler, tool-chain technologies”.  VMKit project is an implementation of the Java and .NET VM that is built on LLVM. VMKit is not presently being maintained, but the code is available view their repository. emscripten is a LLVM-to-JavaScript compiler. It can convert the LLVM bitcode to JavaScript. So by combining these three, we should be able to run Java in JavaScript engine. VMKit is not presently maintained and given the use of these combo, it is not a promising idea to go for this.

Other Similar Java JVM

  • +script – a partial implementation that assists a university course.
  • Bck2Brwsr – This is an active most project among all these listed. This is from one of the founders of NetBeans IDE.
  • Doppio – is a Java JVM that can run Java in a JavaScript engine. It is written in CoffeeScript. This is the one that claims to have the most support for features.
  • jarjvm – is an entirely written in JavaScript Java JVM. Presently it is not active based on the commits in GitHub.
  • node-jvm – is a Java virtual machine in pure node.js Not much information available on which version of Java specification is supported. Looks like, its not actively maintained.

Among all the projects listed above, Bck2Brwsr and Doppio are the JavaScript Java JVM that looks promising. It will not be an easier task for these projects to catch up with Java 8.

This Java tutorial was added on 12/01/2015.

来自:http://javapapers.com/java/run-java-in-javascript/