Java2Script Desktop

August 23rd, 2008

You may already know Web OS, like eyeOS. In fact, those web OSs are web desktop + web services. And there are lots of web desktop styles. And here we introduce Java2Script Desktop, basing on Java2Script SWT technology:

Click to view screen shot in full mode

There are four elements on the above screen shot: Tray Bar (left upper corner), Task Bar (left side), Quick Shortcut Bar (bottom), Window.

This is a prototype design for Java2Script Desktop. Please check it out at http://izuz.net/gtalk/ . Hope to hear your feedback.

Cappuccino and Objective-J

June 7th, 2008

Today, I came up with 280 Slides, a web presentation design editor. I was shocked by its pretty looking Mac-like UI at the first glance.

From an interview to 280 Sliders developer, I learned to know that Cappuccino is the framework behind the product. And Objective-J language is introduced so they can port Apple’s Cocoa framework. Cocoa is a framework based on Apple’s own language Objective-C. In fact, 280 Slides’ UI looks like Apple’s Keynotes. And the 280 Sliders’ developers are former Apple developers. Cappuccino parses Objective-J files, which are with file extension .j, convert to JavaScript codes and executes them on the fly.

So, another cross compiler, Objective-C to JavaScript. It is quite worthy for further digging.

And digging into sources, I find that it uses lots of images to make up the whole UI, includes button, scrollbar, window borders and other components. And besides *.j and *.js files, there are some *.plist and *.sj files. *.sj use the same syntax as normal JavaScript. But from the sources, I guess they are compiled and mixed from *.j. Besides the core Objective-J.js, AppKit.sj, Foundation.sj and SlideKit.sj are three important files.

And it is great to hear the news that Cappuccino and Objective-J will be open-sourced at http://objective-j.org/ in the near future.

Java and JavaScript

April 28th, 2008

Today, I came up with the idea of “Orto: Java in JavaScript“. Well, it is not “Java to JavaScript”, it is “Java in JavaScript”. It is said that java.lang.Thread is supported. But as there is no downloads available, and it is not open source, so I could not test it.

Supporting Thread programming in JavaScript would be cool. Once I spent some time trying to figure out how to support Thread in Java2Script project, but I failed. But I managed to program execute codes asynchronously by using SWT’s Display#timerExec(int, Runnable) or Display#asyncExec(Runnable) instead. So even though I can not use Thread#sleep, I still can do lots of thread things.

And Orto seems to be in a different way to support Thread, the codes it generated look like these:

case 117:orto246[orto247-2]={high:(~orto246[orto247-2].high)
&0xffffffff,low:(~orto246[orto247-2].low+1)&0xffffffff};
if(orto246[orto247-2].low==0){orto246[orto247-2].high++;
orto246[orto247-2].high&=0xffffffff;
orto246[orto247-2].low=0;
}break;

Compiling to Java code into byte-code like script, and loading and running these scripts in “JVM” should be a way to support all Java things. In my opinions, all locks and threads are re-implemented. Performance should be a problem. I know that there is another project called XML11, which is also trying to compile Java codes into JavaScript byte-code.

And recently, I also noticed that there was a debate about GWT Ext or Ext GWT. You may already know that GWT is about compiling Java to JavaScript and Ext JS is a HTML/CSS+JavaScript based UI library. It is interesting to see people combine these two technologies together. And it is more interesting that putting GWT before Ext JS and putting Ext JS before GWT is two different things. You may want ot read Didier Girard’s discussion for a clear idea.

About 2 years ago, when I started Java2Script project, I had to think about its programming model. At that time, people began to wrap existed JavaScript library in Java way. I called it “JavaScript for Java (JavaScript4Java)”, which is quite different from my “Java to JavaScript (Java2Script)”. So “2″ and “4″ is totally different, right?

In fact, I do know that Java and JavaScript are two different language. The reason that I chose Java as the source and JavaScript as the target is that Java is most beautiful and most used language while JavaScript is a world wide supported language. And I am familiar and love Java language. So I created Java2Script. I do believe that C#-to-JavaScript, Ruby-to-JavaScript or Other-to-JavaScript is not a big deal for me. But I may not have energy to make a similar compiler.

Java and JavaScript may be hotter and hotter. Good to see that more and more people is linking Java and JavaScript together.

Eclipse RAP 1.0 Comes

October 15th, 2007

Eclipse RAP team has just released its 1.0.

The RAP project enables developers to build rich, Ajax-enabled Web applications by using the Eclipse development model, plug-ins with the well known Eclipse workbench extenstion points, JFace, and a widget toolkit with SWT API (using qooxdoo for the client-side presentation). The project has graduated from incubation and released its 1.0 release.

In fact, Eclipse RAP and Java2Script have a lot in common. Both are based on SWT API and have goals to provide ways for developers to share the same base of code for products that deploy to the web and the desktop. Here is overview of Eclipse RAP. And you can also read Java2Script’s overview for comparisons.

