Java Spotlight 6

[intro music]

Roger Brinkley: Welcome to the sixth 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 news segment, we'll do a feature interview with Michael Kolling and Ian Utting from the BlueJ group, and we'll finish up with a "What's Cool" section. So, in the news this week, on the Java EE side, we've got a draft for version seven.

Alexi Moussine-Pouchkine: Right. Exactly. This is actually news from Devoxx. So we're not exactly talking about Java EE seven just yet. We're not even talking about specific JSRs being filed just yet. We're talking about a JSRs for JPA 2.1 and JAX-RS 2.0. So these were discussed at Devoxx a couple weeks back, and you can find a draft for JAX-RS 2.0, with things like the client API, async support, better alignment with the CDI @inject specification, at a URL that we have in the show notes. JPA 2.1 has been discussed by Linda DeMichiel, and is all about more standardization, as you can imagine, but also greater flexibility, with the ability to define dynamically persistent units, more contact synchronization on those persistence, and maybe an interesting feature that is something where you have a mapping between a JPQL query and criteria queries, which were introduced as part of JPA 2.0.

So those JSRs should be filed in December, and the expert group should be formed early 2011. So that's two things that are part of Java EE 7. Then there's more showing up, like JSF 2.2 JMS, which hasn't seen an update in a long time, and more, obviously, but these are the early comers.

Roger: This is primarily the meeting before the meeting, so to speak, an opportunity to take a look at what the thoughts are before we actually start the JSRs, then.

Alexi: Exactly. So JAX-RS has been, for the longest time, very transparent about how they do the work of standardizing the API. It's great to see JPA and others being this transparent.

Roger: So, what have we got going over in the Aquarium area?

Alexi: Well, actually, we have a number of things. We highlighted, just recently, a blog by Siva on OSGi dynamic services being used within GlassFish. And the interesting thing about this is the type safety in which you can inject those dynamic services, using a dedicated annotation. So there is the whole blog and details on how this works and a demo, and there's even a screencast for this. And speaking of screencasts, we actually have a number of screencasts demoing the upcoming GlassFish 3.1 clustering feature. We actually have four screencasts showing this with a load balancer, some others without; some showing everything from the very beginning, including the install, others just focusing on the admin console. So there's yet another entry showing all those screencasts.

And the final thing on the Aquarium, the Aquarium's actually five years old. And the guy behind most of the Aquarium is Eduardo Pelegri. He certainly deserves a great kudos for this. And there's a blog showing why this was started, how effective it was, and, to some extent, how much work it is.

Roger: Yeah, indeed, it's a lot of work. If you take a look, you guys are typically, on, one of the most popular blogs, hitting upwards of around 14,000 hits per day on an average basis. You're just blowing away everybody else in that area. So kudos to the Aquarium and the work that they've done in pushing forward the EE space, and GlassFish in particular, there. So, lots of good stuff. How's the migration going for you guys, as far as moving over to the Kenai infrastructure and the movement there?

Alexi: So, for the most part, we're almost there. The Subversion repository is there. The issue tracker has been migrated. So we're using JIRA, and we're quite happy with that. And all the issue IDs have been preserved, so any permalink you have to a given issue with all the history for that has been preserved, so that's all good. The website looks, I'd say, more than decent, but we still have work to do on that part. And mailing lists are almost there as well. So, quite happy at this point.

Roger: So, Terrence, we've got some news here, on the ME side. Java SE performance leaving Android in the dust, huh?

Terrence: Right. Yeah, the Java SE Embedded team did some benchmarking recently with the new Java SE Embedded Java 6u21 release that we spoke about previously. That release has seen a lot of performance improvements, tweaking, optimizations, and also multi-core support, specially optimized for embedded platforms. And so there was some benchmarking done because we wanted to see how that release performs versus Android 2.2, so the latest Android release, on the identical hardware platform. So a Beagle Board was chosen, which is a Texas Instruments ARM Cortex process with 600 megahertz and 256 megabytes of RAM, and an NVIDIA Tegra two board, which is a Cortex A9 processor with a gigahertz and a gigabyte of RAM.

