I've been doing user interfaces (UI)
for a long time. I hate to say how long, because I'm looking for a new
job, and I'm afraid that age discrimination is very real. And I'm also
aware that behind my back some of my younger colleagues think that I'm set in
my ways, behind the times, and in short, obsolete.
A little history
To be sure, my first user interfaces
were a sort of template for users to enter data into a fixed record format
file, The only validations were to designate fields as alphanumeric or numeric.
My next applications let me draw forms on a terminal, and that gave me
the ability to write (in COBOL of all things) code to validate and then write
data to data files. I graduated from there to Oracle Forms. What a
difference! Now I could point my tool at a relational table, even several
tables in master/detail relationships, and it would generate a first cut at
forms to update those tables.
Oddly, my next step was a step back
- I was working in HTML and once again had to develop my own forms and write my
own code to process the input and decide which tables to update and what to
feed back to my users. At least PL/SQL is an easier language for that
than COBOL. In about 2000, it was nice to get a hold of Oracle Designer,
and its web generation capability, which would create forms for me. But
then, I lost a lot of control over what the form looked like - unless I wanted
to take COMPLETE control and not be able to regenerate the form from Designer,
Application Development Framework
Which brings me to Oracle
Application Development Framework (ADF), ADF Faces, the view and
controller part of ADF is based on Java Server Faces (JSF), which is part of
the Java Enterprise Edition (JEE) standard. Oracle JDeveloper, the
primary IDE for ADF, can generate first cuts at forms, but not just forms: ADF can do tables, graphs, hierarchies, trees, calendars and other data
visualization. It can drill down. It can navigate from page to
page, and this flow of control is shown graphically so that even showing it to
a user, the user can get an idea how it is going to work.
A lot of the components have
built-in functionality that I don't have to code. For instance, an ADF
table component can let users reorder columns, re-sort, and filter, with no
code. There are tabbed layouts, split screens (vertically or
horizontally), and accordion layouts. There are popups and quite a bit of
control over when a popup is displayed and when hidden. Some layout
components are especially designed to rearrange themselves according to the
size of the screen - showing differently on a phone than on a desktop for
instance. The newest version of ADF can inform the application about the screen dimensions
so that the application can decide what components to show.
ADF can do single page applications
where the header, main menu and footer are all static with only the content in
the middle changes. It can do AJAX, changing only the parts of the page
that need refreshing.
Other JEE/JSF Frameworks
One of the arguments against Oracle
ADF is that it is Oracle. And it is not
open source – if you are on a support contract, you can get the source code,
but you will need to sign a non-disclosure agreement and you can't change it. Many people would prefer to use open source
software only, and avoid depending on Oracle.
I can't argue with the advantages of
going the open source route. ADF Essentials lets me use ADF for free, and
I can use an open source JEE application server. And I've written an ADF
application against an open source database, so we don't HAVE to use Oracle's
expensive RDBMS. But even ADF Essentials is NOT open source, and it
doesn't do everything the non-free version can do on the non-free Oracle
WebLogic Server. We can get away from ADF BC and use an open source JPA
implementation - and if you write ADF Essentials applications with Eclipse, you
probably will do that. To get away from the ADF Controller and ADF Faces to an
open source replacement, you can use the base JSF controller and an open source
JSF library like PrimeFaces. But in doing this, you will lose some of the
wonderful tooling that JDeveloper has for code generation. Or even Oracle Enterprise Pack for Eclipse
has pretty good tools for developing ADF Essentials applications with
EclipseLink for the Model and ADF Faces for the View and Controller.
I have also used some of the tools
in Eclipse for developing PrimeFaces, and it is better than using the
Javascript frameworks, but not as good as ADF Faces in JDeveloper. In my next post, I'm going to talk about the
Javascript frameworks.
No comments:
Post a Comment