XP Runtime

Contents

XP Runtime

The XP runtime powers XP applications

Introduction

Developers commonly need to choose a particular runtime, programming language, and framework for their project. Enonic XP provides a standard approach to all of this through the XP runtime and the XP JavaScript framework. Additionally, the runtime automatically provides access to XP’s platform services, such as the NoSQL Storage and CMS functionality.

Overview

The XP runtime is built on top of the Java Virtual Machine, and a series of open source Java components. Still, XP apps are primarily developed using JavaScript - thanks to the embedded JavaScript engine and framework. However, due to running on the JVM, XP apps may also run other JVM compatible code and libraries.

The runtime uses the OSGi module system to isolate each module (aka bundles) - and controlling the ability to communicate between them. XP Applications essentially work like any other system modules - with their own life cycle and ability to install, start, stop and uninstall.

Simplified view of the XP runtime internals

Multi-threaded

Unlike popular JavaScript runtimes such as NodeJS, the XP runtime is multi-threaded. This allows for utilisation of multi-core CPUs, true parallell execution, and handling of large loads within a single instance.

This is also important from a development perspective. Since the XP runtime is multi-threaded, developers also benefit from a simplified development model, debugging, and the ability to run threaded operations when needed. XP’s task engine for instance runs all tasks as separate threads.

Modular

The XP runtime also enables you to run multiple applications in a single runtime. Each application may be built, installed, started and stopped independently - and even cooperate on progressing a single request. This can for instance be seen in the HTTP engines and their execution pipeline. This basically means that most XP apps consume very little resources beyond the actual processing, and that a single runtime may potentially contain many applications - similar to a serverless architectures.

Optimised

XP apps can benefit from the highly optimised Java VM, but also optimisations in XP’s JavaScript framework. Also, the highly performance NoSQL storage enable access to large datasets with minimal latency.

Stateful and stateless

The XP runtime is capable of running in both stateful (using the embedded NoSQL storage) and stateless mode. A single instance deployment will do both, but a clustered deployment may for instance be split into back-end and front-end nodes.

Scalable

XP can easily be scaled by setting up a cluster of runtime nodes. It can run in virtually any infrastructure, and also be managed by Kubernetes or similar container orchestration engines for automatic scaling and more.

Management and metrics API

The runtime provides a management API, that amongst others support as installation of apps, dumping and loading data. This is commonly accessed using the Enonic CLI.

Additionally, the runtime also exposes a metrics API, providing access to runtime statistics. Like many other parts of XP, the metrics API may easily be extended with XP apps, and provide additional data as needed.

Contents