Java Spotlight 21

Roger Brinkley: Welcome to the 21st edition of the Java Spotlight Podcast. I'm Roger Brinkley.
Alexis Moussine-Pouchkine: And I'm Alexis Moussine-Pouchkine.
Roger: And in this edition of the podcast we'll do a feature interview with Java Champion Stephen Chin and the Visage project, which is a Java FX Script Compiler. And let's turn to the news segment. And in the news, Alexis, we've got the ServerSide Symposiums coming out this week, and I know that Steve Harris and Adam Messigner are doing keynotes there. Steve's should be quite interesting, since we just did the release of the JSR that are related to Java FX 7.0. But we also have Jerome there and Adam Bien, who has been on this podcast once before, and then Jim Knutson from IBM will also be presenting on the Enterprise Java platforms for the next decade. So also in the news this week, Alexis, GlassFish 3.0. A lot of pick-up in that area.
Alexis: Right. So, I mean, the numbers look really good, both in terms of people visiting the aquarium, where we have extensive coverage of what's new in GlassFish 3.1, as well as downloads. I mean, we try to track a number of metrics and, I mean, they all look really good with this release. Two that I think are worth mentioning here, the first one is we've posted an updated version to a clustering article for GlassFish. This was written a while back for the 2.x version of the product, and this was updated very recently. And I think for people interested in clustering and app service, maybe even in general, this is an interesting read. It starts off defining some vocabulary on what is a cluster, what do we mean by nodes and centralized admin and group management system.

I mean, all those things are being defined. And then we go into the specifics of how this works and is implemented in GlassFish 3.1. The other one which has got a lot of retweets is a post on GlassFish embedded. So GlassFish is certainly well suited for production use in clustered mode, but there's also an embedded version of GlassFish. So that's really an API for driving all of GlassFish, you know, starting, stopping it, deploying apps.

So basically you can bundle the runtime inside your application as opposed to deploying your application in the runtime in the app server. So that has gotten a lot of retweets, and we'll have a link in the show notes on a blog defining what's new in 3.1 and a screen cast that was done by a community member.

Roger: And then Alexis, it looks like we've had another horse in the stable with Java E6 adoption.
Alexis: Not quite, but really close. So we often mention GlassFish, obviously, and, you know, this is what I work on, so that's probably the reason why. We do mention Jboss once in a while, Oracle WebLogic as well, who's closing in on supporting the full Java E6 platform before the end of this calendar year. We talk about sometimes Apache Geronimo, IBM Worksphere. They have a beta version out on trying to support Java E6. We also mention Caucho Resin, which is a smaller player, which is interesting because they are said to support the web profile only. They used to be just the server container, and they now will support the web profile anytime now. And finally, the one that you were talking about is JOnAS, which is an Open Source application server from the OW2 consortium, who has just released a 5.2 milestone five version of the product, which has, you know, a long list of Java E6 features implemented, not all of them.

And as such, they're not certified just yet but on track, and, I guess, that's a lot of products competing for, you know, the customers to use them and developers to use them. So I think competition is great and choice is great.

Roger: And I think the key thing here in the end is is that what we're seeing is is with all of these people implementing, it's a strong indicator that of the strength of Java E6 as we move forward. So let's turn now to our Events section, and we take a look at the Events section, March 17th, WebLogic Troubleshooting and Performance Web Tuning webcast. Also on March 17th, PC Quest and Spark IT 2010. [indecipherable 04:21] Gupta, oh, this is over in India, we will be doing five sessions. And then EclipsCon, the 21st to the 22nd next week. Mark Reinhold and a variety of other people will be doing a variety of presentations there. Then we have a whole series of OTN Developer Days. They're in India, the 22nd, 23rd, and 24th in Bangalore, Pune, and Chennai.

Then on the 30th I'll be speaking at the Nashville J.U.G., and then we move to April 7th, and we have an OTN Developer Days in Reston, Virginia. And we'll follow that up with JavaOne, which will occur over in Russia, on the 12th and 13th of April. So great events to go to and a great opportunity.

And turning now to the feature interview. So had an opportunity when we were in JavaOne down in Brazil to speak with Stephen Chin about the Visage projects that he's working on. So let's go directly into that interview.

So I'm here at JavaOne Brazil with Stephen Chin. We're going to talk a little bit about some of the projects that he's working on.

