I followed the postings around the AMIS Query on APEX and ADF which was held last Monday. Dimitri Gielis and Lucas Jellema have demonstrated the pros and cons for each development tool. Dimitri already blogged about his impressions some days ago and it was now Lucas time to write down some of this thoughts.
Some of his statements triggered me to write a reply I like that about the blog world that you can easily reply to an article. I started writing and writing and noticed that it probably got to long for a comment, especially because I know that the AMIS blog software doesn’t support any formating (Guys you should really fix that!) so I decided to write a reply posting.
great that you guys at AMIS did that comparison event! It helps people to see what’s possible with this tools, especially if it is presented by a person who has much experience with it and knows what’s possible.
There are some points in your posting which I have to reply to It also gets a little bit longer, because your posting is also so long
As a reader, please read Lucas posting first, so that you can set the quotes in context.
I had had some encounters with APEX. However, they had not been too successful. I had been a little overwhelmed by the many options and settings
As with any tool and Oracle APEX is a full development tool, you have to take some time and study the tutorials, concept manual so that you understand what’s going on. Sure the wizard help to quickly create something, but after that you will be lost without understanding the concepts. I think that’s the same with JDeveloper/ADF. For you JDeveloper/ADF/JHeadstart is absolutely clear now, because you are working that long with it, but remember the time when you started.
I have some reservations about publishing an APEX application on the internet
Why? First of all you would have an Apache Web-Server in front of your database node, so your database node is never directly exposed to the Internet. If you want to use the “Embedded PL/SQL Gateway” of 10g XE or 11g you still would use an Apache reverse proxy to protect your database. About “breaking” into the database, as with any application development tool, when I don’t use bind variables in my application I can break into any application. Independent if it is written in Oracle APEX or in any other language like Java. All this web applications are using connection pools, so they normally use the schema as run user where the tables are located. That means full access to all your data.
I consider the Repository based character of APEX a big plus
I consider that a big plus too! It allows me to easily extract data about the application for QA or documentation purpose. It also allowed me to write my ApexLib Framework to easily enhance Oracle APEX. About the maintenance. Oracle APEX is just the user interface, most of the code should be written in PL/SQL packages. But to some extend you are right, a database based repository approach makes working on different versions sometimes hard. Was/is the same problem in Designer too. A file based approach in this regard has some advantages.
However, I do not believe in APEX as a strategic application development stack for developing mission critical, long term, enterprise level applications. […] be used for more than a few years […] Perhaps APEX can be used for a quick solution to an urgent challenge that ADF can provide a more lasting, robust solution for.
And ADF or Java can? I like the “long term” in your statement I just say Servelt, JSP, Struts or UIX programming. Just a few techniques/frameworks which where hype a few years ago in the Java/ADF world and which have been used to write this “long term” enterprise level applications. Who of the Java developer wants to work with this “old” framework anymore? When they now have the fancy JSF, Hibernate, Spring, Streams or whatever frameworks which are now used to build Java applications. And about UIX, I’m not sure but are you still able to open these projects in a current JDeveloper release? Or do you have to stay with an old JDeveloper 9i version? With Oracle APEX I have to say, that I can load an Oracle APEX 1.6 version application into my current 3.0.1 version and it will work instantly. That’s backward compatibility but still offer the developer the possibility to use the fancy new features of the new release.
About mission critical – Wouldn’t you for example consider an Oracle APEX application at T-Punkt (the company who runs the shops for German Telekom) a mission critical application which is used in there shop by more than 3.500 concurrent users? I heard the story that it’s the only application which really works and performs… But that’s just a 2nd hand story…
Some other hesitations with APEX: using the database as application server, lack of integration/support for crucial concepts such as WebCenter, SOA (BPEL, Workflow) in general, E-Business Suite and Fusion Applications; scalability; security
Your typical ADF applications, how much work do they really do on the application server? Or are they constantly pulling and writing data to the database, because they are database centric? So what is your advantage of using the application server? Load balancing? The database will be the bottleneck anyway, so more application servers will not really help. Failover? If your database is gone, you can have as many application servers, it will not bring your application back.
WebCenter? Nice technology what I have seen so far, but how many companies can afford the 50.000 or more to get it?
SOA/BPEL – In Oracle APEX you can consume web-services and with Oracle 11g you can easily provide web-services for BPEL integration and you always have the possibility to write a Java wrapper to integrate with that or other technologies. I don’t see a integration problem here.
About E-Business Suite integration – There are a lot of Oracle APEX applications out there which integrate with EBS, even use there security credentials for login. They are most time developed because the “official” (I don’t remember the frameworks name) seems to be a little bit complicated and takes much longer than doing it with Oracle APEX and this applications perform much better.
Scalability – as I have already written about that above (T-Punkt) and to be honest – an EBay or Amazon like application will also not be written in ADF. 99% of all applications are just medium size applications with a few hundred users.
Security – Oracle APEX has that as integrated concept! Starting with built-in LDAP authentication against your corporate MS Active Directory, … to custom authentication based on your own tables. Because it’s an integrated concept of Oracle APEX, the developer is aware of it and able to declaratively set for each object which privileges are necessary to view/access the objects. That’s easy to use security integration! No XML config files somewhere…
In addition: I am not convinced of Oracle’s long term strategic commitment to APEX. Fusion Applications and large sections of Oracle E-Business Suite are being built using ADF. More strategic commitment is hardly possible for Oracle to show.
Sure JDeveloper/ADF gets the big bucks and marketing hype. Why? Because Oracle earns a lot of money with the Application Server licenses. Oracle APEX comes with the database license at no additional costs, that’s why Oracle Sales will/does not really push it, because they have already sold the license, they can’t earn more.
With Oracle 11g it’s now an official part of the database and the database installation. I think that shows Oracles commitment for this tool and if you would know how many applications are written internally at Oracle with Oracle APEX, you wouldn’t question the long time support and importance for Oracle. But you are right, JDeveloper/ADF/Fussion plays a much bigger role in Oracles strategic plans and Oracle APEX will probably always be some kind of outsider.
Others proposed APEX as a good first step for Oracle developers in their make-over to ADF developers. […] I personally do not really find a lot of value in that approach
I’m with you, that doesn’t make a lot of sense.
[…] is the importance for any type of web development with either ADF or APEX of up-to-date database skills. Knowledge of the latest features of both SQL and PL/SQL can be a tremendous help in developing applications.
A point I can also strongly support. Knowing the underlaying database feature is a key to write performing and scalable applications. Man I have heard stories from Java projects where they didn’t use the database for the purpose it has, but that’s a different story… I think ADF makes it harder not to use or misuse the database.
But to be fair. JDeveloper 11g looks really promising and another big step forward. Also if I would be forced to do Java development I would probably go with ADF/JHeadstart, because it looks like that it’s the only Java framework/development environment which can develop sophisticated database centric applications in a normal time frame. I like the data binding and the 4GL/declarative approach. I don’t understand why everybody wants to hack around on 3GL level, especially when the IT world is going more and more towards MDSD… But that’s a different story.
Next time when we meet at a conference, we have to discuss a little bit more about this topic!
PS: See also my JDeveloper Vs Oracle APEX posting some time ago.