After hearing from so many folks talking about Angular, finally got some serious project experience on it. Our organization is currently a heavy Oracle ADF workshop. Most of our complex business applications are written in ADF. So far only one of my ADF application is the fastest and most performant one in all these ADF applications. In terms of business complexity that performant application is not the most complicated one. But it also covers a lot of area:
1) filtering data through large data set (hundred or thousands records), present the filtered data for update;
2) creating new records;
3) clearing the filter;
4) search form;
5) mass update based on search result in 4), but first of all save the data before actually update;
6) upload and download large data set meta data table;
7) flexible access control;
There are some effort outside of ADF needed:
a) make sure each column that has a filter defined is properly indexed;
b) some forward only view object created and Apache APIs called to avoid large memory footprint during downloading and uploading chunky data (>10,000 records);
Then with all the ADF best practice being applied, what we can achieve is fast individual page and page components. I still notice that initial application loading time is long (depends on what has been put in Application Module prepareSession and home page on load server listener), sometime for no reason the page navigation could be also too long - mouse input becomes circle and spin for seconds at least...
a) make sure each column that has a filter defined is properly indexed;
b) some forward only view object created and Apache APIs called to avoid large memory footprint during downloading and uploading chunky data (>10,000 records);
Then with all the ADF best practice being applied, what we can achieve is fast individual page and page components. I still notice that initial application loading time is long (depends on what has been put in Application Module prepareSession and home page on load server listener), sometime for no reason the page navigation could be also too long - mouse input becomes circle and spin for seconds at least...
After completing the main flow of rewriting one of our internal ADF application using Angular4, I felt that I was amazed by how fast the new application can be and shocked by the fact that I have spent so many years enjoying being an ADF expert and that a good framework like ADF which I loved and was proud so much becomes so easy to be put down by things like Angular...
AugularJS is MVC of Javascript on practice, ADF is MVC of Java on practice. And what makes ADF page always seem to be too heavy, and yet as of now still not able to support HTML5 completely. I think many of these questions and doubts can only be answered by Oracle if Oracle is willing to share.
One thing I know so far is Angular is really capable of doing some very serious enterprise calculations or logics without question.
One advantage when comparing JS framework with ADF is JS is directly fit into browser and is the native language of browser. So it can easily manage any server state with the help of LocalStorage. Whereas in the traditional client server mode the state management involves the server and hence the overhead will be too high in terms of navigation control happens. I think not much to post to server to store the states in Angular.
Also Angular is more MVC'ed since Angular2 which makes Angular stand out of ReactiveJS and Oracle JET. Data binding is also made easy since Augular2 and developer can really focus on business logic and make the entire application or individual modules well designed and loose coupled - all just simple and easy. Of course Rest Service - part of the business model also plays a very important role and actually a key role in Angular application development, if you want to be a full stack Angular developer.
I will share with more in my following posts, stay tuned...