Reputation: 35276
I want to know what is the best approach to take to build a GWT library into a JavaScript library. When this GWT library to be compiled into Java script does not have any GWT server side component in it.
Just plain front-end components. Including only things like AJAX calls, etc.
In Java the GWT library is used like this:
TheGWTLibrary api = new TheGWTLibrary();
api.setServer("http://www.somewhere/api");
api.post(stuff, new Callback(){
void success(){
}
void fail(){
}
});
api.get(new Callback(){
void success(){
}
void fail(){
}
});
Such that the GWT library project would be usable in any HTML project without making it a GWT app.
If this is possible where will the dependencies of this GWT library be compiled to? Will it be included in a one single JavaScript (js) file?
Upvotes: 0
Views: 501
Reputation: 9741
[EDIT 2016]
The way to go with new GWT (2.8.0) is using JsInterop
, read the documentation API. Note that it's still in 2.8.0-SNAPSHOT but will be released in few weeks. Also, JsInterop in 2.7.0 has been deprecated and removed in 2.8, so don't use it.
[END EDIT]
Apart from writing your JSI method, there are two easy ways to deal with this.
1.- GwtExporter
You might be interested on reading this article I wrote some years ago:
https://code.google.com/p/gwtchismes/wiki/Tutorial_ExportingGwtLibrariesToJavascript_en
It uses gwt-exporter, and you can take a look to a couple of projects using this approach:
JsUpload wich is a port of gwtUpload: https://code.google.com/p/gwtupload/wiki/JsUpload_Documentation https://github.com/manolo/gwtupload/tree/master/jsupload
GwtChismes is a very old library useless right now and not maintained anymore, but it is exported as well https://code.google.com/p/gwtchismes/wiki/JsChismes_Documentation https://code.google.com/p/gwtchismes/source/browse/#svn%2Ftrunk%2FGWTChismes%2Fsrc%2Fjschismes
I also did some experiments exporting gwtquery to js (jsQuery): https://code.google.com/p/gwtquery/wiki/JsQuery
Chronoscope was another gwt library using this approach https://code.google.com/p/gwt-chronoscope/wiki/JavaScriptAPI
2.- JsInterop
If you want to play with new stuff, you might read about JsInterop a beta feature in GWT-2.7 which will be fully functional in GWT-3.0.
It allows you to export java classes to JS. You have to use the -XjsInteropMode JS
and some annotations.
There is no so much documentation right now, but there is a document explaining the API, and an interesting presentation.
https://docs.google.com/document/d/1tir74SB-ZWrs-gQ8w-lOEV3oMY6u6lF2MmNivDEihZ4/edit
http://gokdogan.appspot.com/gwtcreate2013/#1
Upvotes: 2
Reputation: 2411
It sounds like you're looking for something like GWT Exporter. It allows you to export a GWT library as a publicly accessible javascript API.
It looks like you'll still need to compile the GWT library as a web application to use it, but if you don't have any server-side code, it should be as simple as compiling your API, copying the war folder and adding a reference to war/[yourapp].nocache.js.
If that's not what you're looking for, you can check out this question for other options.
Upvotes: 1