Interview with Charles Nutter @ GOTO Chicago 2015
Transcript
Hi, it’s Mike with Utesc. I’m here again at GOTO Conf 2015, and I’m standing here with Charles Nutter, who’s giving a talk called Beyond the JVM. It’s a tongue tw ister. I’ve been saying so many long titles today that trying to say a short title is actually more confusing. Well, thank you very much for taking the time to speak with me. Sure. So, Beyond the JVM. What is Beyond the JVM? Well, this is a talk I’ve kind of been working on for a while, just to show people that the JVM is evolving and that a lot of the problems they may have heard about are starting to be solved. In this talk, I kind of took the approach of talking about the work we did on JRuby for the past nine years, the challenges of getting JRuby to run on the JVM and be compatible, and then threaded that story through a few different areas that the JVM is improving. I think it went pretty well. People seem to appreciate the work that’s being done. Yeah, and I mean, what are some of the examples? Like your JVM… JRuby is your domain, but are you looking at strictly the JRuby aspects or how JRuby improves off of this? Or is it just general JVM stuff that… Well, it ends up being very general. The problems that we had to solve are problems that developers on the JVM have had to deal with for a long time . The three areas that I actually went into, I talked about how Ruby has tons of method calls. I mean, everything’s a method call all over the place. And using Invoke Dynamic, Java 7 features to optimize things a little bit better, make it possible for Ruby code to get some of the same JIT optimizations that Java does. We also had a strong need to be able to call native functions. There’s a lot of Unix and POSIX stuff in Ruby that has to be essentially the same behavior. We could emulate all of it or port all that sort of code and all that logic, but it ends up being much more compatible and a better experience for users if we can call native code. So we’ve worked for years on a native integration library and some wrappers around that to pre-bind a bunch of POSIX functions, make it easy to call them anytime. So does that mean that it makes JRuby on Windows even more accessible because of the abstraction of those system lib type calls? Right, right, exactly. So we’re able to match Ruby’s performance exactly the way that it would be on any given platform. So if there’s platform-specific cores… Quarks, not necessarily bugs or problems, but quarks in how file operations work or quarks in how it deals with unmanaged memory or native memory, those things we can do without having to write any native code. We just write a little bit of Java code, call through our native integration layer, JNR, and we get the native behavior out of that. Interesting. And on a side note, as we were talking about the JVM, it got to me thinking about some of the resources. Recent changes, and you may or may not have an answer, but with the recent changes in the .NET CLR now being launched on OS X and Linux and Microsoft seeming to make a push, there had been the IAMRuby project that kind of died. Have you looked at the .NET stuff and looked at how maybe JRuby might benefit from any of these new advancements? Yeah, actually, for a couple years, I went to the lang.net event that Microsoft hosted where they had language designers, runtime designers, VM folks all come to Redmond and meet up and talk about what they’re doing. I went with John Rose and did a presentation. John Rose is the lead of the Hotspot compiler team. We talked about basically how Hotspot works internally, what it’s able to do optimization-wise. They were able to talk about things that they’re doing in C Sharp and how it may make it work and how it fits into their VM. I really wish we had more. More of those events. There’s no more lang.net as far as I know. We still have the JVM Language Summit and get the C Sharp and Microsoft folks over there once in a while. And there’s events like this that are cross-discipline, cross-language. So it’s nice. I had a chance to talk with Mads a little bit earlier about some of the new C Sharp stuff. Yeah, and you might not think about an event like this might bring together two disparate houses. You know, I don’t know which… I’ve been watching Dune a little bit too much lately, but I’m thinking, you know, which one’s House Harkonnen? Yeah, exactly. But, you know, I’ll just say JVM is a tradies and we’ll just leave it there. Or maybe X, I don’t know. But it’s good to see, like, some of these advancements and it’s good to know that there’s cross-pollination going on even at a high level of people who are inside of the project. Right, right. Despite the perceived, you know, animosity between the two platforms. John Rose, I think, mentioned it. He said it’s like going to a parallel universe where you go and talk to them. It’s the same challenges and the same… It’s the same problems and it just makes sense for us to all work together on them . So, actually, if that means that it’s mirror-mirror, you’ve got the goatee. So who’s the good guy? Yeah, who’s the good me on the other side? Well, thank you very much for taking that. We’ll leave that as a mystery. Thank you very much.