After some delay, Java2Script 1.0.0 M4 now released.
New and Noteworthy
1. Support org.eclipse.swt.widgets.Dialog#open in compiler level
2. Extension point for external script visitor, see
3. Bug-fix of M3 compiler
1. CoolBar, ToolBar, Menu, ColorDialog, FontDialog, Tree, Table, Combo,
and other widgets improvement
2. Support org.eclipse.swt.widgets.Dialog#open in asynchronous mode.
1. Simple RPC. See
2. Update HttpRequest according to working draft of
Java2Script Developer Team
1. Welcome our new developer – Sal Ferro, who joined Java2Script in
2. Google Group http://groups.google.com/group/java2script/ created.
Next Release would be 1.0.0 RC with improved performance in late
As a matter of mistake, I placed 1.0.0 M3â€™s â€œj2slibâ€ into Java2Script
1.0.0 M4 for Eclipse 3.2 (Eclipse 3.1 was not affected). I just
repacked and released 1.0.0 M4. If anyone happened to download and
install M4 with M3â€™s â€œj2slibâ€, please re-download and re-install M4:
Soheil Hassas Yeganeh, an Iranian developer, who lives Tehran, is a contributor to java2script project. He has many experiences using java and j2ee and also some hard core FreeBSD and Linux kernel projects. He is now a Software Eng. PhD student in Sharif University of Technology. He got his BS in SE and MS in AI from Sharif University of Technology.
This extension mechanism can be used to override default behavior of java2script compiler. So, why do we need to override the default behavior of the java2script compiler? Let’s have a simple example. Suppose an application that uses a library that can not be converted to java script, an ejb invocation:
EJBX x = EJBUtil.newInstance(EJBX.class, jndiName);
Now if we use the default java2script compiler the code would be something like:
var x = foo.bar.EJBUtil.newInstance(….);
But, we now that this will not work. It seems to be unsolvable before the extension mechanism is introduced. But now the java2script compiler can be extended to convert such these codes to another java script code that does work on a browser and also does not use the library.
Now if we extend the java2script compiler we can generate a stub invocation like this, that sould work without any ejb import or invocation:
ServletFacade.runEJBMethod(“foo.bar.EJBX”, “methodA”, jndiName);
//And the ServletFacade could be an stub for calling a servlet that can run EJBs
So, with this mechanism, one can convert any source code in his own way.
Java2Script now introduces Simple RPC, which is aiming to help Java
developers balancing and debugging *local* and *remote* procedure calls for AJAX RIAs without knowledge of serialization and deserialization.
In Simple RPC, Java client have two modes: AJAX mode and local Java Thread mode (Default mode).
Here are some simple words describing the procedure of developing AJAX RIAs with Simple RPC.
1. Java developer can debug those procedure calls in local Java Thread mode with local Java SWT client.
2. After functions implemented, they can add a Java servlet wrapper (Java2Script provided), export all things as a JAR file and deploy it to Java EE container.
3. And now switch Java client to AJAX mode (set some static variables) and test whether the deployed servlet is OK or not.
4. If not correctly deployed or bugs popup, developers can switch back to local Java
Thread mode and do their debugging again.
For more details, please check out latest codes from SVN.
I am sorry for saying Java2Script M4 is delayed to November.
And considering M4 will be the final milestone with features frozen and the current works has not worked out all features scheduled, M4 will be put off to early November.
BTW: Use SVN to keep update with latest Java2Script. Or join Java2Script team contributing your efforts in implementations, tests or documents.
In those discussion, Bruce from Google told us that GWT’s motivation is “to be as small and as efficient as possible” and its two separate goals are:
(1) Create highly optimized JS output
(2) Optionally, publish selected parts of your code with a JS-compatible API
I thought that wais a very clever design. And I admired GWT team for its “excellent 100k ~ 200k final *.js files with very good performance”.
The updates mainly include Combo, Spinner, Menu, ToolBar and CoolBar. For more details, please check out latest sources from SVN, or stay tuned for 1.0.0 M4 scheduled in the next month.
But as top 2 position link for key world “js compressor” in Google, I decide not to disappoint visitors with no discrete implementations any more. Here now, I give an implementation (Thanks for J2S 1.0.0 M3, so such a solution does not require much time and pains):
This LZ77 implementation was considered as buggy. I used in J2S Clazz.
BTW: Developing the above J2S/SWT application (including wrapping the old LZ77 utilities into a servlet) took me about 2 hours.
For JS compressor, I recommend you to use Dean’s Packer.
New and Noteworthy
1. No more need to enhance Eclipse JDT core jar for Java2Script compiler
2. Full support of Eclipse 3.2.0 besides Eclipse 3.1.*
4. Early Java reflection implementation.
1. Improvement of CTabFolder, Table, Combo, ProgressBar, Scale
2. Support of embedding Shell inside normal HTML page (please visit inline demo of http://j2s.sourceforge.net)
3. Early key navigation support.
4. More LAF themes
1. Support loading classes asynchronously both in Java and Java2Script, please visit
1. Support JUnit tests both Test Case and Test Suite
More information, please visit updated homepage: http://j2s.sourceforge.net/