The tireless, developer-centric engineers at Google have come up with Noop, a new language that runs on the
Java Virtual Machine.
"Noop (pronounced 'noh-awp,' like the machine instruction) is a new
language that attempts to blend the best lessons of languages old and new,
while syntactically encouraging industry best-practices and discouraging the
worst offenses," according to a description of the language on the Noop
language Website.
Noop supports dependency injection in the language, testability and
immutability. Other key characteristics of Noop, according to the Noop site,
include the following: "Readable code is more important than any syntax
feature; Executable documentation that's never out-of-date; and Properties,
strong typing, and sensible modern stdlib."
Moreover, according to the Noop language home page, some of the thinking
behind the creation of the language includes:
"Dependency Injection changed the way we write software. Spring
overtook EJB's [Enterprise JavaBeans] in thoughtful enterprises, and Guice and
PicoContainer are an important part of well-written applications today.
"Automated testing, especially Unit Testing, is also a crucial part of
building reliable software that you can feel confident about supporting and
changing over its lifetime. Any decent software shop should be writing some
tests, the best ones are test-driven and have good code coverage."
Discussed at the 2009 JVM Language
Summit on Sun Microsystems' campus in Santa Clara,
Calif., on Sept. 16, Noop has quickly become
the topic du jour in the Java development community. Indeed, the Noop site also
said, "Noop is a new language that runs on the Java Virtual Machine, and
in source form looks similar to Java. The goal is to build dependency injection
and testability into the language from the beginning, rather than rely on
third-party libraries as all other languages do."
In an August 2009 blog post, James
Gosling, the creator of Java and a Sun vice president and fellow, said of
the JVM Language Summit:
"The JVM Language Summit is an open technical collaboration among
language designers, compiler writers, tool builders, runtime engineers, and VM
architects. We will share our experiences as creators of programming languages
for the JVM and of the JVM itself. We also welcome non-JVM developers on
similar technologies to attend or speak on their runtime, VM, or language of
choice."