Original author(s) | HP Laboratories [1] |
---|---|
Developer(s) | 1060 Research |
Stable release | 6.2.1 / 27 January 2018 [2] |
Written in | Java |
Type | Application framework |
License | 1060 Public License [3] |
Website | www |
NetKernel is a British software company and software platform by the same name that is used for High Performance Computing, Enterprise Application Integration, and Energy Efficient Computation.
It allows developers to cleanly separate code from architecture. It can be used as an application server, embedded in a Java container or employed as a cloud computing platform.
As a platform, it is an implementation of the resource-oriented computing (ROC) abstraction. ROC is a logical computing model that resides on top of but is completely isolated from the physical realm of code and objects. In ROC, information and services are identified by logical addresses which are resolved to physical endpoints for the duration of a request and then released. Logical indirect addressing results in flexible systems that can be changed while the system is in operation. In NetKernel, the boundary between the logical and physical layers is intermediated by an operation-system caliber microkernel that can perform various transparent optimization.
The idea of using resources to model abstract information stems from the REST architectural style and the World Wide Web. The idea of using a uniform addressing model stems from the Unix operating system. NetKernel can be considered a unification of the Web and Unix implemented as a software operating system running on a monolithic microkernel within a single computer.
NetKernel was developed by 1060 Research and is offered under a dual open-source software [3] and commercial software license.
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. [1]
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. [4] 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. [5]
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.
A resource is identified by an address within an address space . In NetKernel, Uniform Resource Identifier (URI) addresses are used to identify all resources. Unlike the Web, which has a single global address space, NetKernel supports an unlimited number of address spaces and supports relationships between address spaces.
NetKernel supports a variety of URI schemes and introduces new ones specifically applicable to URI addressing within a software system.
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 a thread for processing. When the endpoint completes processing the microkernel returns the response to the initiating client.
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.
As of April 2013 [update] , the set of languages supported includes:
The active URI scheme was proposed by Hewlett-Packard as a means to encode a functional program within a URI.
active: {function-name} [+ {parameter-name} @ {parameter-value-URI}]*
For example, the following URI calls a random number generator
active:random
and the following uses an XSLT service to transform an XML document with an XSLT stylesheet:
active:xslt+operator@file:/style.xsl+operand@file:/document.xml
Because the argument values may be URI addresses themselves, a tree-structured set of function calls can be encoded in a single URI.
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.
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 file file:/program.gy
with the following:
active:groovy+operator@file:/program.gy
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space, which is coded as if it were a normal (local) procedure call, without the programmer explicitly coding the details for the remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. This is a form of client–server interaction, typically implemented via a request–response message-passing system. In the object-oriented programming paradigm, RPCs are represented by remote method invocation (RMI). The RPC model implies a level of location transparency, namely that calling procedures are largely the same whether they are local or remote, but usually they are not identical, so local calls can be distinguished from remote calls. Remote calls are usually orders of magnitude slower and less reliable than local calls, so distinguishing them is important.
The Session Initiation Protocol (SIP) is a signaling protocol used for initiating, maintaining, and terminating communication sessions that include voice, video and messaging applications. SIP is used in Internet telephony, in private IP telephone systems, as well as mobile phone calling over LTE (VoLTE).
A Uniform Resource Identifier (URI) is a unique sequence of characters that identifies a logical or physical resource used by web technologies. URIs may be used to identify anything, including real-world objects, such as people and places, concepts, or information resources such as web pages and books. Some URIs provide a means of locating and retrieving information resources on a network ; these are Uniform Resource Locators (URLs). A URL provides the location of the resource. A URI identifies the resource by name at the specified location or URL. Other URIs provide only a unique name, without a means of locating or retrieving the resource or information about it, these are Uniform Resource Names (URNs). The web technologies that use URIs are not limited to web browsers. URIs are used to identify anything described using the Resource Description Framework (RDF), for example, concepts that are part of an ontology defined using the Web Ontology Language (OWL), and people who are described using the Friend of a Friend vocabulary would each have an individual URI.
XSLT is a language originally designed for transforming XML documents into other XML documents, or other formats such as HTML for web pages, plain text or XSL Formatting Objects, which may subsequently be converted to other formats, such as PDF, PostScript and PNG.. Support for JSON and plain-text transformation was added in later updates to the XSLT 1.0 specification.
XML-RPC is a remote procedure call (RPC) protocol which uses XML to encode its calls and HTTP as a transport mechanism.
Exokernel is an operating system kernel developed by the MIT Parallel and Distributed Operating Systems group, and also a class of similar operating systems.
WebDAV is a set of extensions to the Hypertext Transfer Protocol (HTTP), which allows user agents to collaboratively author contents directly in an HTTP web server by providing facilities for concurrency control and namespace operations, thus allowing Web to be viewed as a writeable, collaborative medium and not just a read-only medium. WebDAV is defined in RFC 4918 by a working group of the Internet Engineering Task Force (IETF).
Representational state transfer (REST) is a software architectural style that describes a uniform interface between physically separate components, often across the Internet in a Client-Server architecture. REST defines four interface constraints:
eXist-db is an open source software project for NoSQL databases built on XML technology. It is classified as both a NoSQL document-oriented database system and a native XML database. Unlike most relational database management systems (RDBMS) and NoSQL databases, eXist-db provides XQuery and XSLT as its query and application programming languages.
A web API is an application programming interface for either a web server or a web browser. It is a web development concept, usually limited to a web application's client-side, and thus usually does not include web server or browser implementation details such as SAPIs or APIs unless publicly accessible by a remote web application.
The Oxygen XML Editor is a multi-platform XML editor, XSLT/XQuery debugger and profiler with Unicode support. It is a Java application, so it can run in Windows, Mac OS X, and Linux. It also has a version that can run as an Eclipse plugin.
A web template system in web publishing lets web designers and developers work with web templates to automatically generate custom web pages, such as the results from a search. This reuses static web page elements while defining dynamic elements based on web request parameters. Web templates support static content, providing basic structure and appearance. Developers can implement templates from content management systems, web application frameworks, and HTML editors.
In computer science, marshalling or marshaling is the process of transforming the memory representation of an object into a data format suitable for storage or transmission. It is typically used when data must be moved between different parts of a computer program or from one program to another.
The kernel is a computer program at the core of a computer's operating system and generally has complete control over everything in the system. It is the portion of the operating system code that is always resident in memory and facilitates interactions between hardware and software components. A full kernel controls all hardware resources via device drivers, arbitrates conflicts between processes concerning such resources, and optimizes the utilization of common resources e.g. CPU & cache usage, file systems, and network sockets. On most systems, the kernel is one of the first programs loaded on startup. It handles the rest of startup as well as memory, peripherals, and input/output (I/O) requests from software, translating them into data-processing instructions for the central processing unit.
Resource Oriented Computing (ROC) is a simple abstract computing model used for describing, designing, and implementing software and software systems. The fundamental idea behind ROC is derived from the World Wide Web, Unix, and other sources as well as original research conducted at HP Laboratories.
An XML transformation language is a programming language designed specifically to transform an input XML document into an output document which satisfies some specific goal.
Apache Attic is a project of Apache Software Foundation to provide processes to make it clear when an Apache project has reached its end-of-life. The Attic project was created in November 2008. Also the retired projects can be retained.
A Uniform Resource Locator (URL), colloquially termed a web address, is a reference to a web resource that specifies its location on a computer network and a mechanism for retrieving it. A URL is a specific type of Uniform Resource Identifier (URI), although many people use the two terms interchangeably. URLs occur most commonly to reference web pages (HTTP) but are also used for file transfer (FTP), email (mailto), database access (JDBC), and many other applications.