Wednesday, December 19, 2007

APEX vs ADF: Round 1

As announced before, on Monday I did a presentation together with Lucas Jellema about the differences in APEX and ADF.

On the right you see the picture I used on the first slide. You don't know? Does David (APEX) and Goliath (ADF) rings a bell?

The goal was not to "tackle" each other, but show the audience both technologies. We had a lot of fun! Both Lucas and myself are very passionate about "our precious", so once and a while we teased each other. The 80 people had some good laughs, the atmosphere was very energetic, something you can expect of a good "fight" ;-)

So what did we do?

Michiel Jonkers was the host and he welcomed everybody, prepared the audience for the evening and introduced both Lucas and myself.

Then I started with an Introduction about Oracle Application Express (about 30 mins). Where did it come from? How does the architecture look like? And why should you use APEX?
Then it was time for Lucas to do the same for ADF.

During the preparation we discussed how we would do it and finally decided to start from the same ERD and try to create a survey application in 6 hours. We would see how much we could do in that amount of time. I was impressed with what Lucas did in that amount of time in ADF (and JSF). A few years ago I worked with BC4J, so I knew a little bit of it, but I must say they let the product evolve largely.

So we both demonstrated our application and explained how we did it. You can see the application I made here. The presentation (with in it the break down of the time used to create the application) you find here.

After the break, with some great food, we both explained how you can start with both products and showed how to create an application.

At the end we had the Q&A. Some questions are always coming back: "When shouldn't you use APEX/ADF?", "Does APEX also work for large applications?", "What about Business Logic" etc.

I had a great time! If you were there I hope you enjoyed it as much as I did.

PS/ Some others blogged about it too... Douwe Pieter van den Bos here and Marco Gralike here. If I missed yours, feel free to add a link in the comments. I believe Michiel Jonkers is also going to blog about it.

22 comments:

Patrick Wolf said...

Hi Dimitri,

nice work done with the survey application you created!

Patrick

Noons said...

really wish there were more events like this one, Dimitri!

Anonymous said...

The "Edit question" link in the application does not work.

For example, http://apex.shellprompt.net/pls/apex/f?p=485:7:57035194443170::NO::P7_ID:7 gives an error:

Not Found
The requested URL /pls/apex/f was not found on this server.

Oracle-Application-Server-10g/10.1.2.0.2 Oracle-HTTP-Server Server at db1.shellprompt.net Port 7777

Alex Nuijten said...

Really enjoyed the presentations.... and it was good to see you again.

orlat84 said...

Nice job Dimitri. I would be interested to attend such an event in case will be one in English :)

Dimitri Gielis said...

Hi Anonymous,

Apparently I changed the authentication scheme at the end of the event. I've put it back to what it was and it seems to work again.

Thanks for telling.

Dimitri

Dimitri Gielis said...

Hi Florin,

There're some plans to repeat the session in the Netherlands/Belgium and maybe on one of the big events (IOUG, ODTUG, OOW) in 2008...

But can't promise anything yet ;-)

Dimitri

marco.gralike said...

Dimitri (on behalf of...)

http://tonguc.wordpress.com/2007/12/20/apex-vs-adf-study/

ramon vd weiden said...

Hi Dimitri,

I enjoyed the presentations and for me Apex "won" fair and square.
I was impressed by what you accomplished to build in those 6 hours. Also thumbs-up for your wife who created those nice images.

Ramon

Joep said...

Lucas, Dimitri,

I like to thank you guys for the wonderful "match" of Dec 17th between ADF and APEX.
The big question is off course: who is the winner?!?

Well that looks like the question that I encountered a few months ago on a forum.
"What is better a screwdriver or a hammer?"
A beautiful question (and total ridiculous if you don’t know anything about environment, requirements etc. etc.).

Let us not try to answer that question and let me give some remarks/comments (even doubts) about both products:

-ADF-
I agree with Lucas that ADF has quite a long history. But compared to Designer/Forms I doubt on it productivity. May because I am a D2K dinosaur and I am (to) fresh from the ADF course but this opinion is shared with the 12 other persons from the course. Personally telling why ADF is so stabile and just mentioning Jheadstart is not quite fair. Jheadstart is not standard included in ADF. (Actually I think it should). In my honest opinion it was Jheadstart against Apex. (Lucas indicated when every thing has to be done from scratch in ADF it would be probably 3 weeks). And if we consider Jheadstart the installed base is limited to 10 a 20 licenses in the Netherlands. And if I am correct we already had several technology switches in JHeadstart (UIX->Struts->ADF). That makes its 'stability and portability' quite relative...

