The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

ADF and Oracle JET – What’s the Story? by Shay Shmeltzer

One of the key announcement at Oracle OpenWorld 2015 was the release of Oracle JET – the Oracle JavaScript Extension Toolkit. We know that this might raise some questions among ADF developers, so we wanted to clarify the answers to some of the possible questions about the relationship between Oracle ADF and Oracle JET.

Why a new framework?

Java is the leading language in the industry today, and with Oracle ADF we have a great offering for developer looking to be more productive leveraging Java on the Oracle platform. But there are other languages in the market too, and JavaScript is quickly gaining popularity and by many accounts is the second most popular language today. JavaScript is very popular for front end development of web interfaces, and even inside Oracle we had product-development teams that were looking to leverage the advantages of JavaScript in their UI. However the JavaScript ecosystem was missing some capabilities that we require for our products (such as accessibility, internationalization, and other advanced technical aspects). We wanted to have a toolkit that will guarantee that developers inside Oracle who are going with this architecture of JavaScript/HTML/REST comply with our standards for product delivery – this is why we created JET – which initially was only targeted for internal use inside Oracle. (This by the way has been going on for three years now).

Over the past couple of years, we also started to hear from customers and partners who wanted to use JavaScript based UI development and were looking to see if Oracle can help them. We realized that JET can help our customers, especially if they are working on the Oracle platform and looking to leverage things like the Oracle Alta UI or REST services exposed from our SaaS applications. This is why we released JET publicly for our customers.

Should I be using JET or ADF for development?

You can answer this question in two ways.

One way is to ask what are the skills of the developers in your company. ADF and JET target completely different audiences. ADF is for Java developers, JET is for JavaScript developers. ADF is aiming to provide a declarative development approach while JET is staying true to the code-centric approach that JavaScript developers are used to. Also ADF is very easy to get started with even if you have no previous experience – go through the tutorial and you’ll be able to build a basic application. JET on the other hand is aimed at developers who are already experienced with JavaScript development – it’s not for the total rookie.

The other distinction is architecturally based, ADF is a Java EE framework running on the server and covering the full set of layers of your application. JET is a client side framework that takes care of UI and binding to REST services. Each of these architectures has its benefits and places were it will shine, so choose the right architecture for the implementation you are aiming to do.

Are those the only differences between the two?

While the two distinctions above are the main thing to consider, there are other aspects that you would want to look into.

For example, how do you feel about protection from technology shifts?

ADF does a great job of abstracting you from the underlying technology by using meta-data driven implementation. So as an ADF developer you were mostly oblivious to changes such as transition from JSF1 to JSF2, or from using Flash in rendering charts to using HTML5, or from exposing ADF BC as SOAP to exposing it as REST. These type of changes didn’t require you to re-write your app, and you were able to get your app upgraded to use the new technologies in a seamless way.

Oracle JET doesn’t offer that level of abstraction from the technology – you are actually directly coding at the technology level, and at that level things might change in the future. The JavaScript eco-system is still volatile and shifts do happen. When we designed JET we took this into account and put a lot of focus on building a modular architecture. This means that you could switch parts of the toolkit as needed. This also means that we can’t promise that you won’t need to re-write parts of your app if you’ll want to leverage new technologies when JET picks those up. Oracle JET’s modular approach aims to make it as painless as possible to adjust to future changes.

Here is a slide we used in OOW sessions that lists some other differences between the two framework.