# Oracle JET: a component toolkit aimed at Oracle Cloud front ends

> Oracle JET is a modular JavaScript toolkit of open source and Oracle-contributed libraries, with a CLI that scaffolds a single page application, a common model layer with two-way binding, routing, and a component set with accessibility and 28 languages of internationalisation. It suits teams building client applications against Oracle Cloud services, and it is closed to outside contributions.

**oracle/oraclejet** — Oracle JET is a modular JavaScript Extension Toolkit for developers working on client-side applications.

- Repository: https://github.com/oracle/oraclejet
- Website: https://oracle.com/jet
- Stars: 537 · Forks: 114
- Language: Unknown
- License: NOASSERTION
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/oracle-oraclejet

## A toolkit scoped to Oracle products, not to the web at large

Oracle JET is described as a modular JavaScript Extension Toolkit for developers working on client-side applications, and the README says it is targeted at intermediate to advanced JavaScript developers.

The scoping sentence in the README is the one to read carefully. JET is a collection of open source JavaScript libraries along with a set of Oracle contributed JavaScript libraries, and the stated purpose is to make it as simple and efficient as possible to build applications that consume and interact with Oracle products and services, especially Oracle Cloud services.

That is a narrower goal than a general purpose UI framework, and it explains most of the design decisions. The component set, the routing, the model layer and the internationalisation support are all shaped by the requirements of enterprise applications sitting in front of Oracle back ends, and the assumption is a developer who already knows the JavaScript ecosystem rather than someone arriving from a no-code tool.

The project is maintained by Oracle Corp, and the features list gives the shape of the offering: a complete JavaScript development toolkit, use of popular open-source technologies, full lifecycle management for template based single page applications, built in accessibility support, support for internationalisation across 28 languages and 160 or more locales, a rich set of UI components, advanced two-way binding with a common model layer, a routing system supporting single page application navigation, and smart resource management.

The example sources are the Oracle JET website, the Oracle JET Cookbook with live code demos for every component, and a set of sample applications and tutorials.

## Scaffolding an app with the ojet CLI

The installation path is a global npm package that provides a project scaffolding command. Oracle JET provides a command-line interface to help scaffold up your applications, and to install and build a blank app the README gives:

```bash
npm install -g @oracle/ojet-cli

ojet create <app name>
```

Two things are worth noting. The CLI is a separate package, `@oracle/ojet-cli`, from the toolkit itself, which is `@oracle/oraclejet`. That split is deliberate and useful: the generator is a build-time tool you install once on a developer machine, while the toolkit is a runtime dependency of the application you generate. It also means the CLI can be upgraded without touching the application.

The second is the naming convention. The generated project is not a hand-written application that you then fill in. The features list calls it full lifecycle management for template based SPA, which means the tool owns the project structure, the build pipeline and the wiring, and the developer adds their own components into a layout the tool has already set up. That is a different relationship with your build tooling from writing a webpack or Vite config yourself.

For complete installation details, including prerequisites, the README points to the Oracle JET Developer Guide. The prerequisites matter and are not in the README itself, so they are the first thing to check on a fresh machine, particularly the Node version the toolchain expects.

## What the dependency list says about the architecture

The `package.json` for the toolkit is short and it explains a great deal about how JET is built.

The published package is `@oracle/oraclejet` at version 21.0.0, licensed UPL-1.0. Its dependencies include `jquery` at 4.0.0 and `jquery-ui` at 1.14.2, `knockout` at 3.5.3 and `signals` at 1.0.0, `hammerjs` at 2.0.8, `preact` at 10.29.1 alongside the Oracle-contributed `@oracle/oraclejet-preact` at the matching version, `requirejs` at 2.3.8 with `requirejs-text` and `require-css`, and `@babel/parser` at 7.26.7.

So the architecture is a Knockout-and-jQuery core, with a Preact-based alternative shipped as an Oracle-contributed package, and RequireJS for module loading. The `signals` package and the `@types/signals` and `@types/geojson` type packages show that the toolkit leans on the Knockout signals pattern for reactivity and carries its own type declarations.

The two-way binding with a common model layer mentioned in the features list is what the Knockout dependency is for. The presence of both `knockout` and `preact` in the same dependency list is unusual and points to a toolkit that supports more than one view layer, which is consistent with the claim of being modular.

The `files` array shows what the npm package actually contains: `dist`, `CONTRIBUTING.md`, `THIRDPARTYLICENSE.txt` and `SECURITY.md`. The `dist` directory is the built output, and the type declarations are resolved through `typesVersions` into `./dist/types/*/index.d.ts`, so the type definitions travel with the published bundle rather than being generated separately.

## UPL-1.0, a CLA, and a project that does not take outside patches

Three separate things in the repository deserve to be read rather than skimmed, because they determine what you can do with this code.

First, the licence. The README says the code is Copyright (c) 2026 Oracle and/or its affiliates and released under the Universal Permissive License, Version 1.0, and the package metadata records `UPL-1.0`. The project listing records the licence as a custom one that GitHub cannot classify and points to the LICENSE file. The Universal Permissive License is a short, permissive licence that grants broad rights to use, modify and redistribute while requiring that the copyright notice and the licence text travel with the work, and it includes an express patent grant. The practical effect is close to MIT, but it is not MIT, and the file in the repository is the version that governs. This is a description of the terms as published rather than legal advice.

Second, `CONTRIBUTING.md` sits at the top of the tree, and `THIRDPARTYLICENSE.txt` sits beside it. The second file records the licences of the third-party components that ship in the distribution, which matters because the toolkit bundles Knockout, jQuery, RequireJS and others rather than merely depending on them at build time.

