Page Summary
On this page we introduce the core JADE concepts and platform components. This page endeavaors to build the mental model for how JADE works while emphasizing key design principles.
Conceptual Introduction
JADE is a platform for quickly developing, distributing, & deploying robust test, measurement, control, and automation applications. At its heart, JADE applications are comprised of independent, configurable, communicating components which we call Plugins
. Think of plugins as higher level building blocks with which to compose applications. Plugins are not simply configurable in the traditional sense; they support variables, expressions, functions, and other programming constructs. Plugin configurations
are JSON (JavaScript Object Notation): a standard, structured, extensible, human-readable data format. Sixclear provides many highly-configurable general purpose plugins covering a broad space of applications and, of course, you can create your own plugins in LabVIEW
using the JADE DEVKIT. JADE also supports the integration of Python
and MATLAB
.
To illustrate the mental model described above, the graphic below shows an abstract depiction of a JADE application: a supervisory component along with a collection of communicating, configurable plugins.

JADE Ecosystem Overview
JADE serves as both the development environment and deployment / runtime environment. That is, you may develop JADE applications and run them immediately on the same machine, or simply move a lightweight application file to be run on any other JADE installation. We call these application files JADA
files (short for JADE Application and they use a .jada
extension). To run an application, JADE needs the plugins used by the application to be installed. With that in mind, JADE also provides a packaging mechanism in order to move and install any plugins necessary to run your applications - right in JADE. In fact, these packages can also include dependencies needed by the plugins (ex. NI-DAQmx, NI-VISA). We call these packages JADE Bundles
. JADE Bundles
can be generated using the JADE Online Bundler under login at sixclear.com and locally using the JADE Install Manager.
Generally, new plugins (and other assets such as dependencies) are released and available for packaging and download online using JADE’s Online Bundler. With one or more bundles installed in JADE, your system will have assets such as plugins, dependencies, DEVKITs, SDKs, and examples. You can then create bundles offline right in JADE using the Install Manager
which combine any of those assets along with any custom plugins you may have written. A later release will allow users to push / upload their custom plugins (and administer privileges / access rights for other users) for distribution online just like the Sixclear plugins are avaialable today.
The graphic below shows how the major JADE components fit together to deliver a development, distribution, and deployment platform.

JADE Applications
JADE applications are essentially collections of plugin configurations stored as files with extension .jada
. We call them JADA
files (short for JADE Application files). It’s important to emphasize that JADE applications store plugin configurations instead of plugins themselves so that JADE applications remain lightweight and easily transferable (typically only 10s-100s of KB). JADA
files are also encrypted as a first line of defense against theoretical tampering during distribution. JADE applications are created and composed in the JADE Manager, which facilitates adding, editing, and removing plugin instances from a given JADA
file.
The screenshot below shows the JADE Manager
with several plugin instances configured.

JADE Manager
is also where you launch applications using the Application > Run Application
menu item (or the keyboard shortcut CTRL + R
). When an application runs, an instance of JADE Supervisor is spawned. JADE Supervisor
serves as a bird’s eye view of all plugin instances in the application, displaying their running statuses and providing control over plugins, such as starting and stopping plugins or showing and hiding plugin interfaces.
The screenshot below shows the JADE Supervisor
running an application.

JADE Plugin Configurations
A given plugin’s configuration is effectively a description of how the plugin should behave. Plugin instances are configured in JADE Editor intances. JADE Editor instances are modern editors with all of the features expected for professional development including type-ahead, syntax highlighting, syntax validation, hover help, code folding, and much more. As noted above, plugin configurations are just standard JSON with optional comments. Since JSON is inherently text-based, this conveniently facilitates copy/paste, search, formatting, and human readability. As previously alluded, in many cases plugin configurations allow for the use of variables (data supplied to the plugin) and expressions (standard arithmetic expressions, hundreds of provided functions, and even type declaration syntax).
The screenshot below shows a JADE Editor
instance.

Plugin instance configurations define not only the behavior of plugin instances but also if/how they communicates with one another. For example, a data table plugin or graphing / charting plugin may subscribe to other plugins to consume, compute against, and display data. With that in mind, notice in the screenshot above the subscribesTo
element at the top of the JSON object which encodes subscriptions (more technically, it encodes the plugin instance names corresponding to the plugin instances to which this plugin instance subscribes). In such cases, the ability to compute against incoming data before displaying is always supported. And of course, as noted above, plugin configurations generally allow for dynamic behavior by way of variables, expressions, functions, and other programming constructs. We will see much more about this later in documentation.
Bringing It All Together & Next Steps
What we’ve covered so far is a brief overview of the major JADE components and how they fit together. There’s much more to say about JADE and what’s possible, all of which we’ll cover in detail. But for now, if you have a general idea for what plugins and JADE applications are, you’re in an excellent place to take the next step.