-APEX-
My mistake with Apex is that I was biased even prejudiced. Probably because of my disappointment with WebDB, I didn’t investigate HTMLdb possibilities fully. I didn’t notice that the APEX community (and product) was growing so fast. And that without Mr. Oracle is pushing... My (first) impression of APEX was, "A nice tool for simple Application’s". Now I know that APEX is capable to handle complex applications with a lot of users and large volume data. And if we keep data related logic and business rule in the database (server concentrated or "Fat Database" to use Toon Koppelaars words). It isn’t important what level of complexity the client handles. In that philosophy we target on "thin clients". What I do wonder about APEX is scalability! How do we scale? I don’t see solutions like additional application servers and load balancers. With the new architecture has to be done in the database (RAC?) or faster hardware (with more memory resources). If Dimitri would address this topic I would be grateful.

Basically what I am saying is: Before choosing a tool you need to know what you want to make. And what are the targets? Database independency?! Well in that case neither Apex nor ADF will be favorite I guess. But in an Oracle workshop with "Oracle techies", I believe APEX will have its place.

Regards,

JB

Patrick Wolf said...

Hi Joep,

>With the new architecture has to be
>done in the database (RAC?) or
>faster hardware (with more memory
>resources).

APEX scales with the database, so as you mentioned you would have to use RAC or faster hardware to scale if you are CPU bound. But remember, most time there is still a lot of potential to tune the code, and with APEX you can easily do that. You can use all the tuning features Oracles offers. BTW, APEX doesn't need much resources, have a look at Statistics on apex.oracle.com for a bigger system. Most inhouse systems will never be as big.

Patrick

Joep said...

Patrick,

Thanks for your feedback about APEX scalability. Indeed, scaling with hardware is quite obvious.
But, scaling with RAC is a different topic.

Unfortunately my experience with RAC is limited. Despite of that, I did see that some application scale well on RAC and other really don't!

I believe that in an OLTP system when everything revolves around one "hot" table you will have issues with scalability in RAC.

Okay, I agree you will probably have issues too in a non-RAC environment, but in RAC it will be escalated. That is my reason to be a bit reluctant to accept RAC as THE solution to grow.

I really like to hear if (any of) you have experience with RAC, APEX in a heavy duty OLTP environment.

Regards,

JB

Patrick Wolf said...

Joep,

I have experience with RAC in a heavy duty OLTP environment. It's with online transaction systems for the lottery industry (Lotto 6/49, ...). Not with APEX, but in my opinion it's not APEX which would fail in such environment, it's the application. If you design such a big application, you have to design it for RAC to be aware of some limitations/bottlenecks in such a configuration. But it always depends on the application how easy it is to move to a RAC and get scalability.

BTW, if you design your application to have a one table hot spot, you will have the same problems in all your user interface technologies, independent if it's APEX, ADF, whatever, because the database will be the bottleneck.

Regards
Patrick

JB said...

Patrick,

Your feedback is much appreciated and what you write is basically what I assumed.
Please consider however that sometimes one is involved in the data model design and unfortunately in other times one just has to accept it "is as is".

That is for me the reason to be cautious to move to RAC for scalability reasons.
I agree it is bit "off topic" what Apex basic's concerns, but scalability should be on one mind when adapting a certain technology.
And in APEX case there are just limited options to scale, but maybe these options are more then enough.

I suggest that I will follow Nolan’s learning curve and publish my APEX experience on this Blog. Well, Happy Holidays and a Prosperous New Year to you all.

Regards,

JB

Dimitri Gielis said...

Hi JB and Patrick,

Scalability is one of "the" questions when discussing APEX for production systems.

I agree you can use RAC, but as Patrick already said, you should develop to that, as it will have some consequences too.

I would try to use the full capacity of the database. Next to the many tools to look at performance (AWR, ASH, trace, ...), you've some other nice features which benefit APEX. In 11g you've for ex. native compilation and PL/SQL Result cache.

As a large APEX application example: apex.oracle.com has over 10.000 workspaces, over 27.000 distinct applications, 1.400.000 page views/week and this is running on a Dell PowerEdge 1950 – with 2 dual core 2.33GHz processors and 16GB RAM.

But about tuning/scalability we could talk for hours.

Thanks for the feedback and great you enjoyed the event.

Dimitri

Dimitri Gielis said...

Lucas also posted his thoughts here: http://technology.amis.nl/blog/?p=2674

Janick said...

I was wondering, would Active Data Guard be an option to improve performance/scalability without developing to it like RAC?

Dimitri Gielis said...

Hi Janick,

I would see Active Data Guard more as a high availability and disaster protection option.

Some people use it to run very heavy reporting queries (especially in BI/DWH environments) on the Active Data Guard instead off on their production environment.

Dimitri

Anonymous said...

Your website is dodgy. I close the window and 6 new ones open! SPAM OFF!

N@LT said...

http://dgielis.shellprompt.net/AE_APEX-ADF.pdf
Is Broken???

Ashish Verma said...

Dear Dimitri,

Wherever you get time please put back the ADF vs APEX pdf as the link is broken. I understand this 5 year old work, but I know you would still have it somewhere.

With best wishes.
Ashish

Ashish Verma said...

Dear Dimitri,

Wherever you get time please put back the ADF vs APEX pdf as the link is broken. I understand this 5 year old work, but I know you would still have it somewhere.

With best wishes.
Ashish