NetKernel LanguagesNetKernel Procedural LanguagesNetKernel Declarative LanguagesNetKernel Aspect Oriented ProgrammingNetKernel XML LanguagesCreate New LanguagesUniform Exception Handling
NetKernel Languages

NetKernel has a uniform view of resources and services. In NetKernel program code is a resource and the language engine that executes code is a service. To run a program, pass a reference to your code to the appropriate language runtime engine and it will be scheduled for execution just like any other service.

This uniform view has enormous implications for development flexibility and system performance. All programs are dynamically compiled and the results are automatically cached. Changes to a program will invalidate the cache forcing NetKernel to automatically recompile the program. NetKernel's cache also captures the results of code execution. This means that as long as neither code nor inputs change the code is never re-executed.

Choose your favorite language. Write your own. NetKernel includes an extensive set of declarative and procedural languages. Each has strengths that can be applied to your application. And, while independent, each operates on and with the microkernel so they can all be seamlessly integrated into your system.

NetKernel Procedural Languages

NetKernel provides scripted (dynamic) languages including Ruby, BeanShell (scripted Java), Groovy, Javascript, and Python as well as compiled languages such as Java. Each language is dynamically compiled to native bytecode providing the flexibility of scripting and high performance. NetKernel's resource model leads to reusable code libraries, written in any language, which are dynamically linked into applications.

NetKernel Declarative Languages

NetKernel's service-composition model fits well with declarative languages. NetKernel provides two such languages. Declarative Process Markup-Language (DPML) is a service composition language providing loops, conditionals, etc. XML Resource Linker (XRL) is a recursive XML-based pull runtime. In XRL services are invoked via declarations embedded within XML (and XHTML) documents. Since those references can themselves contain XRL, the whole is recursively evaluated by the runtime service.

Aspect Oriented Programming

The resource oriented approach of development enables aspect oriented programming concepts such as pointcuts and advice to be cleanly implemented in the logical layer. All services in NetKernel can be transparently wrapped with another service. For example, a transaction or security service can wrap the database access service. In NetKernel you can apply the tenets of aspect oriented programming to any service with code written in any supported language.

NetKernel XML Languages

XML is an important resource type and numerous XML languages are provided with NetKernel. Any XML language which can make requests for a resource through a URI resolver can invoke services in NetKernel. Both XSLT and XQuery can be used to sequence service requests. Even XInclude can be used to execute services.

Create New Languages

Write your own language! Domain specific languages (such as an application specific workflow language) can provide dramatic clarity and productivity. Adding a new language to NetKernel is as simple as adding any other services.

Uniform Exception Handling

When services fail their exceptions are returned to the microkernel which directs the exception to the service requestor. A requestor may or may not be designed to handle exceptions, if not then the exception will be passed up the service call-stack automatically. Managed exception propagation means that exceptions can even be thrown and caught between different languages.

1060 and NetKernel are respectively registered trademark and trademark of 1060 Research Limited
© 2002-2008, 1060 Research Limited