Tuesday, January 22, 2008

When not to use APEX?

When I did some talks last year, I got the question "When would you NOT use Oracle Application Express (APEX)?".

I created a draft message in my blog posts as I found it interesting getting this question. I never posted it, but now I decided to post something about it.

During the last days the question popped up again, more than once, so I decided to ask for new ideas ;-)

I find it a difficult question for a person who's passionate about a technology!

So what do I normally answer?

As some smart people often say, ask questions! Why would you like to do this? What's it what you would like to achieve? etc. So during the first minutes I ask questions ;-)

Most of the time they insist to give more answers. It can't be true that you can use APEX for everything! To be honest, I don't think APEX is a good fit in every situation, but to name these situations that's something else.

If I would say... I wouldn't use APEX:

  • when your team exists out of JAVA and/or .NET developers
  • when the requirements are a rich client application
  • when you don't have a data centric approach
  • when you need to program for a specific device (calculator, hospital equipment etc.)
  • when you've high trough put of data (like the typical old Cobol programs)
Or some more...
  • when you hate the Oracle database (because you want to restart another database every week and love the blue screens - job protection)
  • when you don't know nothing about PL/SQL, html, css and javascript and don't want to learn it (learning .Net is so much easier)
  • when you're a freelancer and want a long term project to finish a job (doing it in APEX you'll get only half the money as you would spent only half the time to have the same result)
  • when you want different plugins to install just to get your application running (only a browser is too easy!)
  • when you want to change technology very often (java, bc4j, swing, uix, jsf, adf, ...)
  • when your company has too much money to spent on an application and the infrastructure (although Apex Evangelists can offer you a FREE service to help you spend the money)
Or ... What would you answer?

(would the above ALWAYS be correct? Of course not...)

15 comments:

Carl Backstrom said...

>>
when you need to program for a specific device (calculator, hospital equipment etc.)
>>

One of the features that will help with this is the ability to supress our built in css or js , it's going to help greatly with mobile and small screen applications.

Anonymous said...

Dimitri,

Love this list of arguments!
Fully agree.

Toon K.

Tonguç said...

In my organization people think that Apex is not an Enterprise option just an alternative for Excel/Access type of applications.

Also because of its form submitting behavior applications which need to be reducing the database calls(like internet or extranet applications) are not perceived to be candidates for apex.

I am still working on these, another Apex Evangalist lets say but just inside my company :)

Anonymous said...

One argument I make in my organization is: "Look folks, how much money do you spend per year on that Oracle db license? Wouldn't you like to get more ROI?".

Another good one is "Ever had Access file corruption?".

A final good one is "So you have a secure Access/Excel -ahem- database with all this confidential business inforamtion. Wow, and it has built-in password protection. Great! Time me, I just downloaded a new version of this cracking software and I want to see how many minutes it will take me to get in."

Stew said...

Excellent article!

Another might be if you need to collect data off-line (hey, it happens!). In that situation, we've developed FileMaker applications that can run on a laptop at the remote site.

Yeah, I know you could install Oracle Express and Apex on a laptop, but that seems like a bit of overkill, no?

Also, some applications really benefit from slick GUIs that can't easily be done with Apex.

Patrick Wolf said...

As Stew already wrote, when you don't have a online connection all the time, I think that would be a NO GO for Oracle APEX.

Patrick

Olivier Dupont said...

We have developed an application for a company that also wants to work offline.

We used Microsoft infopath for the offline version and let it upload the generated xml in apex.

I was pretty happy with that solution.

An other reason: 'When refactoring is a must' :)

Stew said...

Olivier,

Why refactor something that's perfect the first time?

Or did you mean refactor your underlying PL/SQL?

I actually reengineered my authorization routine just yesterday, including changing the calling signatures. I was pleasantly surprised that changing my PL/SQL function only necessitated changing a single line in my Apex app. I'm not sure that would have been as easy calling from other development tools.

Olivier Dupont said...

Stew,

your 100% right, I was just adding it to the nice list of Dimitri :)

Anonymous said...

Hi,

I guess an argument for not using APEX can be, that you are not "near" at the system. for example you cannot print directly, only with the borwser funtionality...
Regards,
tim

Patrick Wolf said...

Hi Tim,

but can you do that with a Java/.Net HTML solution? To my knowledge they have the same browser restriction than APEX. In the end it's always just HTML.

Patrick

Vince said...

Nice artice Dimitri.
Your first point mentions that you wouldn't use Apex where development teams are using .Net or Java.

What's your thinking behind this?

Dimitri Gielis said...

Hi Vinny,

Java or .Net teams probably want to build the application in something they knew, instead of learning something new (PLSQL/APEX).

Dimitri

Unknown said...

Oliver, i am interested in your solution to the offline data problem.. for me the APEX Achilles heel.

Did this require sharepoint and dinner with bill gate's daughter or was the submission of a batch of new records (and editing?) via http into the oracle achievable ? I don't suppose you wrote any memoirs about that experience anywhere ?

cheers,

-i

Unknown said...

So, has your opinion changed since this post was originally written? Any advancements you feel make apex a better choice now versus what you thought in 2008?