Wikipedia
JavaPoly is a library that polyfills native JVM support within any modern web browser. This allows websites to import Java libraries, and call them directly from Javascript, even if the user does not have Java installed on their computer. Unlike GWT and TeaVM, which attempt to compile a subset of Java into Javascript, JavaPoly actually executes Java bytecode instructions. This means that JavaPoly can run almost any Java library, including libraries that use threads, shared memory, locking primitives, and 64-bit integers.
JavaPoly is designed to optimize performance by taking advantage of native JVMs when available. When running in Node.js, JavaPoly will always use a native JVM and thereby utilize native capabilities like multi-core support (which is otherwise unavaiable to javascript applications). Similarly, JavaPoly will take advantage of native Java support within a web browser, if such support is available. If no suitable alternatives are detected, JavaPoly will call into a Doppio VM, which provides execution support on legacy browsers.