September 17, 2009, 4:26 PM — Google is hosting a language project called Noop, which initially targets the Java Virtual Machine and is intended to encourage industry best practices and discourage "worst offenses."
Noop is pronounced noh-awp, like the machine instruction, the Noop Web page says. It is in early stages of development and is being worked on by people within Google and outside of Google, a Google representative said.
[ Check out InfoWorld's report on different languages for the JVM. | And keep up with app dev issues and trends with InfoWorld's Fatal Exception and Strategic Developer blogs. ] "Noop is a new language that runs on the Java Virtual Machine and in source form looks similar to Java," the Web page says. "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 addition to dependency injection, Noop favors testability, immutability, readable code, properties, and strong typing. It also endorses executable, up-to-date documentation. "Dependency Injection changed the way we write software. Spring overtook EJBs in thoughtful enterprises, and Guice and PicoContainer are an important part of well-written applications today," the page says.
Automated testing, especially unit testing, is a crucial part of building reliable software, Noop advocates said. "Any decent software shop should be writing some tests, the best ones are test-driven and have good code coverage," according to the Noop page.
Offered under an Apache 2.0 license, Noop is opposed to statics, implementation inheritance, primitives, and unnecessary boilerplates.
Three ways are planned for using Noop source files: through a Java translator that produces Java source; use of an interpreter that reads and evaluates Noop code and compiled to Java bytecode.
Advocates of Noop believe maintained code is read more than it is written, so readers are favored. Enforcement of a public API separate from visibility of types and methods also is endorsed.
Noop joins other languages besides Java itself on the JVM, such as JRuby, which provides an implementation of the Ruby language; Jython, supporting Python development, and Scala.
Noop's philosophy on stdlib (standard library) includes picking the best implementations from other languages, using JodaTime for Data/Time APIs, and using util.concurrent for concurrency and exposing Google collections. Injection will be done in the same style as Objective-C.