This 8-minute screencast introduces a new Internet technology called GVision. The subtle way in which it is presented may lead you to believe that this new open source project is just another clone of Desktop technologies such as Adobe Air, JavaFX, and so on (beware, the Web is not involved in any way, here).
Now, I admit my shameless attempt to attract as many developers as possible. And, in truth, the video should still be seen by any passionate developer usually using UI toolkits like QT, Swing, WPF, Cocoa, etc.
But I would stress that the Swing/SwingX wrapper you will see at work in the various demos, yet important, is however just a "piece" of the whole project. For example, if someone does not like it could easily (more or less) replace it with a module that best suits his/her needs; at a pinch even with a JavaFX wrapper (although, IMNHO, it will be difficult improving the ease of use provided by the current one). The client runtime, in fact, is a non-monolithic OSGi-based application, therefore any bundle, except those few representing the "platform core", can be removed or replaced.
The real GVision's added value is indeed under the hood. In the sense that it's mainly due to a couple of "ingredients" that it's no so easy to detect by simply watching the screencast. Briefly summarize them:
- Whereas in Rich Internet Applications the most prominent aspects are represented by the presentation capabilities and by tools for design support, my focus was more on how to simplify the distributed infrastructure. In marketing lingo... GVision enables developers to build distributed applications with the simplicity that characterizes local applications, and to deliver and run them with even more dynamism than Web applications.
- GVision applications are developed by using a client-side dynamic language called
Givvy. Givvy provides
a few features that are generally only available in server-side languages :
- A quite advanced native Actor Model (a short presentation), easy to use also by a OO developer (after all, that's my background by now) and offering a performance comparable to that provided by the Erlang's implementation; still, in my opinion, the most prominent Actor Model implementation.
- A dynamic and declarative interface to the language's APIs. This means that at run-time, you can inject, replace or remove code from your application, or also extend Givvy with a new API.