&gt; It would be really good if gwt,doppio,teavm all agreed on a single api facade for targeting the browser API.<p>Unfortunately, that is impossible due to differing requirements; I&#x27;ve actually talked with the teavm and bck2brwsr folks [0]. Doppio requires asynchronous function calls to support preemptive multithreading. TeaVM, GWT, and bck2brwsr all map Java methods directly to synchronous JavaScript methods, preventing them from supporting multithreading.<p>This is actually one of the larger differences we describe in the academic paper that sets Doppio apart from those projects and Emscripten [1].<p>[0] Start of the conversation: <a href="https:&#x2F;&#x2F;groups.google.com&#x2F;d&#x2F;msg&#x2F;plasma-umass-gsoc&#x2F;uuZk09CGIM4&#x2F;EsTx_Lq3TcYJ" rel="nofollow">https:&#x2F;&#x2F;groups.google.com&#x2F;d&#x2F;msg&#x2F;plasma-umass-gsoc&#x2F;uuZk09CGIM...</a><p>[1] PLDI 2014 paper (Sorry, I know I&#x27;m linking this a lot in the comments thread, but I promise it&#x27;s a fun read!): <a href="https:&#x2F;&#x2F;plasma-umass.github.io&#x2F;doppio-demo&#x2F;paper.pdf" rel="nofollow">https:&#x2F;&#x2F;plasma-umass.github.io&#x2F;doppio-demo&#x2F;paper.pdf</a>