Java SE Embedded really comes out strong on these three benchmarks that we used initially -- CaffeineMark, SciMark, and kBenchmark, which is an internal Sun-Oracle benchmark -- basically beating out Android two to three X, or two to almost three-and-a-half X, on the benchmarks. And so you can really see that Java SE Embedded is a very robust and mature platform that is optimized for this particular space.

What's also interesting is that, as I mentioned before, Java SE Embedded now has multi-core support, working in a full-featured manner. And so these benchmarks that we used initially don't even test parallelization of algorithms. So we expect the next round of benchmarks that we're doing to edge out Android even further because Android 2.2 doesn't have working multi-core support at this point.

Roger: OK. So what have we got going? Nokia's kind of doing something strange here. I've got a Nokia 810. I think you have an 800 or something along those lines. What's happening over there in that space with the open-source work that was going on there?

Terrence: That's probably something a lot of people know by now, that the Symbian Foundation is basically transitioning to a licensing body. So they are shutting down their day-to-day operations by the end of the year, and that essentially means, for Symbian the open-source project, that it is shutting down as well. So the sources and the binaries for the latest source code will be made available on request, with various delivery mechanisms like DVDs. But for all intents and purposes, Symbian open source, as a project, doesn't exist anymore.

I'm sure there will be lots of analysis on why that occurred and the steps Symbian might have taken to make sure that the Symbian OS continues and flourishes as an open-source project, but I think it's just an interesting sort of note on a very big open-source project that got a lot of attention at the time, and how it ended up going.

Roger: Yeah, it's kind of a sad situation there. I wish that, since we're personally involved with some of the pieces there. Dalibor, have you got anything for this week?

Dalibor Topic: Well, I actually have for one new blogger for you. In fact, Thomas Nelson, from the Project Management Team at the Java Betham group has started blogging. And he introduced himself in one post, and then started off strong, describing some upcoming changes in the JDK build system. So, we are actually improving our internal tools we have, that actually will be used within building Hotspot. Those tools are basically a database of precompiled headers, that's been used for years and years and years. And they're taking this stuff away to make it easier to actually work on Hotspot in modern IDEs, and going back to standard SQL [inaudible 8:51] mechanisms, there.

And this has been one change that has been long coming, it's actually, now, been pushing to open JDK and JDK seven repositories, to some good feedback, I think, on the main list and all that. But it's tough on Carlson and his colleagues, so it's been, I think, the first push from the J rocket side of the house, into the hotspot repository, and it's a fairly huge patch, and one patch will actually makes hacking on Hotspot much easier thing in, for the future, for new developers, because you don't have to wrap the head around some Hotspot specific tool that's been compiled along with the code.

What else has been cool is, of course, Brian Guts has posted his thoughts on the JSR for Project Lando. Titled, "To Multicore and Beyond", and you can find more about that in the show notes, as well.

Roger: So, let's turn our attention to the upcoming events that have coming on, and OTN which is the Oracle Technology Network. Developer Days Dalibor is going to be in Hamburg, so you're going to have to really travel a long distance for that one, on the 2nd of December. We've also got a couple of other events, though, also in Germany. In Munich on the 30th, Dusseldorf on the first, so, are you going to be venturing out on those, as well?

Dalibor: No, we'll have Jurgen Menge, from Germany, who'll be taking care of these two events, along with Peter Duschkenov, from Germany, as well, who will be present at all three events, and, actually, giving the hands on labs around GlassFish and these technologies. So, it's going to be, I think, a very fun and exciting event to participate in. To learn a bit about GlassFish first hand from trying out new technologies, and hands on labs. As well as a bit of strategy and in roadmap talk.

Roger: So, quick poll among everybody here, is it snowing where you're at?

Terrence: Yes, it is.

Dalibor: It's cold and miserable.

Roger: OK, it's snowing here in Colorado as well. So, I think what we should all do is just get on a plane to go to Brazil this week. And we'll go down there, and we'll see everybody. Actually, they're setting up a JUG meeting for us, with the SoJava JUG, I think that's on the 4th of December. And that'll be a Saturday afternoon, so, if you're in the, if you're listening to this, and you're with SoJava, take a look a that and see. We're going to be doing a Java Clarity Message, give you an idea of what's happening in the FC space, and the ME space, and if we can find somebody that's going to be there in time, we'll do something on the EE space, as well.

