Java Spotlight 16

[intro music]
Roger Brinkley: Welcome to the 16th edition of the Java Spotlight Podcast. I'm Roger Brinkley.
Terrence Barr: And I'm Terrence Barr.
Roger: And in this edition of the podcast, we'll do a featured interview with Rich Bair on the early access release of JavaFX. So, in the news. The OpenJDK community bylaws and governing board were proposed this last week. There's a lot of details that you can look at, at Mark Reinhold's blog.
Terrence: People need to understand, this is a draft that's being proposed. And the details are currently in discussion, so expect that to evolve over the next couple weeks.
Roger: So, Alexis, we've got a GlassFish 3.1 candidate that's coming out, a release candidate.
Alexis Moussine-Pouchkine: Yes, this is the second one. We've done one. This was the first release candidate. This was last week. A second one is out. So we have another 35 bugs that we've fixed in this one, so we're as close as we've ever been to releasing GlassFish 3.1. And I'm really excited because this is really delivering on the promise of the road map we put out almost a year ago on what we would do with GlassFish, what Oracle would do with GlassFish, which was certainly not to keep it as a simple, lesser-featured reference implementation, but rather a fully-featured.

And that's really what we're doing in GlassFish 3.1 with the centralized admin and full clustering, and a few other things, some of which we haven't touched upon yet. Look out for the release of 3.1, hopefully before the end of this month. There you go, I've said it.

Roger: Let's turn, then, to the events section. And, as we said last week, we have a lot of events that are coming up in this month. The Oracle WebLogic Server and Java EE six OTN Virtual Developer Days, on the 10th, 17th, and 24th. Go to the show notes. You can see where to register there. I'm going to be in the Norway JUG on February 10th. And last week we made a mistake when we talked about the Vaadin meet-up. I said that it was going to be from Norway to Sweden; it's actually from Finland to Sweden. But if you're interested in that, we have a place to go in the show notes as well.

And then, Jfokus. Alexis and I and Arun will be at Jfokus. And Mobile World Congress is the 14th through the 16th in Barcelona. You can find Angela there as well. There's lots of events going on at Mobile World Congress. Take a look at our show notes. There are over 25 workshops that we will be offering at Mobile World Congress.

Then on the 15th, at 10:00 AM, our boss, actually, will be doing a "Java and Oracle, One Year Later" special TechCast, live event, with AJ Patel. And then on the 17th, I'll be at the Netherlands JUG meeting. And on the 18th, Alexis will be in St. Petersburg, along with a lot of other developers, for JavaDay.

Terrence: One more thing I'd like to add to the events section. Last week was a live webcast on the topic of Java in the smart grid, presented by our own Jacob Lehrbaum, and that was quite an interesting webinar. Jacob was talking not only about smart grids and the role that Java plays in there, but other areas as well, such as healthcare and others. And Jacob also gives a broad overview and some background of embedded Java and some of the different products that Oracle offers there.

So if you're interested in that space, definitely have a look at it. The webcast is now available on demand as a recording, and you can find the URL in the show notes.

Roger: So let's turn now for our featured interview. And a couple weeks ago had an opportunity to go out and talk with Rich Bair, who is the client architect for Java, about the JavaFX early access release. So let's go directly into that interview. So I'm here with Rich Bair, and we're going to talk about JavaFX early access release, which is occurring this week.
Richard Bair: We're really excited. We've got our first early access build put together and putting it into the hands of some of our partners. So, pretty excited about that.
Roger: Now, you guys are actually right on schedule with everything at this point. When we were at JavaOne and you and I talked, this was your goal. This was your target. Give us a little bit of a time line for where the target's going to go from here on out.
Richard: Exactly. At JavaOne, we talked about three different deliverable dates. The first one would be that our early access would be in the first quarter of this calendar year. And since we're releasing in January, we've definitely hit that milestone. Our beta will be in the second quarter of this year, and then we'll release JavaFX 2.0 in the third quarter of this year.
Roger: This is a real change. JavaFX 2.0 is different than 1.3. What's the big change between 2.0 and 1.3?
Richard: The biggest change is that in JavaFX 2.0 the emphasis is strongly on Java and, in particular, making sure that the platform is very amenable to Java developers. We've got over nine million of them -- by some counts, closer to 10 -- Java developers in the world, and we really want the platform to be something that's easy for them to get at. So that's the biggest change between 1.3 and 2.0. There's various other changes, in the APIs and so forth, as we're taking the opportunity to refine those, but the general structure of your JavaFX application is the same as it would have been before.

