X

Shay Shmeltzer's Oracle Development Tools Tips

Oracle ADF or Oracle JET - An Update

Shay Shmeltzer
Director of Product Management - Oracle

Back in 2015 I wrote a blog entry to help our customers get a clear picture about the Oracle ADF vs Oracle JET "debate", over the years I kept pointing people to this writeup as a simple summary of what we are aiming to do and as a guideline for picking the technology you should use. However, the technology world is an ever changing place, and I believe that it is time to do a bit of an update of that entry to reflect the current status.

While the basic distinctions between the two technologies have not changed, specifically: 

  • ADF for Java developer, JET for JavaScript developer
  • ADF is server side framework, JET is client side focused
  • ADF is both front and back-end framework, JET is UI layer only

Some of the surrounding eco-system has changed and evolved.

Client-Centric Architecture Momentum

Over the past several years we saw an increase in the adoption of UI development that is focused around JavaScript-based client layer. This is something you can see for example in the results from the Stackoverflow yearly survey - back in 2016 JavaScript was used by 54% of developers and in 2018 the number stood at ~70%

Today, most of the new projects that we see being developed will pick up a JavaScript based UI layer as their solution for front end development. The adoption of this JS/HTML UI is not limited to web apps, many mobile apps also leverage the architecture to create mobile optimized UIs deployed on devices using either a hybrid or a Progressive Web Application (PWA) architecture. Development organizations like the fact that a client-centric JavaScript/HTML architecture allows them to use a single set of skills to support multi-channel apps. 

Back in 2015 many of the Oracle PaaS services were already leveraging this architecture along with Oracle JET - Oracle's Toolkit for building JavaScript based UIs. Today this trend started to extend to Oracle SaaS - Oracle's cloud apps offering. Several of the modules in Oracle SaaS have introduced UIs built with Oracle JET - leveraging its capabilities to create engaging and dynamic user interfaces. In the coming years you are going to see more and more modules offering new UIs based on Orale JET. This is a transition for Oracle's SaaS org from server-side generation UI to a client centric architecture. 

In parallel Oracle JET also added a bunch of capabilities targeting mobile specific scenarios including the ability to render the components to look like native controls on both iOS and Android, the ability to package apps as hybrid mobile apps, and support for offline usage patterns. All those capabilities are further pushing the usage of Oracle JET at Oracle as the UI layer for the various mobile apps we deliver.

One thing to keep in mind, since JET only provides the UI layer, there is still a need to build the backend of the application. This backend will handle data access and business logic - and it will then expose REST services that will be consumed by the JET UI. The existing backend layer for the Oracle SaaS apps was developed with Oracle ADF Business Components, and now they are able to leverage the investment they already did in that layer and expose these components through REST services. This way they get to keep the complex logic already implemented in that layer and just create a new modernized UI layer. 

If you track down the "what's new" document for the versions of ADF that we released since 2015 you'll see that enhancing the out-of-the-box functionality we provide around REST enablement has been a focus area for us. As a result of this effort, when you are exposing ADF BC as REST you get capabilities such as pagination, query by example, dynamic sorting, relationship management, and more built-into the services you expose.

This approach is something that ADF customers should consider if they decide to adopt the trend of new UIs being built with JavaScript based toolkit. Regardless of the UI framework that you'll choose, remember that the investment you made in the ADF backend can still be leveraged easily.

Better Tooling

One of the other difference I quoted between ADF and JET was the development experience. ADF was focused on providing a more visual and declarative approach to Java developers, while JET had you use code editors to manually write your code.

This is another thing that changed since 2015. Oracle now offers a development platform for JET applications that is focused on a more visual way of building the app - this is Oracle Visual Builder Cloud Service. If you haven't seen a demo before - take 10 minutes and watch this video as an example. As you can see, Visual Builder provides a WYSIWYG UI design, action flow diagrams for business logic, page flow diagrams, property inspectors and more. All this while still allowing you to directly access the code when needed for direct manipulation. 

Visual Development with VBCS

Image 1 - Visual Oracle JET Development in Oracle Visual Builder (Components, Structure Pane, Visual Layout Editor, Property Inspector)

With this environment you can become much more productive building UIs that leverage the power of Oracle JET. Note that Visual Builder is not just about simplifying the layout of your pages, it is also simplifying how you work with variables, binding and business logic - reducing the amount of coding you need to do.

Visual Builder also simplifies the learning curve for people who are new to JavaScript development - making the transition to this new technology smoother. Our SaaS teams have also decided to leverage VB to help them deliver new generations of UI faster.