But then, we have Java One, which will be the next week, on, I believe that's the 6th through the 9th. And then, we'll be going over to China, which means we're going to go back to our freezerville, as well, so.

Let's turn our attention, now, to the feature interview of the week, and during Java One, I had an opportunity to sit down with Michael Kolling and Ian Utting, who are from BlueJ. We've interviewed them once or twice before, when we were doing the mobile and embedded podcast. And, it's a good opportunity to come back and refresh, see where they are, and how things are moving. so, let's go directly into that interview.

So, I'm sitting outside here, with Ian Utting and Michael Kolling. They're with the Greenfoot, and the BlueJ projects. And the last time we talked was at 6CSC, in Chattanooga. There's been a few changes since then, so won't you tell me about those changes?

Michael Kolling: Yeah, we have had changes, actually, in both those systems, in BlueJ and in Greenfoot. In BlueJ, those changes are mostly improvements to the existing system, so, we have made major improvements in, especially, the editor of the system. We have added a number of new functions there, we have a feature called Scope Highlighting, for example, which, in the source code of the editor, highlights much more clearly, with background coloring, the scopes and the source code.

And that came out of experience we had with frequency of error messages, and errors that students make, and it is clear that, understanding scope, and getting, sort of, the records out of whack, so to get your scope out of order is one of the most frequent problems that beginning programmers have.

And in Greenfoot, there's still much faster development going on, Greenfoot is the youngest system, and so, we are doing heavy development work in Greenfoot, as well. It is aimed at younger programmers, but it is also a newer system in the sense that, in BlueJ, actually, it's very well established and very mature, now.

It's been around for, almost 11 years. Greenfoot has been released for the first time four years ago, and so it's in a younger stage of its life cycle. So, there's still more development work going on in Greenfoot at the moment.

Ian Utting: We add features very, very carefully, and very, very slowly. 'Cause every feature we add takes up mindshare in the student audience. And that's a valued resource. We're always doing presentational and interface improvements, but, the functionality we're adding is all aimed at making the students' life easier. And lowering the barriers to entry to Java programming.

Michael: That's actually the prime design challenge, in these systems, if you look at the design of Greenfoot, for example. To tread the very fine line between maintaining simplicity of the system, and having sophisticated functionality that people want. There's always the tension that people want more functions in the system, and that we want to keep it a very simple system that you can learn to use within half an hour. So, we have added, for example, in the, for the next release that will come out very shortly, better support for sound, because that's an area where we had lots of requests from users. but we have also a lot of requests that we are not going to integrate, because they would just compromise the simplicity of the system.

That is, probably, the most interesting design challenge, is to find that line, where that line lies, between features and simplicity, where you have to make the tradeoff. And for us, that's where we see most of our work, is to actually, very carefully, analyze what the features is that actually help the educators teach.

Ian: That's why, when we go into sessions about adding things to Java 7, and Java 8, we cry. Because we have a very different definition of simplicity, from professional developers. Professional developers want more features that match what they want to do. We need less features, because whenever you add a feature to Java, we have to teach it as well as everything we've already taught. And so, simplicity for professional developers is complex, you see, for beginners.

Roger: Yes, but if we can do something, to where something is more readable, more easily understood, then that would come back and benefit you guys to some extent, would it not?

Ian: It's another feature. So, Lambda is explained and will be explained, in terms of the underlying Java that it replaces. You always end up having to see both of those. As you reintegrate Lambda into the full libraries, they'll become visible right at the start, and we'll have to do both. Same with generics, and, you, we used to, with class objects. Objects, is the class object, and that includes generics. So, we can't avoid them, when you want to start talking about objects, class objects, you have to explain what that means, what that question mark means, there.