Like in JavaFX 2.0, we have binding that we expose in Java. And obviously, that was a big deal in the previous versions of JavaFX. We still have a scene graph. We still have scenes and stages and nodes and groups and all that sort of stuff.

Roger: So a lot of the controls and the components that we had in JavaFX 1.3, which we really didn't have in Swing or any other UI component, are still going to remain. They're just not necessarily within a scripting environment.
Richard: Right, exactly. By and large, the platform is a continuation. And 2.0 is a continuation of the 1.3 product line, except with various changes that we've made, for example, in event delivery and things like that. But the biggest difference is that all the APIs are available in Java.
Roger: What are some of the goals and directions that you're trying to achieve in this early access release?
Richard: One of the primary things that we wanted to do in the early access release was to get a build, early, into the hands of our partners, and there's a mechanism for being able to sign up to be a partner and get access to the early access builds. And so, unlike in previous releases of JavaFX where it was basically closed-developed until the end, where we turned it over and said, "OK, here you guys go, you can now go build stuff, " we wanted to get it into the hands of people sooner so that we could get feedback, not just on bugs but also on just API and what the development experience is like, is it something that works really well for people.

And we're doing our EA builds on a weekly basis. So basically every time we do an internal promotion, we hand that over to our partners so that they can take it from there. So the intention is to have a really tight turn-around cycle, from when they report a bug to when we address it to when it's into another build, so that they can take a look and see how they like that better.

Roger: When we're talking about an early access release in the January time period, we're not talking about just one release, we're talking about a series of weekly releases, then.
Richard: Yeah, definitely. So it'll be rolling from this first build, which is build 12, all the way up until when we get to beta in the second quarter. I don't know. There might be 15 or 20 such builds.
Roger: Are you planning on doing the same type of thing once you go into beta, to continue with some releases that way on a regular update?
Richard: We haven't really discussed the details of beta. What we do know about beta is that it will be open to anybody who's on the Oracle Technology Network. It's a completely open beta. Anybody will be able to get their hands on it and try it out. We haven't talked about how regular the builds will occur. That probably has more to do with how we decide to do quality checking on it. SQE might require more time to verify the builds than just once weekly.

But a lot of us have worked on open-source projects in the past, and one of the virtues of an open-source project is that that differential between when a bug is filed and when the new build can be available for somebody to test out is really, really short.

And so even though this entire product isn't open source, we will be open-sourcing the UI controls, for example, but the whole thing isn't open source yet. But we still want to get some of that benefit, so we just want to make sure we get builds out there.

Roger: So what are you expecting from the people that are actually doing the testing from the early access builds?
Richard: The biggest expectation that we have for them is that they will file bugs and issues. We want to know what their concerns are, not just bugs but also just "This API doesn't work the way that I wish it did," "I wish that I had this," or "Here's my use case, what I'm trying to achieve. What can you do?" And really, that's the biggest expectation we have for our users who are on EA is that they just try it out and give us feedback. For us, on our part, I guess what a customer can expect is that they will get timely feedback on their bugs and issues and features that they file. We might not fix them all immediately, but you're going to know what the priority for the bug or feature is and where it's going to line up.
Roger: Tell me about feature requests.
Richard: We are very interested in feature requests. Our main priority at this point is to focus on stability and getting the APIs that we have clear and useful. But what you can expect, as a customer, is that if you file a feature request that you will get clear feedback on it, in terms of whether we intend to address that in this release or in a follow-on release, and also to work with you setting the appropriate priority level for it and so forth. Obviously, we can't jump on every feature request without sacrificing stability or correctness in the platform, because there's only so many hours in the day, but we do owe it to customers to tell them when, actually, we will intend to fix them.
Roger: OK. What's in this release? What's not in this release?
Richard: This release will have pretty much all the features that we had in JavaFX 1.3, so whether it's full-screen mode or the number of UI controls and the things that they were capable of doing and so forth, animations and binding and so forth. So we're going to have the set of features that we supported before. Plus, we have some additional UI controls that will be going in. There's a number of additional APIs, such as media markers and low-latency audio, things like that, that are going into the media stack. The media stack itself has been rewritten and tested for stability. We've had it running internally; they had it running continuously for three or four days or something like that before they just killed the test.

