 Okay. Thank you everyone for turning up to the 2.30 session for the Open Programming MiniConf. We have a couple of JVM talks for you now. The first one is going to be presented by Steve Dalton who is going to be explaining why rumours of Java's demise have been greatly exaggerated. Please make him welcome. Thank you. I've been a Java developer for some time and I come to these conferences and hear lots of interesting ideas about Java, particularly in the Linux community. I thought today I'd just do a little talk on my view on where Java's going and sort of dispel this myth that Java's dead. Maybe some of you might have thought that. I'll just quickly show your hands. Who here's coded some Java in there? Who currently uses Java as their main language? Quite a bit less. Other JVM languages? A little bit. Okay. Cool. I'll just crack into it. In case you don't know, Java is more than just a language. Java is a language. It's a virtual machine and it's also a process called the JCP. Lots of people don't realise that who aren't Java programmers so they think of the language a lot. It's chopped the bottom off on my screen. I'm sort of giving my conclusion here right at the start but I thought, what the hell? A lot of people say Java is dead but long live Java. The language itself is struggling a little bit. The JVM itself is doing very, very well. It's everywhere, pretty much where I see. Unless you're a Microsoft shop, you'll see JVM in any big organisation small. Java the language, I'd agree maybe it's on the ropes a little bit. The JCP, I'll get on to this a little bit later but it's in a bit of strife. First of all, JVM, if you're running on, I'll just talk about Linux here. There's really only a couple of main options here. I've completed a couple more here but it's really the open JDK and the Sun Java JDK. I think some Linux destroyers have started calling it the Oracle JDK now but I know Ubuntu is still the Sun JVM. There's the open JDK. There's also this thing here called GNU Classpath which also was GCJA, lots of different names. One that's been in the news recently, Apache Harmony which does have a JVM component to it. That's in a little bit of trouble as well which I'll get on to. Really, if you're on Linux, if you're running Ubuntu, Debian, Open JDK, Sun JDK are really well supported. They're in the repos, it's a Snapget install. Very easy. Also, a little one to watch is the Dalvik. It's not really a proper JVM. It's a virtual machine but it's what powers our Android mobile phones. Listen, talk about that running on Ubuntu native. There's also talk about having Android on Ubuntu running on regular Java. I'll get on to Java, the language. Before I get on to my main points, I'm just going to give a short little history lesson on what's happened with Java over the last 20 years. It really started in 1990 with a project called the Stealth Project. This guy, Patrick Norton, became the Green Project. Early on, Sun were looking at mobile devices, set-top boxes mainly. There was a language called Oak, which actually ran on these boxes and if anyone's familiar with any of this. As we progressed through the years, it became a different project name. Names changed. In about 1995, it became Java. They released JDK 96. JDK 11, things started to gain momentum. We had inner classes, Java beans, a lot of these things we sort of take for granted now as Java programmers. This is 13 years old now, a lot of this. Java 1.2 came along. We got Swing, JIT, compiler, which made things a lot faster, collections. They also established something called the Java community process, which was a kind of standards body to navigate the various Java specs. 99. Java got pretty popular, two million downloads. Java Platform 2 had lots of confusion about version numbers. Was it 1.2 or 2? It had this little thing called J2ME, which didn't really go anywhere. I don't know if anyone's done any J2ME programming. 2000, Apple came on with Java. 1.3, bits and pieces. Java 1.4 was a big one, included better exception handling, web start preferences, things like that. If anyone remembers all of this, it's like a little bit. It's quite interesting for me going back through all of this. J2E, J2SE5 was a big one. In 2004, we had things like generics, annotations, order boxing, numerations, all sorts of things came in. A lot of them I actually didn't use for quite a long time. I still don't really like generics. We'll get on to that. 2006, J2SE6, which didn't have a lot of changes in the language, but quite a lot of performance improvements. This is the one that most people are on these days, unless you run an old application server that needs Java 5. A little important thing happened this year. We had this Java 7 project again. That was four or five years ago now. OpenJDK started the actual JDK itself from the compiler, the JVM. A lot of that was open sourced. Then, basically, I'm getting to a point here. We had a few little things, 2007, Java FX. Anyone seeing Java FX here? No. Bits and pieces, 2009. Then this thing came along Oracle and sun merged, which we all got a bit nervous about. 2010, a lot happened. In the meantime, the language hasn't really progressed a lot. People are getting quite nervous about Java. It hasn't really been a big year for Java. Negative and positive. A lot of things to worry about. This is where people have got very concerned recently. The Java 7 roadmap was pretty much, well, not abandoned, but really cut back. They dropped things like Java FX script, which caused a lot of trouble with some people. It was quickly forked. Oracle tried to sue Google. I think that's still ongoing. I don't know if anyone knows much about the case, how it's going. That's still ongoing over the Dalvik and patent breaches. Apple decided to deprecate Java in OSX. That's the little one that came through. Any people running Java on OSX here? Generated a fair bit of bad press. I don't know if this was related, but then they donated it back to the Open JDK project. IBM moved to Open JDK. The JCP process basically turned into a complete mess. I just switched off a little bit halfway through and then just got back into it. It lost a lot of Java people. It got so complicated. People left the ... I'll get on to JCP in a minute. Anyway, apparently in 2011, we're going to get Java 7. Apparently in 2008, we're going to get Java 8. I have a pretty low confidence level on what's going to happen. I'm standing very negative at the moment. My talk was supposed to be upbeat, so I'll get on to that. A lot of innovation seems to be stored in Java. Generics caused a lot of trouble. Closures were supposed to come in Java 7. We're getting closures, but they're not closures in what I can see really. Meanwhile, .NET is doing very well. It's carrying on with innovation. Dynamic languages are on the functional programming. It's definitely back. Is anyone here doing getting into functional programming? I know I'm starting to, trying to. Many people I work with are. Why the hell am I developing on this platform? The community has actually found a way. Despite all of these problems, there's a lot of other alternatives on the JVM. One of my personal favorites is one called Groovy. A lot of people describe it as super Java. It's basically Java with all the things it should have had a few years ago. It's a dynamic language. It has a very nice clear migration path from Java. If you don't know Groovy, you can just rename your Java files .groovy. Compile them up with Groovy and then gradually start making it a little bit more idiomatic. It's very well established. It's using some big organizations. I work for the Suncourt Bank. We've got it all over Suncourt. Thanks mostly to a guy called Paul King who's one of the Groovy authors. There's a recent addition to it called Groovy++ which makes it static. People that don't like dynamic typing, you can make your current static. It's suddenly typed. There's a whole load of nice little projects that run on top of Groovy. Some of you may have heard of Grails. Grail or Gryphon is a swing Gryphon. Gaelic is a nice little framework for running on the Google App Engine. If anyone's doing App Engine stuff. And Jeepers, this one down the end here, a lot of people say Jeepers, but Jeepers is a concurrency framework. Next we have Scala. I've neglected to mention here before. These are basic canonical languages. The canonical version of the language is on the JVM. That is the version of the language. There's nothing else. Scala is either one. It's statically typed, functional or imperative. You can choose. There's a nice little progression if you want to get into functional languages bit by bit. Concurrency is built in. It's quite famous for being used in Twitter now. Twitter moved a lot of less to Foforubi, I believe. Well, some of less to Foforubi to Scala. Foursquare is it as well. Although I find Foursquare really unreliable, so I don't know if that's a great advert for Scala there. It has a little framework called Lyft for doing web apps along with lots of other frameworks. The third one is Closure. Does anyone here use Closure? Who there? That's nice. Closure is an interesting one. I'm only just getting into it myself. It's a dynamic. It's based on, it's a Lisp. So that's a bit scary to some people, but I'm finding, I never did Lisp at uni. I'm finding Closure quite interesting. It's functional. Concurrency, it's very good at that. So that's one of its big strengths. And it has a few frameworks already. Composure for doing web apps. I don't even know how to say that. Leningan, it's like a Maven type dependency framework. And there's some other languages in the JVM languages that are basically port. So we have JRuby at the top there. Jython. I don't know if many people are using Jython at the moment. And this one here is Rhino, which is a JavaScript information for Java, which is quite well used. And then there's a whole load of other languages. I probably haven't covered all of them here. There's quite a few. Burjang seems to be getting a bit of attention, which is an Erlang port. Phantom here. This one's rather interesting. Is anyone done Phantom? I knew you would. Yeah, you can compile it up on the .NET machine and also on Java and also compile to JavaScript as well. Resin is PHP. Go-Sew is a language that they use for guide wire, if anyone's used guide wire. And then along with it, we've got all these other ones. Jasko, we can guess what that is. Jsqueak is a small talk implementation. Mira is a modular JRuby, I guess you could describe it as. Nullop is an incredibly dynamic language based, its strength is testing. Jackal is TCL on Java. Frinks is a nice little mathematics DSL, which I don't know if anyone's played with. It's got great little Android app. Play around with maths. And there's a whole load of others. And you can create your own DSL if you want. And I think Tom might talk a little bit about creating your own JBM languages next. Finally, Java, the community. Well, I won't get onto JCP, but one of the good things about Java has a strong community. Lots of different libraries, IDEs are excellent. So we have Eclipse, everyone knows about it, but also IntelliJ is now open sourced. NetBeans, open sourced. Plus you can use pretty much every editor will have some Java mode. I did include Emux. It's a whole load of Java open source projects out there. A good place to look is the Apache Foundation, CodeHouse, Project Kenai is the sun now Oracle. I hope for all of these things. Also a lot of stuff on Bitbook. It's seen as they've been bought by Atlassian now. Lots of people putting Java things on there. GitHub, of course. We have a lot of web frameworks. I won't go into all of them. Grails is the one everyone knows about. There's many more. That's GWT, GWT. Lots of people using Wicket at the moment by the looks of it. Spring Roo got a bit of interest recently. They were doing the thing at Yao in Brisbane. If anyone went to that talk, that seemed to be very popular. Play, which I find quite interesting. Never got into anyone doing play? No. There's a whole load of so-called enterprise tools sitting on the Java stack. There's many more than what's in this page, but there's some big companies using these. I know a few big organizations using Alphonseco and Pentaho quite a bit. They seem to be going quite down quite well. HyperX is a great logging monitoring enterprise app. Finally, I'll just talk a little bit about the JCP. I haven't gone for time. The JCP is basically what drives the Java standards. There's something called the JCP, the specification request JSRs. The actual JCP has its own JSR to describe the JCP itself. If you want to know about JCP, you can look at that JSR. I can't remember the number. There's over 300 of them. As I said, they've been going since, I think, 1996. There's also a thing called, so JSR is made up of a reference implementation of the functionality person they call the Technology Compatibility Kit, which is how they prove that the JSR meets the spec. There's an executive committee that votes on all of these JSRs. That sounds pretty good. What's the problem? Well, the last year or so, there's been a lot of problems in the JCP. One of the things that has been in the press a bit is the Apache Foundation. They've had problems getting a TCK license because of incompatibility between licenses. Oracle don't sound like they've been particularly helpful in the whole process. We've had people leave the JCP, all sorts of negative press on this whole process, which has actually given Java a fairly bad name on it, so. So where are we heading? I'm not sure here. JVM is a very solid platform. As I said before, it's everywhere. Toolset is pretty awesome. The community is still actually very strong at the grassroots. People like ourselves, there's a little doubt about the language. People are saying it's the cobalt of our time, which might not be such a bad thing, but yeah, it's not sure where it's going there. Really, I haven't got a clue what Oracle are doing. There's all sorts of people trying to second guess what's happening internally in Oracle, but we're not sure there. My predictions, probably most of these will be false, but I think the JCP process is probably dead. Java 7.8 will probably be out. I'm not sure if anyone will really care much. Groovy's being used more and more. So I work in Groovy, so I would probably say it's the best one, but I think it's going to replace Java. In a lot of cases Skylar is also very popular. Closure, I'm not sure about that one. We'll see. I think they talk about these big 100 core CPUs and the way concurrence programing is going. Maybe that'll do well. We may see some forks in the OpenJDK. Not sure there, but there's a huge, there's a huge question already about the patents. So Oracle have already muscled up a little bit on Google with their patents, and that's a big worry. So we'll have to just watch this space there. And maybe we'll get Google go on Android or something crazy like that if they have to back down. I'm not sure there. If you want to hear more about my, on these various ramblings, you can listen to my podcast if you want. It's called Coding by Numbers. We're also on iTunes. I'll just open it up to questions if anyone has any questions. I'll try my best to answer. So questions for Steve. How can Groovy go well if Java the language starts to decay? Well, Groovy actually doesn't really rely on a lot of the Java 7 stuff that's coming out. Groovy already does closures. Pretty much everything Groovy Java 7's bringing. Groovy already does. I think there's a diamond operator in Java 7 which Groovy will take advantage of. So would it start to become less backward compatible, less interoperable? You mean with the new Java 7 stuff? I think they're tracking the Java 7 stuff already, the Groovy guys. So they will support the Java 7 stuff, but I don't think it really matters that much to actually most developers. The answery question, yeah. How much do you expect invoke dynamic to aid some of those dynamic languages you listed? Well, there was the, I think when all these dynamic languages came out, especially the JRuby guys, they were saying this is going to speed up considerably the dynamic languages. But from what I've read recently, the speed is actually not going to be as great as they originally expected. So I think a lot of the performance optimizations have been done in spite of, despite invoke dynamic. So I'm not an expert in this field, but I, from what I gather it's not going to be a massive speed up, but so that's why they're not so concerned anymore about the Java 7 stuff. There was, for a while, there was a lot of stuff on hold and they were saying until Java 7, until Java 7. But maybe that's not so important now, but it will help, I think, not orders of magnitude like people were talking about. I don't know if you could answer the question, but talking about where Java is going and the implementation of people taking on Groovy, what do you think about systems like IBM, WCM and etc that have heavily tied into Java? Do you seek IBM turning around and starting to use something like Groovy? Well, Java basically invested pretty heavily now into OpenJDK. They had quite a lot of developers on the Harmony project. They had six developers. They've switched them over to OpenJDK and given some more developers. So they're fairly, it sounds like they're pretty serious about OpenJDK. I actually didn't know a lot about OpenJDK until I did this talk and did a little bit of reading up on the process behind OpenJDK and there's basically two son engineers, well now Oracle engineers that control the whole OpenJDK commits. Apparently that's loosening up a little bit, but I'm guessing now IBM coming in there, maybe that will be shared a bit more. So I think IBM are pretty much, they're definitely serious about Java and they've pretty much come down on the Oracle side of the camp there. So I don't think it's going to go away there. Okay, more questions? No, everybody, please thank Steve Dalton for his talk.