Michael: It comes down to actually a different interpretation of the word 'simplicity'. Generally everyone agrees that we want simplicity, but what people mean by that differs a lot from their viewpoint. For professional developers, for simplicity you want actually a wide variety of language constructs so that for any given problem, you have a construct that lets you express your problem in an elegant and readable way. Having closures in the language makes it simpler to express certain tasks. For learners it is a completely different thing. For learners, fewer language constructs is simplicity. There's a tension here between maintaining the language alive for professional programmers, for which you have to evolve the language, and maintaining it a viable teaching language, for which you want a very small and simple language.

That is where we see our role as environment designers, that we present the language in a way that it is viable for teaching, by hiding away a lot of the accidental complexity that the language and the environment introduces. And exposing just the major concepts without sub-setting the language or without actually hiding anything of the language. But in terms of presentation, show it in a way that it becomes manageable for beginners.

Terrence: You're objective in BlueJ is objects first, versus the language itself.

Ian: Oh, yeah. That was the primary motivation for BlueJ from the beginning. Michael developed BlueJ out of his PHD project in Australia. But at the same time we in Kent were adopting objects first without BlueJ, as an approach to teaching Java. So that was really where the fit came from in the first place.

Michael: Yeah. So the distinction between those two systems is not the object first idea. That is really prevalent in both of the systems, very much so. BlueJ is a generic IDE. It is geared towards students and towards learning, but it is generic in the sense that you can write any Java application with it. It is really not restricted in the kind of application you're writing. It gives you an objects first interface where you can interactively create objects and experiment with your objects, Greenfoot, the differentiator is Greenfoot is really a specialized IDE and framework for a subclass of applications.

And they are animated graphics applications. The reason is that Greenfoot is designed primarily for High School. And there the approach to programming has to be entirely different than at a university level. At a university you have a captured audience. They have all elected to be there. It's a selective audience. They all have, in some sense, an interest in programming.

And you have a lot more time. You have them sitting there for a few years and you can teach them things. At school level that is not true at all. Teachers go into the school class and say to 15 year olds, "Today we are going to do programming."

And for 80 percent of the kids, the brain switches off immediately. They really don't want to know. So the first thing you have to do at school level is not to teach them something, but to get them interested. So the design of Greenfoot is very different, in the sense that it's very more interactive, very more graphical.

It's so you have animated graphical characters on your screen immediately in your first 10 minutes. But it is also, at the same time, designed from a particular point of view that we teach object-oriented concepts as an objects first environment.

So the first thing they do is create objects and interact with them. But in a more graphical way, so it's not such a generalized IDE, it's a more specialized one that is designed to create motivation for younger students.

Usually we say 14 years upwards. We have also seen it in classes of 13 year olds working quite well. They were bright kids. But somewhere there, about 13, 14, years is the cut off point. Below that, the syntax of Java becomes unmanageable for many of the kids. The concepts of Greenfoot are actually reasonably easy to understand. I've tried it with my daughter when she was 10.

All the abstractions, the concepts, were not hard at all. She could master it. She could not master the syntax of Java on her own. That worked only if I sat there with her, helping her over the compilers. But somewhere at 13, 14, years of age is when it really starts to work and once they're 15 or so, that hits the sweet spot. And then they're really off.

Ian: And they're all environments which are pitched at younger kids. [inaudible 20:30] I was talking to Randy Smith, from the labs, the other day, about a surreal environment we remembered called Toon Talk, which is all about birds flying in and out of open windows.

Roger: So do you guys still do the tomato contest?

Michael: Well we were thinking maybe of creating a new version of it. We've done it twice now in two different variations. It was called Greeps and the Greeps were collecting tomatoes. For one of the upcoming sexy conferences, we may revive something. We haven't quite decided yet.

Ian: It's supposed to be really difficult to design games which are playable and we've sort of lucked in twice. Both versions of Greeps have really been very successful as competitions and we're sort of worried about pushing our luck.

Roger: When we were at 6COC, you guys had a gigantic line of people coming back, trying to get the high score and trying to figure out what's the right algorithm?