We have the web view, which is one of the things that people have been waiting for forever. Essentially, it's an embedded web browser. You will have the ability to modify the DOM in the browser or attach listeners to it so you can get callbacks and handle it in Java and so forth. So there's some pretty good integration at that level.

There are a number of UI controls that we're still working on for it that'll probably make it into some follow-on release that are sort of targets of opportunity. Some of them that are going in now are things like the table view. That'll be there. Rich text, we're working on. It's officially listed as a target of opportunity, but we have some engineers who this is what they are doing each day, so we're hoping to make some good progress on that.

We also have 3D. So, in the current release, we've got 3D transforms, such as translating in the Z or rotating about a different axis. However, in a follow-up release, the one after 2.0, we will have 3D primitive shapes and more support for 3D animations and so forth.

Roger: Documentation, demos. You've got some new stuff in that area that you haven't ever had before.
Richard: Yeah. In previous releases, the Javadoc wasn't entirely there, and really, we were relying on book authors, for which we were very grateful, who did a lot of work for documentation. In this release, we're putting a lot of emphasis into having sample applications, what we call experiments, which are just sort of simple little applications but also blueprints. And even in the EA build, we have a nice set of sample applications, one of which is called Ensemble. And it's sort of a sampler, so it has a lot of different little samples inside it that show you how to do animations and transitions and how to use different controls and how to style your list view and things like that. And it also has built into it linking to the Javadoc, inside Ensemble itself, using the web view, basically, to display the Javadoc. And it's all cross-referenced and so forth.

So it's a nice little application that not only shows you how to build reasonably complex applications in JavaFX 2.0 -- even in the EA time line, it's a nice little application that shows that -- but it also has a lot of utility in giving you little code snippets and showing you how to actually build little bits and pieces.

In the EA build, the portions of JavaFX 2.0 that were fresh and brand-new, such as binding, have really pretty good documentation. But parts of it, like the scene graphing controls that were there before, still haven't been updated. So in the first EA builds, the best documentation you have, really, are the samples.

Roger: So, various deployments. You can deploy onto the desktop. What about applets?
Richard: Yeah. There's a couple different ways that you can deploy on desktop right now. We have the ability to do executable JARs. You can also run it from your IDE or from the command line, just like any other normal Java application, as well as through JNLP and so forth. Now in the EA, and in JavaFX 2.0, one of the big features that we have is our new hardware-accelerated graphics platform that we call Prism. And Prism runs without any support on Swing or EWT, which can really help out in our startup times and performance.

However that requires changes in the plugin to be able to do that because the normal Java plugin is AWT-based. So there's a lot of work going into Java seven plugin in order to allow you to have an AWT-less, or non-AWT, plugin implementation.

So that'll be going out with Java 7. But in the meantime, what that means is that until that's into proper circulation, we aren't able to run the full hardware-accelerated Prism inside of a browser. So at the time of EA, we're not going to be supporting running JavaFX in the browser. But by the time we get to beta, you'll be able to run JavaFX inside the browser.

