Java to JavaScript using GWT compiler

前端 未结 4 2020
长发绾君心
长发绾君心 2021-02-07 12:43

I have some Java code written that I\'d like to convert to JavaScript. I wonder if it is possible to use the GWT compiler to compile the mentioned Java code into JavaScript code

4条回答
  •  执笔经年
    2021-02-07 12:49

    Although you can set the compiler to output 'pretty' code, I suggest you write export functions for the classes you want to call from outside your GWT project. I believe somewhere in the GWT documentation it's detailed how to do this, but I couldn't find it so here an example I just created.

    class YourClass {
        public YourClass() {
            ...
        }
    
        public void yourMethod() {
            ...
        }
    
        public static YourClass create() {
            return new YourClass();
        }
    
        public final static native void export() /*-{
              $wnd.YourClass = function() {
                  this.instance = new @your.package.name.YourClass::create()()
              }
    
              var _ = $wnd.YourClass.prototype;
              _.yourMethod = function() {this.instance.@your.package.name.YourClass::yourMethod()()}
        }-*/;
    }
    

    EDIT

    To elaborate, your code will get obfuscated like normal, but thanks to the export function, you can easily reference those functions externally. You don't have to rewrite anything from your Java class in JavaScript. You only write the references in JavaScript, so you can do this:

    var myInstance = new YourClass();
    myInstance.yourMethod();
    

    Of course you have to call the static export method from somewhere in your GWT app (most likely in your EntryPoint) to make this work.

    More info about referencing Java methods from JavaScript: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html#methods-fields

提交回复
热议问题