Michael: So that was a contest running Greenfoot. That's actually a good example where it shows how Greenfoot is really complimentary to systems such as Ellis or Scratch where... We just talked about the lower edge boundary, where with Greenfoot we can't go as low down as Scratch can or Ellis can where you can... In those other systems you can start with eight or 10 year olds. We can't do that. We have to wait a little longer, but on the other hand, what we win by that is that Greenfoot scales up really well. The fact that we're using Java is, on one hand, a limitation on the lower age range, but it is a huge win on the upside.

Greenfoot scales up really well. Because it runs on the standard Java virtual machine with a standard Java compiler, you can do anything you like and you can actually create reasonably complex scenarios as well. So you can easily create Greenfoot examples like this that are interesting for adults as well.

It's not just a toy in the sense that, you don't run into these brick walls that you run with custom designed teaching languages. Since it is standard Java, anything you can do in Java, you can do in Greenfoot as well.

Ian: Some of our colleagues at other universities use Greenfoot as a platform for simulations in upper level courses.

Roger: We've actually shown a demo with the track bots where they're doing swarming technology so it's actually an environment where you can do some type of simulations with it as well. And provide a simulating environment so it works out quite well.

Ian: It just gives you simple 2D simulations for free and you can concentrate on the algorithm.

Michael: For us, actually, it's sometimes a lucky side effect. When we designed Greenfoot, the first target group we had in mind was young beginning programmers. And it turns out as a lucky side effect, that actually at the advanced level, it has this second reuse. Where, as Ian was just saying, colleagues have of ours used it, for example, in artificial intelligence agents programming course. They write very sophisticated algorithms. They just use Greenfoot because they get the graphics for free. And so this environment that essentially let's you concentrate on the logic and does the graphics for you actually has different uses at different levels. That was almost unintended. We hadn't really considered that initially in the design. That evolved fairly quickly then, once it was on the market.

Roger: So, future releases, where are you headed?

Michael: The most immediate one is, for Greenfoot, we have a Greenfoot release planned very soon now, in the next few weeks -- probably two or three weeks -- that we are working on right now. We are in final testing at the moment with fairly major changes so if people are interested in Greenfoot, they should keep an eye out for a release very soon that will bring some really interesting improvements. On the BlueJ side, we just had a major release about a month ago, a couple of months ago. So they'll be looking more at incremental releases at the moment for performance improvements. But for Greenfoot there will be new stuff coming out very soon now with sound processing. We have classes for sound processing and sound recorder built in.

We have some new functions about saving the state of the world, those people who have worked with Greenfoot will understand what that means. For the other ones, have a look, there's lots of interesting new stuff coming out.

Roger: Thanks, guys! Enjoyed meeting with you again!

Michael: Well, thanks very much for having us.

Ian: Thanks a lot, Roger.

Terrence: Yeah, Roger, as you mentioned we've spoken to the BlueJ and Greenfoot guys a couple of times before. And I can really just encourage people, if you're not familiar with those projects, to definitely have a look at them. They're very well done, they have a lot of attraction in the education community. In fact, my son is approaching 10 now and so I'm going to be introducing him to Greenfoot really soon. It's just a really neat way of getting people to think about algorithms and programs and the way to structure solutions.

In fact, I can remember and maybe this is a little anecdote that is interesting to tell. When I was in my early high school years I really had some difficulties with school and thinking methodically and answering questions on tests and exams.

And at the time I got this, one of the very first personal computers, a Commodore Vic20, I don't know if people still know them. And so I got that for my birthday and I think I was like 13 or 14 or something. And I started programming in Basic, real simple at the time but it forced me to think methodically, to think logically.

Every mistake that you make is immediately highlighted by the interpreter, flashes and inverse on the screen. And to me that was just a Godsend because I realized I started to learn to think in a structured manner.

And Greenfoot and BlueJ do the same but now on a much more advanced and more graphical way obviously.

Roger: Yeah, Terrence, I think you have to watch out! You may go to the Munich Computer Museum and find that your Commodore is inside there some place. But one thing to mention is that Greenfoot did win the 2010 Premier Award, as we mentioned last week. So, this is really an excellent product. If you haven't had a chance to use it, this is really good if you're working with a high school age group, it's excellent. And then of course, Greenfoot is a tool which is great for the younger kids as well.