Roger: With JDK 7, or with OpenJDK going out and the new JSRs going out, we've got a definition of what's going to be in 7, what's going to be in 8. Are there any other things that you're looking for coming in 7, the directions you're coming in, or even 8, that you think will benefit JavaFX?
Richard: Yeah. I think in 7, there's two things that we're really looking forward to. The first one is method handles, because even though lambdas are not in Java 7, method handles are, and it gives us a way to do a very fast reflection for some things that we wanted to do. Whereas in Java six we just have to rely on normal reflection, which is not as fast. Of course the applet support that's going into Java seven we're really looking forward to. In Java 8, the biggest thing is lambdas. And we've designed all of our APIs upfront so that they will fit into the current proposal really well. The current proposal from Brian Goetz and company is that if you have a single abstract method interface or class, that you would be able to use lambdas in place of that when you're actually coding things up.

So we've been very careful to make sure that all of our APIs where we expect people to want to pass in functions or closures, that it's just a single abstract method. We're looking towards that and trying to get that done well.

And the last thing is a new feature request. We've been talking to Brian Goetz and Mark Reinhold and those guys about potentially adding properties to the language. Because one of the biggest pain points that we have in Java versus what we have in JavaFX Script is that, in JavaFX Script, it was dead easy to create an observable property. In fact, you hardly didn't have any choice other than an observable property; it just sort of happened.

And it's one of the advantages that you have in C# and in other languages, and so we would really like to be able to get something like that into Java. I don't know if that's something that we can reasonably do in the Java eight time line or if it's in the Java nine time line, but we want to get it on the table and start moving forward on that.

Roger: Let's talk about platforms, underlying platforms that this can run on.
Richard: Right. So the official platform that we're supporting for EA is Windows. I can testify it also runs on Mac. I guess the only requirement we have on Mac is that it's 10.6, and it could be 32 or 64-bit.
Roger: So one last thing. You made a little bit of a mention about open source, about the UI controls. So what's the progress, what's the direction in that area?
Richard: So we have a group of people who are actively working through the plans on open-sourcing UI controls, whether it shows up in Kenai or OpenJDK or in some other venue. And the plan is to have that worked out before we get to the end of this release.
Roger: Excellent. So we will come back and see you. You have beta planned for Q2. So we'll come back when you get ready to do a beta release, and we'll talk more about what's in then.
Richard: All right. Thank you very much.
Terrence: I'm impressed that the JavaFX project and the team is moving ahead as quickly as they are. You have to keep in mind that, essentially, the JavaFX strategy and the JavaFX product and technology was essentially rebooted nine months ago, from the scripting language to now a set of APIs and modules that integrate with core Java. And I think they've made a lot of really good progress. It looks like it's coming along very well. In fact, Adam Bien put a brief blog post out on his blog, where he talks about the first smoke test that he did with the JavaFX 2.0 beta that he's involved with. And he says that he's pretty impressed so far, that it's much better than what he expected.

And so I'm really looking forward to seeing how JavaFX 2.0 evolves and how they improve performance, features, and the feedback that the community gives.

Roger: If you are a JavaFX partner, a Java champion, or a JUG, Java Users Group, you can get access to this early release and you can participate in this environment. Now, access and participating is the key, because they really want the feedback and the input that's coming in here. If that's not what you're really interested in, wait till the beta comes out at a later time frame here. But if you are interested in jumping in and trying some stuff, you've tried FX before or you're looking at seeing the changes in the client, great opportunity. Go to the show notes, we'll give you instructions on how you can look at joining the early access.

So, let's turn to the "What's Cool" section. Terrence?

Terrence: I finally have some cycles to play with the new BeagleBoard-xM that I got a couple weeks ago, actually. It's been sitting on my desk. I've been able to install Angstrom Linux and installing Java today, and going to see if I can put together some demos for the Embedded World show in three weeks, in Nuremberg, where I'm going and talking as well.
Richard: And on the "What's Cool" side on my part, I actually went back and started doing some coding again, working for the Jfokus demos that I'm doing. And I actually started having coding dreams, and they turned out good for a change. They weren't nightmares; they were good dreams. So we'll see if those dreams turn into reality when I get to Jfokus next week. It was kind of fun to go back to the old coding dreams again. [music]
Roger: Thanks for listening to the 16th edition of the Java Spotlight Podcast. I'm Roger Brinkley.
Terrence: And I'm Terrence Barr.
Roger: And send your feedback to

Transcript by CastingWords