Friday, September 18, 2009

Noop: Google's Language for the JVM

Perhaps the biggest news at the JVM Language Summit was the formal announcement of Google's Noop programming language for the Java Virtual Machine. Opinionated software and JVM languages are all the rage these days and Noop appears to be both. The main Noop project page states that "Noop's got an attitude" (another way to say it's opinionated) and the project's subtitle highlights its JVM nature and focus on testability: "A testable programming language running on the JVM."

I have find that I generally like opinionated software when its creators share the same opinions that I have and dislike opinionated software when its creators have strongly different opinions than I have. This is not a surprising observation, but it is a reminder that I should probably generally agree with the opinions that form a language's or framework's foundation and vision before jumping earnestly into that language or framework.

Noop's Opinions

As the project's subtitle ("A testable programming language running on the JVM.") suggests, testability is a primary objective in the design of the Noop language. Thus it is not surprising that many of the opinions behind Noop are related to language features that tend to make code testing easier. Major features that Noop is designed to strongly encourage include testability, dependency injection, readability, strong typing, and immutability. On the other side, Noop attempts to deter use of statics (often cited as problematic for testing), implementation inheritance, primitives, and boilerplate code.

Even the project's main page is highly opinionated. Take, for example, this description of dependency injection (I added the highlight):

Dependency Injection changed the way we write software. Spring overtook EJB's in thoughtful enterprises, and Guice and PicoContainer are an important part of many well-written applications today.

It is difficult to quantify the "thoughtful enterprises," though it is at least implied that those who use Enterprise JavaBeans (does this include EJB3/JEE5/JEE6?) are not as thoughtful.


We seem to be seeing more JVM-based languages coming out all the time. Most will probably never gain significant traction and be lost in the noise, but it will be interesting to see if Google-backed Noop can begin to compete with other JVM-based languages such as Groovy, JRuby, Jython, Scala, and other leading contenders for developer mind share.

Additional Resources

noop: A Testable Programming Language Running on the JVM

Google Urges Developers to Get in Loop with Noop

Google Launches 'Noop' Language for the Java Platform

Noop: A New JVM Language by Google

Google Delivers New Java-like Language: Noop

Google's Noop Steals the Show at the JVM Language Summit

Google Develops 'Noop' Language

1 comment:

Dustin said...

After browsing through the Noop project page, one definitely gets the feeling that Noop is more about ideas, concepts, and proposed features than it is about actually implemented code.

This is reiterated in Graeme Rocher's tweet on Alex Eagle's Twitter: "thanks for being the one person to point out that Noop is now mostly a wiki of ideas. An interpreter for Hello World is news?"