Tuesday, July 02, 2013

What is Oracle Application Express really good for?

I received this plea yesterday from a developer who works for a health insurance company:
I am attempting to leverage APEX in my organization. Specifically, I am developing a white paper and would like to include your thoughts of APEX in it. Here's what others are saying in my company regarding APEX:

"It's an application add-on. Oracle's quick and dirty web application builder / report writing tool. It's for teams with limited development skills. It's totally web driven and installs as a free add-on to the database. As far as I know only one system uses it and that's Rick's team. Could be the way the team developed their app but it is a pain to tune. I  would say the time you save developing is used to performance tune it afterwards."

I know what I would like to say however I think that a person with your name recognition could provide more leverage. If you are so inclined please provide me your impressions of APEX.
Rick, I am happy to share my views on APEX with you. My views are formed through my own application development experience (check out the PL/SQL Challenge, an APEX application); my communication with the APEX dev team (a very accessible and smart group of developers); and my contact with countless APEX developers at conferences and trainings.

There is no doubt in my mind that the attitude towards APEX expressed in the quote above is based on "old data." There was a time when APEX was mostly a curiosity, used by Oracle consulting on web-based app development projects, and leveraged mostly for small, departmental apps.

Such caution made sense in the Oracle community; Oracle has a reputation for building so-so development tools and not always sticking by them (with several notable exceptions, such as SQL*Forms 3.0, to completely date myself!). But those days are past.

There should be no doubt in anyone's mind  (anyone who pays close attention to Oracle, in any case) that APEX is a key component of Oracle's future plans for web-based application development, cloud and otherwise. It is used to power the Oracle Cloud and the Oracle Store. Thousands of companies are building robust intranet- and internet-delivered applications. There is every reason to believe that Oracle is firmly committed to this technology and will ensure that it continues to mature.

I love the "for teams with limited development skills." As opposed to, say, for teams with "unlimited" development skills. I can only imagine that this person believes that knowledge of PL/SQL and SQL is "limiting", while knowledge of Java is tremendously liberating and "limitless."

No doubt about it, APEX allows groups to leverage existing, deep (and always limited) skills and experience in SQL and PL/SQL. There is also little doubt that if you want to build really cool, Web 2.0, mobile, etc. apps with APEX, you will need to complement that knowledge with the ability to code in HTML, CSS, Javascript, Jquery, XML, etc.

Which is to say: APEX is open. Leverage existing relational skills and utilize the latest web technologies inside APEX. It accepts all comers and keeps on giving and giving and giving - in productivity, robustness, performance and security.

Oh, right, performance: I must admit it's a bit difficult to make sense of "Could be the way the team developed their app but it is a pain to tune. I  would say the time you save developing is used to performance tune it afterwards."

I really don't see how an APEX app could be harder to tune than a Java-based app with a much looser connection to the Oracle Database. Certainly, an APEX developer can create a mess of their app, with poorly written SQL statements plastered all over the app. But that is not the fault of APEX. The bottom line with APEX is that you will or should be encouraged to move as much of your database logic (especially SQL) into a packaged API and views. If you do this, I am certain that it will be easier to tune and maintain an APEX app than just about anything else built to run against an Oracle Database.

Is APEX perfect? Far from it. Like any other tool that grows "organically" out of a consulting engagement, it has its architectural strengths and weaknesses. If you come from a background of building Ruby on Rails apps or PHP or any number of other super cool languages, you may find yourself frustrated with APEX, but Oracle has never positioned APEX as a competitor to all such development tools (heck, they even offer support for Java-based development with JDeveloper and ADF). 

Bottom line: if you are an Oracle shop with experience in PL/SQL and SQL, and you want to quickly build and deploy Oracle-based web applications, APEX offers a fantastic way to achieve success at a lower cost and greater user satisfaction than with many other technologies.


David Mann said...

I have gotten resistance about performance in my organizations as well.

I always show casual Apex developers the debug mode so they can see how long it takes to generate each item on the page.

After that 'Aha' moment the typical tuning path ends up tweaking some SQL and performance is snappy again.

I did inherit one application that had no PKs, FKs, or Indexes. I had my work cut out for me but was able to zoom in on the worst pain points while in debug mode and address the small stuff later.

Sathish Kumar JS said...

Great blog on Apex.

Steven Feuerstein said...

Excellent point, David. Yes, I have found the debug mode very helpful as well.

Sathish, thanks!

Unknown said...

APEX and other app tools can be tricky at first. Once you get used to the system, it really does speed up the process. The debug mode seems to be what most people don't know how to use that ends up being a huge time saver.
Ron Johnson | App Express