8 Replies Latest reply on Jul 24, 2016 6:38 PM by John 'JB' Brock-Oracle

    What are main differences between Oracle Jet and Angular.js or React.js? Which is most efficient, flexible and has a lot of built-in modules?

    hokerZ

      As the title says, what they are?

      Both in terms of flexibility, built-in features/modules (like handling ajax requests, form validations, web-security) and ease of writing custom modules?

       

      I'm currently in a team, working on some ecommerce site (online fast-food ordering) and the site uses only jquery, twitter bootstrap and some plugins (i.e. for form validation, showing tooltips, popups and modals) and a lot of custom code on frontend, while Java on backend.

       

      OJ description I read on this forum suggests it's designed mainly for Oracle stack.

      So should I feel discouraged of using OJ in environment which ins't 100% Oracle stack?

       

      While project is online already and works quite good, it's still in heavy development. We plan on adding new features also and decided that current frontend stack is becoming bloated and hard in maintenance.

      We use a lot of jquery plugins which aren't in development by their authors already, but we still rely on them.

       

      The worst solution we thought about, is to just refactor current js modules, and update or change plugins.

       

      But what we strive for is migration toward one and only js framework, which could handle all of stuff zillions of plugins we use now are handling now.

       

      So proper form validation (in real-time) for date, time, credit card numbers, phone numbers, country-codes, emails .etc, web-security (anti-xss and csrf .etc), polyfills if needed, handling ajax requests and content loading, creating custom tooltips, modals and popups, elements (accelerated) animations like carousels and sliders, typeaheads, html5 api wrappers if needed, interactive maps with geolocation and geotagging, interactive control panel dashboards, contacts forms, html templating like in mustache.js - basically a lot of stuff.

       

      I already saw that OJ has built-in [url=Validators - Custom Validator]form validation[/url] but is it better comparing to i.e. [url=https://jqueryvalidation.org/]jQuery Validation[/url] plugin?

       

      App built on top of a framework we need, should be quite easy in refactoring, manual and automatic testing by human tester and allow us to incorporate TDD in webapps.

       

      It's a must for a framework we'll use to be fully open source, customizable, modular and free of charge without any future incompatibilities in usage license - we'll use this stuff in commercial product.

       

      I heard a lot of good things about both Angular and React but still don't know a thing about OJ.

       

      Could someone point me, please, to answers to my problem? Is OJ good choice as a solution to my team's problems?

       

      Thank you!

        • 1. Re: What are main differences between Oracle Jet and Angular.js or React.js? Which is most efficient, flexible and has a lot of built-in modules?
          Jim.Marion-Oracle

          I vote for Oracle JET

           

          Oracle JET is very modular, meaning you can use as much or as little as you like. This stands in stark contrast to Angular, which has everything EXCEPT the UI layer (unless you go with something like angular-material). When I switched from Angular to Oracle JET, I slowly eased into the "pool." I started with just Knockout, RequireJS, and Bootstrap. I then began mixing Oracle JET components with my project. At some point, I dropped bootstrap in favor of the "Alta" skin and then switched from knockout "component" to ojModule. I like the fact that Oracle JET is so modular. I can choose to use ojRouter, or I can use Crossroads/hasher. I can choose to use ojModule or I can use ko.components. If I don't want to use knockout at all (and I would never choose this), I could use Oracle JET components as pure jQuery plugins.

           

          Oracle stack: Yes, Oracle JET includes "sugar" that works well with Oracle back-end products. For example, there are Ajax methods that work very well with Oracle REST. Likewise, the default UI is designed with Oracle Alta in mind. There may be more, but let me say, I use Oracle JET all the time without anything that is specifically Oracle (except Oracle JET). For example, when fetching data, I find that I use the HTML5 fetch (with a polyfill for older browsers) more than anything else (because I like fetch over $.ajax).

           

          License: https://github.com/oracle/oraclejet/blob/master/LICENSE.md. Universal Permissive License.

           

          One of the biggest selling points for Oracle JET is localization and accessibility. These are VERY important to Oracle, and we believe we have the most accessibility compliance and the best localization of any toolkit available. You can find more information here:

           

           

          Refactoring: I find Oracle JET applications to be easy to refactor. I would not say this is because it is an Oracle JET project, but rather because Oracle JET chose to use RequireJS with AMD-style modules. This modular approach lends itself well to refactoring.

           

          I have to agree with you in regards to validation. Oracle JET validation is very compelling, in fact one of my favorite features. I really like the invalidComponentTracker option which lets me confirm validation of all fields using one observable. Tied to that are the Converters. I used to use moment.js and other libraries to perform date and number conversions. I now just use the date and number converters that are built into Oracle JET. Because of their localization support, I don't have to figure out the user's Locale. Jet does that for me. I just have to use common named formats.

           

          There is so much more to praise in Oracle JET. For example, we haven't even talked about data visualization, layout, or responsive design.

          • 2. Re: What are main differences between Oracle Jet and Angular.js or React.js? Which is most efficient, flexible and has a lot of built-in modules?
            hokerZ

            There is so much more to praise in Oracle JET. For example, we haven't even talked about data visualization, layout, or responsive design.

             

            But we can. What superb features OJ has to support layout or RWD over Angular or React?

            Does it has some native support for frontend crossbrowser compatibility?

             

            What about it's performance regarding DOM rendering, traversal .etc?

            I heard Angular.js does a lot of job on DOM, so it's causes browser to do more work. On mobile browsers it's the reason of mobile device's faster battery draining.

            While React.js, uses such abstraction as VirtualDom, which speeds-up DOM manipulations, event handling .etc. Does Oracle Jet offers something similar?

            • 3. Re: What are main differences between Oracle Jet and Angular.js or React.js? Which is most efficient, flexible and has a lot of built-in modules?
              Jim.Marion-Oracle

              I was not aware that AngularJS had ANYTHING in regards to layout or responsive web design. I'm pretty sure appearance is the only area AngularJS does not touch, letting the developer choose bootstrap or Material Design, etc.

              • 4. Re: What are main differences between Oracle Jet and Angular.js or React.js? Which is most efficient, flexible and has a lot of built-in modules?
                hokerZ

                And what about OJ performance regarding DOM manipulations, comparing to Angular (both v.1 and v.2) and latest React?

                I heard Angular 2 will have own offering of virtual DOM.

                 

                React has minimal core, that's why it's small in size, but additional functionalities should be custom coded or imported as 3rd party libraries, which rather puts my team into datum again - we're using currently jQuery, custom js code and some 3rd party libraries.

                 

                On the other hand, Angular an Oracle Jet got built-in methods for dom manipulations, validation, web security .etc but are they really fast and efficient, to be considered light-weight?

                 

                Solution I'm looking for is single js library or framework, which has a lot of mentioned by me above modules that are fast and efficient (like virtual Dom), customizable (i.e. custom styled form validations messages or tooltips or popups), that are easy to include or exclude allowing me to create unbloated code and will stay in active development in contrast to 3rd party libs created by hobbyists.

                 

                Considering that, currently my choice pool seems to be shrunked to Angular or Oracle Jet.

                 

                So which is better?

                • 5. Re: What are main differences between Oracle Jet and Angular.js or React.js? Which is most efficient, flexible and has a lot of built-in modules?
                  Jim.Marion-Oracle

                  I'm not sure anyone on the forum can tell you which one is best for you. What may be right for one project, might not be the best answer for another project. Lots of variables to consider. I can tell you that if you want to compare the data binding/DOM architecture between these frameworks, you should look at React, AngularJS, and KnockoutJS. Knockout provides Oracle JET's data binding and (most of the) DOM manipulation.

                   

                  If your primary consideration is dependency management, then I would think the answer is Oracle JET because it is quite complete.

                  • 6. Re: What are main differences between Oracle Jet and Angular.js or React.js? Which is most efficient, flexible and has a lot of built-in modules?
                    hokerZ

                    I tried to find any extensive comparisons between Oracle JET, Angular (both v.1 and v.2) and React in regards to speed and performance of DOM manipulations and data binding, but it looks like there aren't any, only Angular & React duo everywhere.

                    I know OJ isn't as popular as these two, but could Oracle make some tests and publish them on OJ's blog?

                     

                    What concers me is question if OJ can do things faster and more efficient than Angular v.2 or React, while not using any alternative to VirtualDOM abstraction, that the two latter are using?

                    • 7. Re: What are main differences between Oracle Jet and Angular.js or React.js? Which is most efficient, flexible and has a lot of built-in modules?
                      Jim.Marion-Oracle

                      OJ has the most built-in modules.

                       

                      To compare performance, look for knockout vs angular vs react. There are lots of those comparisons.

                      • 8. Re: What are main differences between Oracle Jet and Angular.js or React.js? Which is most efficient, flexible and has a lot of built-in modules?
                        John 'JB' Brock-Oracle

                        As the product manager for Oracle JET my opinion will obviously be considered slightly biased, but to be very honest, Oracle JET was never created to directly compete against Angular or React.  It holds up just fine in real world applications and we believe we've created something that will be useful to a lot of developers that are faced with the same problems that we were faced with when we first started writing it.

                         

                        Those specific issues are:

                         

                        • The need to make adjustments to the rapidly changing JavaScript ecosystem without having to be locked into a prescriptive framework.
                        • Better Accessibility in all UI components.
                        • Better Internationalization support
                        • The ability to work on large applications with a separation between view and controller/view model layers.
                        • Mobile support for UI components out of the box

                         

                        What separates Oracle JET in this regards, is that we looked for individual JavaScript libraries that best delivered a small and specific feature, and then worked on making sure those different libraries worked well together.  Oracle added functionality in the areas that we felt out own teams would need, or that we thought we could do a little better over what was already out there.  We really mean it when we call JET a toolkit, not a framework.  We try to provide the atomic pieces that developers can then use to build the larger app.

                         

                        I'm a true believer in right tool, right job.  If you have a skilled Angular development team, go with Angular.  Same for React.

                         

                        As for specific performance comparisons.  A completely subjective topic no matter how you try to deliver the comparison.  The most popular comparison out there today is this site that compares the rendering of 1000 input fields and tells you which framework is fastest.  Angular, React, Knockout, Ember, etc.  While this is the most often pointed to, it's a complete farce in my opinion.  If you have 1000 input fields on a single page of your application, you should be firing your UX designer first and then worry about the performance what is being written.  If comparing one feature (foreach loops) of a framework is taken as a true measure of the overall performance.... well you get my point.

                         

                        While Knockout is the default templating engine that is used by JET, we have plenty of teams doing other things as well.  Dust, Handlebars, underscore, etc.  Again, it's a modular toolkit that allows you to use as little or as much as you like.  We have internal teams writing JET apps with Typescript as well (should have blog about that pretty soon)

                         

                        One other comparison that I will point out in regard to your last sentence:

                         

                        "What concers me is question if OJ can do things faster and more efficient than Angular v.2 or React, while not using any alternative to VirtualDOM abstraction, that the two latter are using?"

                         

                        JET is what is often referred to as an HTML forward development paradigm.  We promote and use the HTML5 specifications.  While React is a JavaScript forward development paradigm.  I prefer the HTML approach personally and I believe it provides a much great ability for teams to separate their work.  I can hire out a design job to any design shop that will return my UI in true HTML and CSS.  I can then tie in the business logic.  Try and do that with a React application.

                        Angular is a similar issue in that you have to design and write your app "the Angular way".  Much less so than React, and much less so with Angular 2 than 1.x does, but it still takes a while to learn that Angular way of writing applications.

                         

                        Like I said before, right tool, right job.  I'm never going to try and sell someone to use Oracle JET over Angular or React if that is what they would rather use.  They are both great frameworks with their positives and negatives. I personally believe that Oracle JET is more flexible and less prescriptive than either of them, but as I said at the beginning of this, I am biased. :-)

                         

                        Hope that helps out some.

                         

                        --jb