And you can also check out Eclipse RAP demo to get more details. It’s interesting to see that RAP and Java2Script have 2 very similar demos: RAP’s RWT Control Demo and Java2Script’s SWT Control Examples.

More discussion may be found at ajaxian.com.

Related link: InfoWorld Eclipse offers AJAX server

Java2Script Gtalk on Opera Mini 4

October 13th, 2007

It’s amazing to see that Java2Script’s Google Talk get run on Opera Mini 4 inside a mobile phone.

Here is Opera Mini 4’s simulator for you to test its CSS/JavaScript/AJAX compatibilities:
http://www.operamini.com/beta/simulator/

Here are screenshots:
opera-mini-j2s-gtalk-small.png

Zoom in to get a clear look:
opera-mini-j2s-gtalk-zoom-in.png

Login and connect:
opera-mini-j2s-gtalk-connecting1.png

Now we are in:
opera-mini-j2s-gtalk-logined-small.png

Zoom in to get a clear look on friend list:
opera-mini-j2s-gtalk-friend-list.png

But Java2Script Gtalk does not get run as totally correct. It fails to maintain normal connection back to Gtalk proxy server. So after a few seconds, the proxy server closes the connection. Maybe Java2Script Gtalk may fix this problem later. And also I think Opera Mini team may improve its AJAX supports in the near future so nothing need to be modified.

Java2Script 1.0.0 Final Release

October 2nd, 2007

Here comes Java2Script 1.0.0 final release!

Please visit http://j2s.sourceforge.net/ for more information.

Feature List
==========

Java2Script Core
—————-
1. Object oriented JavaScript simulator is introduced
2. JavaScript ClassLoader is built inside
3. Eclipse JDT based Java to JavaScript compiler, support Java 1.4 and Java 5 features, including generic, enums, static imports, enhanced loops
4. Support incremental building for Java projects
5. Support Hotspot JavaScript swapping for debugging
6. Support most classes in java.lang.*, java.utils.* and others packages
7. Support native JavaScript through @j2s* Javadoc in Java sources
8. Support creating Java2Script projects by wizard, including Servlet project
9. Support loading *.js from Firefox Add-on.
10. Support Eclipse 3.1.*, 3.2.* and 3.3.*

Java2Script SWT
—————
1. Eclipse SWT 3.1 API is ported for JavaScript in modern browsers, Firefox, Internet Explorer, Opera, Safari
2. Window manager is built inside
3. Support UI blocking fow SWT’s Shell and Dialog
4. Support SWT deffered layout
5. Support detecting font size change in Firefox

Java2Script AJAX
—————-
1. HttpRequest/AJAX is introduced for both Java and JavaScript
2. Simple RPC API is introduced to call back Java server, which supports Cross Site Scripting
3. Support dynamic class loading for both Java and JavaScript
4. Support Java reflection (early implementation)

Java2Script JUnit
—————–
1. Support JUnit tests both Test Case and Test Suite in text mode.

Java2Script Example
——————-
1. Google Talk in JavaScript ( http://demo.java2script.org/gtalk/ )
2. SWT Control Examples ( http://demo.java2script.org/controls/ )

For more feature detailed description, please visit:
http://j2s.sourceforge.net/features.html

Java2Script 1.0.0 RC Released

September 1st, 2007

FYI:
Java2Script 1.0.0 RC Released! Please visit Java2Script’s home page for more updated information.

And Java2Script 1.0.0 Final Release will be available at the end of this September.

New and Noteworthy
==================
Java2Script Core
—————-
1. Eclipse 3.3 supported
2. Replace Java builder with Java2Script builder for Java2Script project
3. Hotspot supports for debugging.
4. Bug fixes.

Java2Script SWT
—————
1. Bug fixes.

Java2Script AJAX
—————-
1. Update Simple RPC from 1.0.0 to 1.0.1
2. Bug fixes

Java2Script Example
——————-
1. Google Talk’s Java2Script copy updated ( http://demo.java2script.org/gtalk/ ).

Moving Blog to Java2Script.org

June 28th, 2007

As a matter of spam comments over http://j2s.sourceforge.net/blog/ (over 20 spam comments per day), the Java2Script blog is moving to http://java2script.org/blog/ , which is powered with Wordpress’ Akismet plugin.

Even though former blog on j2s.sourceforge.net was installed with Akismet plugin, Sourceforge limits its server from connecting to Wordpress Akismet servers, which results in being unable to activate Akismet. After about-5-day-away, about 200 spam comments were piled up there. So the blog was moved.

Rewriting Java2Script’s GTalk

June 27th, 2007

Here is an early screenshot:

Java2Script's GTalk

BTW: Window Builder Pro was used to design the above UI

For more updated information, please visit http://demo.java2script.org/gtalk/.

Java2Script on Safari 3 Beta

June 12th, 2007

As Safari 3 Beta was published, I just tested it on a Java2Script demo. Here is the screenshot:

Java2Script LZ77JS Compressor