Press play or click any turn in the transcript to start real-time synchronized playback...
Hi, it's Mike with UGtastic. I'm here again at GOTO Conference 2015, and I'm standing here with Charles Nutter, who's giving a talk called Beyond the JVM. Hi, it's Mike with UGtastic. I'm here again at GOTO Conference 2015, and I'm standing here with Charles Nutter, who's giving a talk called Beyond the JVM. Charles Nutter discusses the evolution of the JVM and how JRuby has been optimized to run on it, addressing challenges such as method calls and native function integration. He also touches on the potential for cross-pollination between the JVM and .NET communities. #.NET
Hi, it's Mike with UGtastic. I'm here again at GOTO Conference 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?
Charles Nutterconference speaking and presentation skillsβΆ Speaking
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.
Mike HallInterviewer, UGtasticβΆ Speaking
Yeah, and I mean, what are some of the examples?
Charles Nutterconference speaking and presentation skillsβΆ Speaking
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 .
Mike HallInterviewer, UGtasticβΆ Speaking
NET stuff and looked at how maybe JRuby might benefit from any of these new advancements?
Charles Nutterconference speaking and presentation skillsβΆ Speaking
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...
Mike HallInterviewer, UGtasticβΆ Speaking
I've been watching Dune a little bit too much lately, but I'm thinking, you know, which one's House Harkonnen?
Charles Nutterconference speaking and presentation skillsβΆ Speaking
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.
Mike HallInterviewer, UGtasticβΆ Speaking
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.
Critical Insights
durable
"JRuby has been optimized to run on the JVM, addressing challenges such as method calls and native function integration."
durable
"The JVM Language Summit and other cross-discipline events bring together language designers, runtime designers, and VM folks to work on common challenges."
durable
"Despite perceived animosity between the JVM and .NET communities, collaboration can lead to advancements in both platforms."
Charles has been programming most of his life, as a Java developer for the past decade and as a JRuby developer for over six years. He co-leads the JRuby project, an effort to bring the beauty of Ruby and the power of the JVM together. Charles believes in open source and open standards and hopes his efforts on JRuby and other languages will ensure the JVM remains the preferred open-source managed runtime for many years to come. Twitter: @ headius
The JVM has traditionally hosted many languages, but only those closest to Java itself got the full optimization treatment. Those days are changing rapidly with new JVM features like invokedynamic and lambda, and with the rise of new frameworks like Truffle and Nashorn. In this talk we'll explore what it takes to optimize more exotic languages like JavaScript and Ruby and see how the JVM is evolving to do a better job. We'll see how projects like JRuby and Nashorn are trying to work around gaps in the JVM's optimizer. We'll see how JRuby+Truffle routes around the JVM to achieve blistering fast performance. And we'll look at upcoming projects on the JVM that will make language-building even easier.
The JVM has traditionally hosted many languages, but only those closest to Java itself got the full optimization treatment. Those days are changing rapidly with new JVM features like invokedynamic and lambda, and with the rise of new frameworks like Truffle and Nashorn. In this talk we'll explore what it takes to optimize more exotic languages like JavaScript and Ruby and see how the JVM is evolving to do a better job. We'll see how projects like JRuby and Nashorn are trying to work around gaps in the JVM's optimizer. We'll see how JRuby+Truffle routes around the JVM to achieve blistering fast performance. And we'll look at upcoming projects on the JVM that will make language-building even easier.
GOTO Chicago 2015 Talk Video: Beyond JVM: How the Platform is Evolving for new Languages & Features