Charles Nutter remembers when, working as a Java architect, he attended a conference and saw the Ruby programming language for the first time. And he was blown away.
“I was just stunned that I understood every piece of code, every example, without knowing the language at all,” recalls Nutter. “It was super easy for me to understand the code.”
As a Java developer, Nutter began looking for an existing way to run Ruby within a Java runtime environment, specifically a Java virtual machine (JVM). This would let Ruby programs run on any hardware or software platform supported by a JVM, and would facilitate writing polyglot applications that used some Java and some Ruby, with developers free to choose whichever language was best for a particular task.
Nutter found the existing Ruby-on-JVM project, JRuby, but “it had not been moving forward very quickly. It had been kind of stalled out for some years.” So, he became involved, helping drive support for a popular web application framework, Ruby on Rails, to run within a JVM.
“We made it work,” says Nutter. “In 2005 and 2006, we got Rails to run on top of the JVM—and it was the first time any major framework from off the Java platform had ever been run on top of the JVM.”
For his successful coleadership of JRuby during more than a decade, and for his broader leadership in the software industry, Nutter was recently honored with a Groundbreaker Award, presented at Oracle Code One in San Francisco.
From an Old PC to Java to JRuby
Nutter has been a lifelong programmer, starting with the BASIC interpreter build into an early personal computer. “My dad got me really excited about computing early on, so we had PCs in late ’70s, early ’80s when I was a kid,” he says. “My first day-to-day computer was an old IBM PC/XT with a 10 megabyte hard drive.”
Newsstand publications like Creative Computing spurred an interest in coding. “I could just boot into BASIC and play with it. At the time, there were all sorts of magazines that would have essentially games that you could enter in BASIC,” Nutter recalls. “That’s what really got me into programming. I was interested in computers in general, in small games, but the idea that you could make a computer play a game really got me into it.”
From those early BASIC games to porting Ruby to Java—maybe it’s not so much of a stretch, given that both were focused on pushing limits: “After getting Ruby on Rails running on the JVM, this opened the gates for us to say, ‘We actually can do more than Java on this platform. We’ve done Ruby in the JVM. What else can we do in the JVM?’”
Nutter views the work with JRuby to be both practical for writing business software, and also good for research. “The computer science challenge of bringing Ruby, a language that was never meant to be on the platform, over to the JVM is an interesting problem,” Nutter says. “We had to build our own libraries and our own hooks into the native Java system.”
The beneficiaries are both those who come from a Java and JVM focus and those who come from Ruby.
“About half of users start out with JRuby because they know they’re going to be on a Java platform,” Nutter says. “They want to use the same Java libraries and the same deployment practices that they’ve used in the past, but they would like something new. They would like to try Ruby or Rails.”
By contrast, “The other half of the JRuby community are Ruby folks who grew up using the standard implementation of Ruby, based on C, and got to a point where those concurrency limitations started to impact them,” explains Nutter. “The standard implementation of Ruby cannot fully parallelize application code, which means multiple Ruby processes are required to fully utilize the host CPU. This multiplies the resource needs of the application, leading to wasted memory and CPU cycles.”
The Java virtual machine is designed specifically to manage concurrency at a large scale, and JRuby applications can scale to take advantage of that capability, without the limits of Ruby running on the standard implementation. “It’s usually a scaling issue that brings users to JRuby,” says Nutter.
The Power of Coleadership
JRuby is currently maintained and evolved primarily by two developers, both of whom work full-time for Red Hat: Nutter and his colleague, Thomas Enebo. “It’s two of us, and we’ve been doing this for 12 years. We’re a great little team. My job is about half technical day-to-day work on JRuby and about half JVM outreach,” he says. “I talk with language communities, and I talk to the JVM communities.”
Nutter’s goal, when he isn’t writing code himself: “Making sure that I have a finger on the pulse of the community for what the JVM is going to be, while also supporting the JRuby community.”
The future of Java, and of the JVM, is important as Nutter and Enebo chart the course for the evolution of JRuby. “I’m interested to see what’s going to happen with the Java platform in the face of microservices, functions-as-a-service,” Nutter says, referring to small, low-profile, quick-starting applications. “There’s a whole bunch of pieces of the Java platform that we have to throw away to get fast little microservices, and so I’m interested to see what’s going to happen to the JVM itself in the next four or five years to adapt to those small-profile functions as a service, small service applications.”
Open Source Is Good for a Developer’s Career
Want to be like Nutter someday? His career advice is direct: Contribute to an open source community, even if it’s a little daunting, and even if some people in that community are, well, rude to newcomers.
“Don’t be afraid to get out into the open source community,” Nutter says. “Get out into the public community, do talks, submit bugs, submit patches. It’s going to be discouraging, and there’s a lot of jerks out there that will scare you away. Don’t let them. Get into the heart of the community and don’t be afraid to help contribute or ask questions.”
Start by asking questions. “Asking questions is a contribution for most projects,” Nutter advises. “I took too long to really get involved in the open source community. Once I finally did get involved, rewrote a little piece of code, and said to the community, ‘Hey, I rewrote this,’ suddenly my career just kind of took off at that point.”
Even if you’re not ready to submit code, become a contributor and an active participant in a community. “Get involved in volunteering at conferences, perhaps,” Nutter says. “Whatever it is, don’t be afraid to make that step. That will change your career immeasurably.”
Getting involved in any way shows heart, and that’s what really stands out. Says Nutter, “People are passionate about this work, and that’s what we want.”