“Legacy is the dirtiest word in the Java world”

Screen Shot 2014-10-09 at 12.51.46 Fresh from the JavaOne 2014 Community Keynote Voxxed caught up with Johan Vos, who this year was the recipient of a Duke’s Choice Award in recognition for his work on  JavaFXPorts – specifically the port of JavaFX to Android – with social networking solutions people LodgOn. In this interview, we compare notes on this year’s event, the rise of Java on mobile, and why it’s been so quiet on the JVM front lately. 

What’s been the most interesting aspect of JavaOne for you this year?

This year was really the year of the community I think, because last year, Oracle delivered Java EE 7, and the conference was all about that, but this year they delivered Java 8 – and that was a couple of months ago now. Now, Java EE 8 is still a way from being complete, Java SE 9 we more or less know it’s going to be there but…this year it was really the community that could show what they have done with Java EE 7 and Java SE 8.

This was a big opportunity, and also why I think our work on JavaFX on mobile…it was this year we had to do it, because last year they were working hard on JavaFX, and this year we could connect the missing piece. I think it’s not only this in particular. I’ve seen so many initiatives from communities, from companies, outside Oracle. Oracle is doing a great job of maintaining everything of course, but it’s really more than just Oracle here at JavaOne.

Absolutely – I think it’s been really interesting, going back to mobile, it really feels like Oracle… and elsewhere in the industry – for example you’ve got RedHat with the FeedHenry acquisition – mobile is the next step for everyone, and everyone has converged onto the space around the same time. And there’s no de-facto technology everyone is using – some people are Swing, some people are JavaFX, and there’s a lot of very different approaches.

Yeah, and I think that’s OK. I mean, it’s like the question, is Java better than JavaScript? Or is PHP better the JavaScript? It really depends on the use case and on the type of developer. I think JavaFX is a great language for creating user interfaces. One of the biggest advantages is that it’s a pretty new language. For example, Android is a relatively old system that started on low resource devices with only one core, and JavaFX started with the idea of multiple cores, and with a graphical processing unit. It’s a very modern language, so I don’t agree that JavaFX will be too heavy for mobile devices – it’s working on my phone, it’s working on even older Android systems – it works perfectly there. It is the Java on the client API. So if you want to stay cross platform, stick with the API, then JavaFX is part of Java 8.

On to your talks this conference – can you outline what you’ve  been speaking about this week for our readers?

I had two talks that were submitted and accepted. I am very happy about this, and also very happy that I did not submit six talks, because it’s quite an exhaustive process. My first talk was about DataFX, which is about bringing enterprise functionality inside JavaFX, and connecting JavaFX applications with enterprise backends. And the second talk was on JavaFX on mobile, Android in particular.

I think the combination of these two talks is actually my core message: Java works end to end. It works on mobile devices, and you can connect it to server side components. It’s not isolated JavaFX mobile development that we’re doing, and it’s not just APIs for connecting to the enterprise. It’s the whole chain, from the mobile device, to the large enterprise servers.

I guess with Java 8 the convergence is so much greater than it was before, all this has become so much easier, and it’s only going to get better in this space.

Yes – it is much, much easier now. It is possible now, and it will become even easier, as long as we try to keep the JavaEE spec and the Java SE spec aligned – that’s going to be important. At this moment there’s one Java that’s being used by Java developers. I’m not saying that every Java developer that’s writing backend software should start working on mobile devices, but the same language can be used.

Some are still working on Java 6 and beyond right, so that could be a real big push for some people…

Yeah, well legacy is the dirtiest word in the Java world I think. Fortunately, there are still many EE deployments on Java 6, and upgrading to new versions is becoming better and better now. But if you’re still stuck with Java EE 4 for example, then it becomes much harder to operate EE 7.

And it’s probably a big jump to go from something like Java 4 to 8, where you’ve got dynamic language concepts, lambdas, and all those things.

Yes, and I think that’s now what people want to use, no that they’ve seen how easy programming becomes with lambdas, I feel sorry for some of them who get home now and have to work with Java EE 5, that does not work with Java EE 8, so they are stuck with Java 6, and they should push their management and hope that they can upgrade as soon as possible.

There seems to be less JVM stuff going on this year – why do you think this is?

Yeah – I don’t have numbers, but it seems indeed to me that there’s a bit less interest in these JVM languages. I don’t know though – maybe the program committee decided that there weren’t enough good proposals, but in general I think you’re right. In Java 8,  and the lambdas, Java answered many of the questions, and many developers who left Java to go into alternative languages who we were still on the Java platform, are now back in the Java language.

And that’s what you see if you go to Google trends – you see an uptick of Java starting from April, and that’s when Java 8 was announced. So I think Java 8 was the answer to developer’s needs, and it was not way too late, so the developers could still go back to Java. And after all, both of those languages were sitting on the Java platform, so it’s easy to go back.

I think it’s very healthy if, for example you look at what happened with Spring and Java EE. J2EE 1.2 was not the most user friendly specification, and Spring was actually filling a gap because they were offering server side functionality that wasn’t part of the Java standard. Many people were using Spring, and the Java EE community learnt from that, and Java EE 7 is now so user friendly that we see a lot of migrations from Spring back to Java EE. And maybe this is happening as well with alternative languages. There’s nothing wrong with going off and searching for the Holy Grail, then coming back home again.

In today’s keynote we finally got to hear in full about the plans for Java 9, Java 10, and beyond. What are your thoughts on what we heard?

It wasn’t surprising – and that’s actually a good thing. I think everyone wants value types, for example, and having less overheads. I think what Mark and Brian were discussing is what’s been living in the Java community. They are very careful not to commit on a date – so when Mark Reinhold asked Brian Goetz when it will be ready, Brian answered, “When it is ready.”

I think what we saw with Java 7 was that, initially Jigsaw and lambdas were scheduled, but then were postponed to 8, and Jigsaw was too late for the train, so it’s scheduled for Java 9. Oracle never makes commitments about roadmaps, but I think it’s pretty clear now that Jigsaw will make it into Java 9, and that the value types and the other new stuff is post-Java 9, and I think that’s good because you need some time to play with it, and experiment with it, and more people need to do that.

It surprised me a bit that they are already downplaying Jigsaw – I think that is something that’s changed. They used to hype too much, and then lower expectations. But I think it did well. Jigsaw, the average developer will not notice too much from Jigsaw. It’s more Jigsaw will allow mobile deployments, it will allow profiles, and will allow Java to be on different places, with more granularity – with more modularity. It’s more I think for the deployment industry, and how you upgrade and shift pieces of Java with your application. There it’s going to have a huge impact I would think – but it’s going to take quite some years before it really falls into place. It’s like Java 7 had the Invoke Dynamic byte code, but it was only in Java 8 that it was really  used. So this might happen again with Jigsaw.

What’s in the pipeline for you in the next year?

I think I’m going to start with some sleep – but there are a few other things that I’m keeping an eye on. So definitely JavaFX on mobile, still connecting it to the internet, so DataFX, because we see commercial interest from companies that want commercial support for Java on the mobile, and for connecting Java client applications to backends, so we’re going to see how we can expand that business, and arrange it.

We’re trying to have more commercial support, because up until now everything was all commercial support and investment of R&D. The more commercial support we have, the more we can keep investing in R&D, so that’s the business we’re going to try to expand. IoT is also something that we’re following, trying some cool projects. We’re already doing some stuff with Raspberry Pi…so keeping an eye on that. Location based services has always been fun for me, we also have some ideas about using Java in brand tracking software – and so really many options – all Java related, of course.