Samstag, 17. August 2019

Learning Oracle ADF on the way to certification 1z0-419

Hi all!
I would like to share some experience working with Oracle ADF in 2019.
First let me answer the quite obvious question : why you need to learn Oracle ADF in 2019?
My reasons to learn Oracle ADF are , due to high demand on german market and the type of clients which use Oracle ADF its very profitable and interesting field of work.
So how a typical Oracle ADF looks like? 

Lets look example on Oracle web fusion app

(this picture taken from the book Oracle Fusion Developer Guide )

As you see it's pretty complicated ,  in JEE you have JSF for Web frontend which itself consist many states during of application lifecycle, i don't want to get to deep into architecture of JEE its anyway pretty big and it takes a lot of time to grasp and get your head around it.

So what our tools? 
Oracle recommends the Jdeveloper , in my opinion  this tool is only one way to do the proper programming for ADF. Having said this, it takes time to get around and understand how to access and configure JSF page elements and the corresponding binding , but after some time you will figure out the workflow.

Things which i don't like about Oracle Jdeveloper, when you work with JSF stuff you need to make sure that properties of the JSF elements on the page are really populated , for example you have a panel group layout and you need to set up trough properties the layout type (vertical or horizontal) , so there exist properties window where you can configure the properties of each of jsf page elements. Check always the source code and you expression builder a lot in order to be sure that what you did set up gets really into your code.
Then you have model layer, Oracle decided to make two type of layers one is for database and one for view , i am not sure that it is good decision because if you have big db with 1000 of tables then you will get automatically 1000 view entities , which in my opinion can decrease you work flow , because you access and display your data trough the view entities!
Jdeveloper has bugs and can break potentially your code during deployment of your JSF pages!
On a particular project, i broke my page definitions it did happen when i deployed the application for testing and at the same time worked on the jsf page itself trough properties.
Jdeveloper do backup of your code , so you can recover from one of the previous revisions.
Sometimes the properties didn't worked  and i was "pushed" to restart my IDE.
There is no way to customize you IDE Look and Feel
I know, i know,maybe i am too picky, but look Jdeveloper Team -> Eclipse done this, Netbeans done this, InteliJ done this, why your team behind Jdevelop can't create a black skin trough addons? Sure you can try and edit jdeveloper properties file , but this should be improved.
Jdeveloper produces unexplained error windows, at some point at work i get unexplained error window, like do you wish to save and or continue , it did happen to me when i worked with model layer setting up binding for my JSF elements.
The default font size is very small on big screen
WTF!!!,  why i need to do manual rescaling of the fonts i don't get it, anyway you can set up trough manual edit of jdevelop the font size, make it bigger and better.
Deployments are slow: i have 4 core 4 ghz AMD CPU, 16 GB of ram and the SSD harddrive, but to start weblogic and to deploy the webapp takes minutes, if you compare for example with Pivotal Spring Boot it takes seconds, or even deploying a standard JEE on Payara.

Things which i liked:
Oracle Jdeveloper has very good representation of data model access and very good representation on how one page communicate with another one.
Oracle Jdeveloper let you access your methods and at the same time interpret into JSF elements, its really cool, you have commit and rollback from db here you go as button , or you wish to represent a view in a table? Well one click and you have a table on your JSF page. Accessing entities properties and generating a JSF elements pretty simple and drag and drop style , i really like it!
Together with Jdeveloper you get free Weblogic server to which you can test and deploy your application, no need for configuration all in the box , ones you develop your app , you just need to add in server configuration your DB reference and thats its all in the box.
Building JSF page is very simple , first you create the page definitions trough visual designer and connect the pages making it obvious how one page direct to another and so on.

Everything is customizable:   if you have forgotten to add some attribute to your data model no problem its one click away, do you need a popup or another type of jsf element no problem.
You can put your code to add additional functionality, its very interesting feature, you can your stuff to the project like Java Class or a JSP page drag the page to the page flow designer, but consider and think about how would you test.
You can access your database from Jdeveloper and create user with table and set up the scheme.
After some time spending with Jdeveloper you will notice increase in productivity, because in JSF you notice repeatable steps of creating of JSF elements and then you can just copy them to another page and add the needed customization, which in normal case takes even more time , but in ADF its just few click and you up and ready.

Conclusion: Oracle indeed put a lot of work and effort into better JEE programming experience, but their tool Jdeveloper need continuous improvement and maintenance and Oracle did announced in 2019 that they will work further on their tool.
ADF and Jdeveloper let your to rapid prototype very professional looking pages, but it can be very difficult in very big projects where you have 1000 entities and 1000 view entities, its obvious that Oracle want to sell their database , but database is not always needed and you obviously building a monolith architecture, which itself not bad but it can get at some time and point unmaintainable and you need to ask yourself or the people who responsible for business decision: do we want to be dependent on Oracle Framework continuously? What if our business workflow does not compatible to the ADF logic ? Will you use it in your projects ? I am certainly will do, for further improvement of my freelancing services, i will create a website using the Oracle ADF technology , but i will deploy my app not into weblogic, but rather in free glassfish server or payara or open liberty websphere.


Blog readers favorites