Third, the contribution policy. The README says plainly that this project is not accepting external contributions at this time. For bugs or enhancement requests, file a GitHub issue, unless it is security related, and for security vulnerabilities do not raise a GitHub issue but follow the instructions in the security policy in `SECURITY.md`.

That combination, a permissive licence, a contributor agreement, and a closed contribution window, is a familiar shape for a vendor-maintained open source project. For a team that wants to file a patch upstream, the honest answer from this repository is that the patch has to go through Oracle's own process.

## The release train moves on Oracle's schedule

The release history is dated and orderly. Version 21.0.0 was released on 2026-08-17, 20.1.0 on 2026-05-19 and 20.0.0 on 2026-02-16. The last push to the default branch was on 2026-08-17, the same day as the 21.0.0 release, and the repository is not archived.

The version numbers line up with a calendar release cadence. Three releases across 2026, with the major version changing twice, is a pattern that suggests a scheduled train rather than a response to demand, and that is a reasonable read for a toolkit that has to stay aligned with Oracle Cloud services and with browser support decisions that Oracle makes centrally.

For an adopter, the practical question is what a major version means here. The package name does not change, so the import path stays the same, and the type definitions continue to resolve from the `dist/types` directory. What you should expect from a major bump is dependency movement, since the dependency list is where most of the change lands between releases, and a toolkit that upgrades jQuery or Knockout under you can change behaviour in ways the release notes would have to explain.

The homepage is oracle.com/jet, the full Developers Guide is linked from the README, and the related projects on GitHub are gathered under the `oracle-jet` topic for the Oracle organisation.

## Where Oracle JET is the wrong choice

The first wrong-tool case is an application with no Oracle dependency. The dependency set carries Knockout 3.5.3, jQuery 4.0.0, jQuery UI 1.14.2, RequireJS 2.3.8 and HammerJS 2.0.8. If your application does not talk to Oracle Cloud, those are dependencies you are taking on for a component library, and the current mainstream of the JavaScript ecosystem has moved a long way from a Knockout and jQuery UI world.

The second is a team that wants a modern component framework. JET's own value is the combination of a model layer with two-way binding, a router, and a component set that meets accessibility requirements in an enterprise context. If what you need is a modern reactive view layer with a large ecosystem of community components, then a Preact, React or Vue based choice is a different bet with a much larger pool of third-party components.

The third is a project that needs to contribute upstream. The README states that external contributions are not accepted at this time, so a bug you find is a bug you either work around, patch locally, or wait for Oracle. That is workable for a stable internal application and painful for a product team that intends to shape the toolkit.

The fourth is a project that has to be self-contained for licensing review. The distribution bundles third-party code, which is why `THIRDPARTYLICENSE.txt` exists, and a legal review of an enterprise deployment therefore has to consider the bundled licences rather than only UPL-1.0.

The alternative worth naming is building on the components JET already depends on. A Knockout and jQuery UI application, or a Preact application with a modern routing and state layer, gives you the same two-way binding and component ideas without Oracle's template, build pipeline and release train, and without a vendor deciding when your framework moves. The difference in approach is that JET is a complete application shell tuned for Oracle back ends, and the alternative is a set of libraries you assemble and own.

## Conclusion

Adopt Oracle JET when the application you are building talks to Oracle Cloud services and you want a component set, model layer and router that Oracle supports alongside those products, since the toolkit is maintained by Oracle for exactly that purpose. Do not adopt it for a general web application with no Oracle dependency, because the dependency set carries Knockout, jQuery, RequireJS and HammerJS, and the current release train moves on Oracle's schedule rather than the ecosystem's. Before you start, read the `LICENSE.txt` file, because the project uses the Universal Permissive License version 1.0 rather than a standard open source licence, check the `dist/` directory to see exactly which files ship in the npm package, and confirm that the Contributor License Agreement in `CONTRIBUTING.md` suits your organisation, since external contributions are not currently accepted.

## FAQ

### What is Oracle JET and who is it for?

Oracle JET is a modular JavaScript toolkit of open source and Oracle contributed libraries, targeted at intermediate to advanced JavaScript developers building client-side applications that consume Oracle products and services, especially Oracle Cloud services. It is maintained by Oracle Corp and includes a CLI, components, routing, a model layer and internationalisation for 28 languages and 160 or more locales.

### How do I install Oracle JET and scaffold a new application?

Install the command line interface globally with `npm install -g @oracle/ojet-cli`, then run `ojet create <app name>` to generate a blank application. The README points to the Oracle JET Developer Guide for complete installation details, including prerequisites.

### Which libraries does the Oracle JET npm package depend on?

The `package.json` lists `@babel/parser`, `@oracle/oraclejet-preact`, `hammerjs`, `jquery` at 4.0.0, `jquery-ui`, `signals`, `knockout` at 3.5.3, `requirejs`, `requirejs-text`, `preact` at 10.29.1, `require-css` and type packages for signals and geojson. The published `files` array ships only the `dist` directory and a few documentation files.

### What licence is Oracle JET released under?

The code is Copyright (c) 2026 Oracle and/or its affiliates and is released under the Universal Permissive License, Version 1.0, with the package metadata recording `UPL-1.0`. The repository also carries a `THIRDPARTYLICENSE.txt` file for the bundled third-party components.

### Can I contribute to Oracle JET?

Not at the moment. The README states that this project is not accepting external contributions at this time, and asks that bugs and enhancement requests be filed as GitHub issues unless they are security related, in which case the security policy in `SECURITY.md` applies instead.

## Sources

- [Issues](https://github.com/oracle/oraclejet/issues)
- [oracle/oraclejet on GitHub](https://github.com/oracle/oraclejet)
- [Project website](https://oracle.com/jet)
- [README](https://github.com/oracle/oraclejet/blob/master/README.md)
- [Releases](https://github.com/oracle/oraclejet/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/oracle-oraclejet
