History
NetKernel was started at Hewlett-Packard Labs in 1999. It was conceived by Dr. Russ Perry, Dr. Royston Sellman and Dr. Peter Rodgers as a general purpose XML operating environment that could address the needs of the exploding interest in XML dialects for intra-industry XML messaging. Rodgers saw the web as an implementation of a general abstraction which he extrapolated as ROC, but whereas the web is limited to publishing information; he set about conceiving a solution that could perform computation using similar principles. Working in close partnership with co-founder Tony Butterfield, they discovered a method for writing software that could be executed across a logical model, separated from the physical realm of code and objects. Recognising the potential for this approach, they spun out of HP Labs. Rodgers and Butterfield begun their company as "1060 Research Limited" in Chipping Sodbury, a small market town on the edge of the Cotsolds region of England in 2002, and over a number of years developed the platform that became NetKernel. In early 2018, 1060 Research announced that it was appointing a new CEO, Charles Radclyffe. Radclyffe announced to the NetKernel community in February 2018 that the team were working on a new patform based on NKEE 6 which would be fully hosted, programmable and accessible via the web - NetKernel Cloud. Radclyffe resigned after six months.Concepts
Resource
A ''resource'' is identifiable information within a computer system. Resources are an abstract notion and they cannot be manipulated directly. When a resource is requested, a concrete, immutable ''representation'' is provided which captures the current state of the resource. This is directly analogous to the way the World Wide Web functions. On the Web, a URL address identifies a globally accessible resource. When a browser issues a request for the resource it is sent a representation of the resource in the response.Addresses
A resource is identified by an ''address'' within an '' address space''. In NetKernel,Request
The fundamental operation in NetKernel is a ''resource request'', or ''request''. A request consists of a resource URI address and a ''verb''. Supported verbs include SOURCE, SINK, NEW, DELETE, EXISTS and META. Each request is dispatched to a microkernel which resolves the URI address to a physical endpoint and assigns and schedules aProgramming
The fundamental instruction in NetKernel is a resource request, specified by a URI. Mechanisms that sequence URI requests are located above the microkernel. In the current Java-based implementation, requests are dispatched using a Java API. This implies that any language that can call a Java API can be used to program NetKernel. , the set of languages supported includes: * Java * Ruby * Scala * Clojure * JavaScript * Python 2 * Groovy * Beanshell * PHP * DPML * XML related languages such as XQuery * The URI specification itself has sufficient richness to express a functional programming language.Active URI Scheme
The ''active'' URI scheme was proposed by Hewlett-Packard as a means to encode a functional program within a URI.active: @For example, the following URI calls a random number generator
active:randomand the following uses an
active:xslt+operator@file:/style.xsl+operand@file:/document.xmlBecause the argument values may be URI addresses themselves, a tree-structured set of function calls can be encoded in a single URI.
Transports
Transports are a mechanism used to introduce requests from outside of NetKernel to the NetKernel address space. Transports are available for the HTTP protocol, JMS ( Java Message Service), and CRON. Other transports can be easily added as they are independent from the rest of NetKernel. The role of the transport is to translate an external request based on one protocol into a NetKernel request with a URI and a specific verb (SOURCE, SINK, etc.) and then to send the returned representation back to the client via the supported protocol. Two mappings are handled by a transport. The first is between the address space of the externally supported protocol to the internal NetKernel address space. And the second is between the verb or action specified externally into a NetKernel verb. For example, in the case of the HTTP transport, the external address space is a sub-space of a URL. The following mapping illustrates this point.http://www.mywebsite.com/publications/... , v file:/src/publications/...In addition, the HTTP protocol supports methods such as GET, PUT, HEAD, etc. which are mapped to NetKernel verbs.
Scripting languages
A mechanism is needed to issue the URI requests, capture the returned representations, and communicate with clients. Scripting languages are executed by their runtime engine, which is itself a service. For example, the Groovy language runtime will run a program contained in the filefile:/program.gy
with the following:
active:groovy+operator@file:/program.gy
See also
* Representational State Transfer * Web resource * Jolie * List of user interface markup languagesReferences
External links
*