arrow-down
    1. Widgets
  1. IAM
    1. Virtual apps
    1. Projects
    2. Layers
        1. AttachmentUploader
        2. Checkbox
        3. Combobox
        4. ContentSelector
        5. ContentTypeFilter
        6. CustomSelector
        7. Date
        8. DateTime
        9. Double
        10. GeoPoint
        11. HtmlArea
        12. ImageSelector
        13. Long
        14. MediaSelector
        15. Radiobutton
        16. Tag
        17. TextArea
        18. TextLine
        19. Time
      1. Field set
      2. Item set
      3. Option set
      4. Mixins
      5. Localization
    3. Content Types
    4. X-data
    5. Macros
    6. Custom styles
    7. Sites
      1. Regions
      2. Part component
      3. Layout component
      4. Text component
      5. Fragments
      6. Filtering
      7. Component indexing
      8. Visual editor
    8. Page templates
    1. Sandboxes
    2. Code
    3. Building
    4. Configuration
    1. Globals
    2. HTTP
    3. Controllers
    4. Filters
    5. Events
    6. Websocket
    7. Error handler
    8. ID provider
    9. Tasks
    10. Localization
    11. Mappings
    12. Components
    13. Processors
    14. Contributions
    15. Templating
    16. Main controller
    17. Java bridge
      1. Webapp Engine
        1. Image service
        2. Component service
      2. Admin Engine
      3. Asset service
      4. HTTP service
      5. IDprovider service
    1. Task engine
    2. Management Endpoint
    3. Statistics Endpoint
    1. Nodes and repos
    2. Properties
    3. Indexing
    4. Branches
    5. Queries (NoQL)
    6. Queries (DSL)
    7. Filters
    8. Aggregations
    9. Highlighting
    10. Editors
    1. Strategies
    2. Distributions
    3. Docker image
    4. Vhosts
    5. Configuration
    6. Backup & restore
    7. Systemd
    8. Clustering
    1. Admin API
    2. Application API
    3. Auditlog API
    4. Authentication API
    5. Cluster API
    6. Common API
    7. Content API
    8. Context API
    9. Event API
    10. Export API
    11. Grid API
    12. I18N API
    13. IO API
    14. Mail API
    15. Node API
    16. Portal API
    17. Project API
    18. Repo API
    19. Scheduler API
    20. Schema API
    21. Tasks API
    22. Value API
    23. VHost API
    24. Websocket API
  2. Audit Logs
    1. Upgrade Notes
    2. Upgrading Apps

XP Runtime

Contents

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 JVM, and a series of open source 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 JVM, 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

Contents

AI-powered search

Juke AI