Stephen Chin: I've been active in the Java.text community for several years and one of the big changes in Java FX 2.0 is they got rid of the Java FX script language, and they moved to javaps. It's interesting that they're no longer supporting a Java FX script language, but yet the compiler was the one part of Java FX which was open sourced for several years now. So I've adopted the Java FX Script Compiler on an open source project called Visage. And we have it under active development, adding new language features, adding support for the new Java FX 2.0 API's. And we're hoping that we can keep the language alive.
Roger: When you say we, what do you mean by we?
Stephen: It's an open source project. We have a bunch of different contributors who are project members working on the compiler, doing little tasks. At this point I'm probably the one making the largest code changes to the compiler, but a bunch of other folks are coming up to speed doing bug fixes and doing smaller items. And the Java FX 2.0 APIs require some level of wrapping to get them to work with Java FX scripts, so that's something we can get help with from folks who aren't compiler designers but are interested in language.
Roger: OK. The type of people that would work on this project would be experienced in developing compilers?
Stephen: So the core code base, it's actually derived from javac, so it's a true compiler, antler scripts, parser generator stuff. If you don't have any experience with compiler developments, it's a little bit hard to grock at first.
Roger: I've been there, done that. I did it once, and I don't want to go back. There are other things I could do though?
Stephen: Yeah, so the compiler work is actually the hardest for most people to pick up, but the other thing which we need a lot of help with is building some proxy API classes on top of other libraries, like the Java FX 2.0 APIs. And we're going to have to make some compiler changes to accommodate the language, but at the same time there's a whole lot of work involved in creating a clean, elegant user interface or language, set of API libraries in Visage, which people can use on top of the new Java FX 2.0 APIs.
Roger: So how much uptake has there been in the project since the 2.0 announcement that came out that said that the Java script was not going to be in the future development of the project?
Stephen: There's been a lot of interest. I mean, we probably have about 50 or 60 people on the mailing list who are contributing ideas and talking back and forth. Probably only a handful of folks who are actually at this point making code changes or doing things in the project, but definitely a lot of interest in the project, because for anybody who was doing Java FX development prior to 2.0, it's a significant investment to retool and rewrite your applications in Java APIs. So there's a lot of interest from folks who've been using Java FX script today so that they can get something that's as close as possible to their current applications so they can bridge. And then if they want to, they might use some of the Java APIs for performance reasons or to try out the new Java APIs, but it'd be nice to have cleaner, elegant, simpler solution for doing some of the UI design.
Roger: So let's talk a little bit about integration with tools. Obviously, composer now supports the script. It won't necessarily support script in the future. What are the plans and the directions for you guys as far as tools go?
Stephen: If you look at the toolsets today there's two different things which Java FX tools do. So one is Java FX Script code editing, and given the new Java APIs, Oracle has no reason to continue investing in that, so that's an area which we have taken over. We picked up the code base for the NetBeans and the Eclipse plug-ins, as well as the IntelliJ plug-in, which was in progress, and we'll update it to work with the new Visage compiler and over time try to get those to be the same level of quality as the Java ID's. The other thing which people have done with Java FX ID's is tool generation, tools which generate Java FX code, and my understanding is that they're actually going to keep the Java FX script modeling language. There's a subset of Java FX script which composer emits in FXD files, and they're going to keep that portion of Java FX script similar to, like, serialized JSON as a way of having that emit code that can then be turned into a user interface. So that class of tools which emits a subset of Java FX script may still continue to be supported by Oracle.
Roger: So what other pieces are missing here? If you have the composer, you have the, you know, either in NetBeans or in Eclipse or IntelliJ, what else is missing here if someone wanted to use the scripting tools for Java FX?
Stephen: Once Java FX 2.0 gets released out into the wild, we're going to try to follow it up very closely with a Visage release, which will give you Java FX script capabilities, including plug-ins for ID's that people need to edit code. So it should put people back at priority if they want to code Java FX script fairly quickly after the Java FX 2.0 release.
Roger: So I guess one of the questions I would ask you is why do it?
Stephen: I've been trying different JBM languages to see what you can do on top of the Java APIs. If you look at the equivalent Java FX script code versus the Java code you'd have to write with the new APIs, you're easily talking about twice as much code on the Java side for what you have to express in Java FX script. It's not just the amount of typing or the amount of code you have to write. I mean, at a certain level Java code programmers accept that it's going to be more verbose to do things than they would in alternative languages. It's also about maintainability and ability to read and have the code model what the UI's going to look like. And I think Java FX script was very innovative in that Java FX was the only platform of its type which actually created a first class, touring complete, generic language to solve the UI problem. Where, if you look at what everybody else does in the fields, Flex SDK as an example, the Android libraries as an example, Apache Pivot is another example, they all have XML modeling languages to accomplish the same thing.

They recognize that the imperative code is not a good match for UI design, and they've created XML dialects to express user interfaces more succinctly and elegantly, and in my opinion XML falls very short in terms of what UI designers and developers need for a language to express UI's.

Roger: Where can people find the project?
Stephen: So the Visage project is on Google Code. We also have a short URL for it, so We have mailing lists. We have a mercurial code repository where people can contribute changes to, and we're a very open project. If folks want to contribute as little or as much time as they have, we are willing.
Roger: And the license for it?
Stephen: The compiler itself is under the GPL license. That's what it was originally licensed with Oracle. It shouldn't be a problem for people using it, because the compiled results don't have to adhere to the same license. For libraries we're building on top of it. We're keeping those on a BSD license to keep it as open as possible.
Roger: And as portable as possible as well?
Stephen: Yes.
Roger: Stephen, thank you so much for the time. I appreciate you taking a little time out of the day here and being able to do this podcast with us.
Stephen: Thank you very much.
Roger: So let's turn our attention now to the what's cool section of the podcast. And so, Alexis, what's cool?
Alexis: So this one is going to be short, because I don't have a lot of details, but Julien Ponge is a GlassFish community member. He's been writing an installer for GlassFish. He's the creator of the IzPack project, and he tweeted last week that he had GlassFish running on something that consumed only two watts, and that's a [indecipherable 00:43] board actually. So I thought that was pretty cool. I need to talk to him about the details of what he's doing, but that's a recent version of GlassFish running on Java ACM bed that I know for sure.
Roger: Well, Alexis, the thing I think is cool this week is the Java Duchesses, Clara Ko and Regina Ten Bruggencate have been elected to the Java Champions, so congratulations ladies. Great program that you have running with the Java Duchesses. If you want to hear more about that program you can go back to Java Spotlight Podcast 10 and listen to it there. [music]
Roger: Thanks for listening to the 21st edition of the Java Spotlight Podcast. I'm Roger Brinkley.
Alexis: And I'm Alexis Moussine-Pouchkine.
Roger: And send your feedback to

Transcript by CastingWords