Terrence: In fact, I have another thing to mention, which, just sort of is testament on how widespread Greenfoot and BlueJ are. This town I live in here, Freiberg, is not very big and we have a high school teacher, a math and physics teacher who lives next door as our neighbor. And I was chatting with him on the street one of the past weeks and he knows I work in the Java space and Oracle and he goes, "Oh I started using BlueJ for my computer science classes at school." And I go, like, "Oh, that's great because we just interviewed the guys!" And it's just really a funny coincidence.

Roger: So let's turn now to the "What's Cool" section and Alexis commenting on the Mac.

Alexis Moussine-Pouchkine: Right, so last week I was actually talking about Coin and how the latest beta release of that, being 7.0, would enable you to play with those new language constructs. Well, now you can do the same on the Mac and the way I did this is, is leverage the work of Henri Gomez and [inaudible 27:54] who provided not only continues builds for open JDK on the Mac, but also package format and DMG images so that it's really trivial for you to install the latest updates of open JDK on your Mac. And do as I did which is have NetBeans run on the current Mac Java six JBM but use JDK7 as a binary source format for the code that you're writing. So everything I was doing last week and I've been to Virtual Box Image, I can now do natively on my Mac, so I'm more than happy. This is cool.

Roger: So, Dalibor, let me guess. Jobs, jobs, jobs.

Dalibor: [laughs] Yes! First of all, I'm really looking forward to showing off that NetBeans on JDK7 on the Mac, the OTM developer day in Hamburg because it's going to be my demo of course, the Coin features. But, yes! Continuing our regular series I have. One interesting new open position which is at Sun Labs in Germany. This one is actually quite interesting because it's about being part of a research group at Sun Labs, working in the area of photo machine research and development.

So for example, that's research in the areas of dynamic compilation or garbage collection profile and performance and virtualization. And of course as usual, if you want to see the full job description, go to the link in the show notes and click through.

The other thing is something that I've been sort of saving up for my winter holidays basically. I came across this game called MindCraft. I'm not sure if any of you have heard about this. So MindCraft is a weird kind of game. It's written in Java of course, so it's Cross platform and it sort of won the world of independent gaming over by storm.

It came out, I think about last year and it's a bit of a special game design. It's like a sandbox video game where you can construct a whole world out in 3D. And basically you can craft, so you can basically take stuff from the game, collect it and craft it to something else. You can basically build up things with this.

Whether that's your fortresses, whether that's buildings or something like that, you can do all kinds of stuff. And there's all kinds of materials that you can collect and put into action. And it's all 3D, it's a sort of vague 90's 3D and it's crazy fun apparently.

It's pretty cool because it has around 600,000, I think, paying users now who purchased the game for about 10 years, I think. And it's got over two million registered users who actually have registered for an account to play the game. It's all in Java, it works across Max, Windows, Linux and all that.

And it's pretty cool because you basically can, on one hand, play Lego, effectively, in this big world. But at night when the zombies come out, you sort of have to befriend yourself and protect yourself and you can explore the world and mine around it to build your own stuff.

And it's got a really huge community of players and wiki's and all kinds of stuff. And great video's from YouTube, by the way of people playing this game and creating 16-bit computers in it or sheep-launching devices and all kinds of fun stuff. It's supposed to be very addictive.

Roger: Well, on my side then, I think the "What's Cool" part is ... it's kind of "What's Cool" and kind of what's sad. But as we mentioned it earlier, Eduardo Peligree, who was a key person that was doing some development in GlassFishes is going to be moving on. And it's with a little bit of sadness and also with a little bit of joy that one of our colleagues ... Eduardo and I actually did Java Help years ago, back in the 1990's. And we've had a long relationship in and out. And we wish him the best as he moves forward. So, it's kind of cool that an opportunity's come up for him and he's got to take advantage of it and we're excited for him as well.


Roger: Thanks for listening to the sixth edition of the Java Spotlight podcast. I'm Roger Brinkley.

Terrence: And I'm Terrence Barr.

Roger: You can send your feedback to

Transcript by CastingWords