NetKernel - taming XML and Web 2.0
Out with the app server, in with a REST
After seven years in the making, and three years quietly simmering in production environments, 1060 Research's NetKernel is set to take on the corporate middleware mess.
No one can deny that enterprise middleware is in a crisis. Each silver bullet has failed to stem the growing complexity and ever-rising cost of incremental development. Not to mention the cost of learning new languages and frameworks. How does NetKernel solve this problem? Through ground-up abstraction.
At its core, NetKernel is a robust language-agnostic messaging-passing environment based around manipulating resources. Former HP Labs guy Peter Rodgers, who helped design NetKernel at the Labs and negotiated the rights to continue developing it in 2002, describes it as "the child of a union between Unix and the web".
Because NetKernel starts from the basis that everything is a resource, which can be encapsulated in a URI (Uniform Resource Identifier) address space, the choice of language or framework is secondary - that's just another pluggable resource. The other important concept is that it's stateless. So not only can the URI express the full result of the computation, but it can cache all the values of all the computations on the system (by contrast, Java can't cache the result of a method call). These are often cited as characteristics of a REST (Representational State Transfer)-like system.
"Maybe it's my background in physics, but I have this pathological compulsion to generalise," jokes Rodgers.
"Abstraction has its cost, but the payback is massive. We're only beginning to discover the consequences of doing software this way.
"One of the concepts we take from Unix is of execution contexts. The services at the end of a URI can be six line function calls, or they can be big services that are execution environments."
Rodgers agrees that "resource-centric" development is a huge mental leap for many programmers.
"Traditional developers are taught about code first, not about the information first. Code has its place in NetKernel, and lives inside little isolated islands like traditional software containers - but you link them together using this web-like addressing model.
"It also means you can start to use information in its most valuable economic form - as opposed to binding it into the code - where the only economic value is to the developer."
That'll cause a wry smile for a few software development managers. The most significant payback NetKernel has demonstrated in production is lowering the cost of change, says Rodgers.
"In traditional object-oriented systems all you can do is link to an API... so the cost of change is very high, and it ripples right through the whole system. You have to tear it down to accommodate change. In Net Kernel you step up from the objects: the database is a resource server, the web front-end is a resource consumer, and NetKernel is routing the requests."
This might have something to do with the O-O"ness" of today's tools. Ask many a Smalltalk-era veteran of what they think of Java and the polite answer might rhyme with "pig's ear". Its objects go as far the marketing literature, and not much further.