Doppio, providing a JVM written in TypeScript, serves as the default JVM for JavaPoly.js. "JavaPoly can interface with several JVM implementations, including a system JVM, but it always falls back to Doppio if no other JVM implementations can be found," Sproch said. "Doppio is the underlying technology that allows JavaPoly to run on any system, even if the user doesn't have Java installed."
In theory, JavaPoly.js would enable a host of JVM languages to be supported in the browser, including Groovy and Scala, project developer Jim Sproch said. "Any language [that] runs in the JVM should be able to run using JavaPoly," he said. "In fact, you could even run Python using Jython. This project will likely spawn several other projects to support all the various languages." Sproch further acknowledged that the project is largely about enabling Web development in Java.
JavaPoly.js developers currently are building native JVM plugins for Chrome and Firefox. "Our hope is to standardize the API in an official standards body, but those discussions are still very early-stage," said Sproch. "To be clear, JavaPoly will run in any modern browser even without support from the browser vendors. Any browser with native Java support will obviously be an order of magnitude faster than a browser without native support, so it's in the browser maker's best interest to add native support."
Java, however, "was designed much more holistically, with native support for threads, shared memory, locking primitives, 64-bit integers, etc." It also has built-in type-checking and a much more mature software development infrastructure. "The language was much better designed by a whole team of engineers, and is therefore more suitable for larger scale applications."
Currently in an early beta stage of development, JavaPoly.js will be available as a general release whenever its developers believe the API has stabilized. User feedback will be collected in the meantime.