U8 (V8-based execution environment)


 Github: UniversaBlockchain/U8

Overview

JavaScript + C++ Universa Node/codebase runtime environment implementation using V8 JavaScript engine.

Rationale

Since September 2018, Oracle has announced the licensing changes in Oracle JDK/OpenJDK. Summarizing them in short:

  • If you are using Oracle JDK for any commercial/production (non-development) activity, you'll need a commercial license since day 1.
  • If you are using OpenJDK (which is essentially equal to Oracle JDK in most development aspects), you'll continue to receive support and security updates for it, though Oracle will provide it only to the latest OpenJDK release.
    • The typical release cycle for latest OpenJDK is one release per 6 months.

This ultimately means, that, to use any upstream Oracle-maintained JDK in production (and be sure it receives all up-to-date security update – what is a necessity for production usage), the users either have to purchase a commercial license; or use a free OpenJDK but necessarily upgrade to every new major release (and ensure all the software supports every new major release).

This adds unnecessary risks to any involved developments – including Universa project, where the main node codebase and the primary API is Java-based.

This is how the U8 project was born – to get rid of dependency on Oracle licensing and run the existing Universa-specific logic (a plenty of which is written on JavaScript) using the more permissively licensed environments.

Also it effectively separates multiple aspects of codebase development:

  • Performance-critical and networking code performed in C++ code layer;
  • Dynamic memory allocation/reallocation performed at V8 JavaScript engine (known to have rather effective memory management);
  • Less time-critical business logic implemented in JavaScript, and auto-optimized using the V8 optimization means.

The applications that may be running on U8 environment now or in future:

General information

U8 details