Friday, May 27, 2011


More notes on JavaFX2.0

Oracle did a really good job on JavaFX 2.0 - there is now a webbrowser component included (based on WebKit). This is very usefull since you can implement a part of your application in HTML/JavaScript. This brings RichClient apps and WebApps closer together.

Think of a rich client app where you want to display a google map or use a jquery library to display charts, integrate sites like facebook, google, ...
You can decide if you implement/reuse a widget/webapp in HTML or implement it in Java(FX).

It is even possible to call JavaScript embedded in the displayed website or handle events from the website (get a callback from JavaScript). Note that WebKit already supports HTML5.

I remember an example in Smalltalk/MT where it was possible to get a callback into Smalltalk on events generated from the scripting engine in Internet Explorer. So a Smalltalk window was able to display a webpage by embedding IE and when you clicked in the webpage you could handle this in your Smalltalk app.
But it was only possible with deep knowledge of IE and its COM interfaces.

JavaFX also provides Swing Interoperability - so you can use existing Swing widgets or integrate a JavaFX stage/scene into your Swing app. You can also style your app using CSS similar to a webpage. You can run a JavaFX app easily as applet, webstart or local application. It is very deployment friendly and you can even develop apps that run on a TV. Let's see if it will also have a future on mobile devices/platforms. Yes - JavaFX is really nice and opens new opportunities.

But still ... with Java you have the compile-run-check cycle and you waste a lot of your development time compared to more productive languages like Smalltalk where you dynamically interact with objects and code. Maybe all these nice UI features like CSS skinning, embedded web browser, animation framework, visual effects ... should be added to platforms like Squeak or Pharo too ;)

Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?