For customers who already have ADF based applications, another appealing aspect of VB is its ability to understand the structure of ADF BC based REST services and the functionality they provide. Check out this demo to see how you can quickly use Visual Builder to build a JET based mobile app on top of ADF BC REST backend in a declarative way.

A little side note - beyond the ability of VB to create UIs, you can also use it to quickly create tables in a database and business objects (including business logic) on top of them that are exposed as REST services. The technology that drives that layer of VB is based on the same ADF Business Components - another thing that will be of course familiar to ADF developers if they decide to pick up Visual Builder.

Summary

So what should you do if you are an Oracle ADF customer today? As always the answer is "it depends" :-)

The first thing to think about is - "Does Oracle ADF answers my needs and does the application I built with it work as expected?" - assuming that the answer to both is positive, then you can continue as you were.

If, however, there are technical or architectural needs where your existing ADF app doesn't provide the answers you need (for example on the UI side or the mobile device support needs), looking at Oracle JET and Visual Builder is definitely something you should do. Also if you are about to embark on a new project, you might want to consider if a new client-centric architecture for the UI layer is something you can benefit from, and if you think it is - again try out JET and VB and see how you like them. In both cases remember that you can leverage your existing investments in the business objects layer and expose it as REST services to be consumed by new UIs. In fact you can have the two apps running in parallel.

JET and ADF side by side

Image 2- JET based architecture (MVVM) compared to ADF Architecture (MVC) - sharing business services

One more note, many developers like to keep their skills fresh and learn new things, if you are an Oracle ADF developer, I think that picking up Visual Builder and playing with it can get you on the road to learning new JavaScript skills quite quickly while still keeping you in a fun friendly visual cloud IDE - give it a try.

 

Join the discussion

Comments ( 8 )
  • ADF Developer Tuesday, March 12, 2019
    Dear shay,
    You are just awesome and keep doing the good work.
    I just wanted to know the no.of different ways to integrate ADF with Oracle Jet.As of now,i only know the one way which is,
    i)Exposing the ADF BC as Rest Service to Oracle Jet.

    As i am Adf developer, I am only interested in learning the ADF side of Oracle Jet.Can you please provide the links to resources.
  • Shay Tuesday, March 12, 2019
    The main recommended way to do the integration is with an ADF backend and JET front end.
    That being said, we know of customers who are also mixing in JET components in their ADF UI - leveraging ADF Faces's JavaScript APIs. You can find some sample blogs about it here:
    https://pinboard.in/search/u:OracleADF?query=JET
  • ADF Developer Wednesday, March 13, 2019
    Hi Shay,

    Thanks for the instant reply.

    As you mentioned "The main recommended way to do the integration is with an ADF backend and JET front end",can we achieve this only by using Oracle Visual Builder for UI development?

    Is there any other way to achieve this ,like by using Command Line Tooling?
    If yes,please provide links to the resources.

    Thank you once again.
  • Shay Shmeltzer Wednesday, March 13, 2019
    You don't have to use Visual Builder - you can just code in JET directly and in that case consuming ADF REST Services would be done just like you would for any other random REST service.
    Here is a quick intro to producing REST services from ADF - https://blogs.oracle.com/shay/rest-based-crud-with-oracle-adf-business-components
    And there are many examples of how to consume ADF REST in JET here:
    https://pinboard.in/search/u:OracleADF?query=Business_Components+REST+JET
  • Amir Wednesday, June 26, 2019
    Hi Shay,

    can you clarify in which Oracle Jdev version the ADFBC Rest has the most robust (bug free/ less bug) to be used?

    12.2.1.1
    12.2.1.2
    12.2.1.3

    it seems the orgin version (without patch) has some little bugs..

    Thanks
    Amir
  • shay shmeltzer Wednesday, June 26, 2019
    Amir - in general the higher the version the more features and better stability you get.
  • pettireddish Monday, July 22, 2019
    Hi Shay,

    Thank you for this space of communication.

    I'm a Java, Spring, Hibernate Developer(Java Back-end but not ADF Developer) & I have learnt to build UI components using Oracle JET. Can you let me know how to integrate these 2 components to make my work a full fledged Web Application.

    If you have any sources, it would be of much help.

    Appreciate your constant help with this topics.
  • Shay Shmeltzer Monday, July 22, 2019
    pettireddish - All you need to do is expose your Spring data access layer as REST services - and then leverage that in JET as a data source.
    I'm no Spring expert but this seems quite easy with this: https://docs.spring.io/spring-data/rest/docs/current/reference/html/#intro-chapter
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.