JDeveloper versus APEX?

I came across an article written by Chris Muir which explains his thoughts on why Developers should choose JDeveloper rather than other tools (and in particular rather than Application Express).

Now, while I’m always up for some healthy debate on the strengths and weaknesses of different tools, there were some details in that article that I definitely couldn’t disagree more with. One that stood out was –

Apex is too proprietary compared to JDeveloper and is worse for your developer career path.

Too proprietary? Well APEX requires the Oracle DB to work if that is what he means, but as I commented on his blog, I wouldn’t expect to be able to take my PL/SQL procedures and compile then in MySQL either.

As for ‘worse for your developer career path’, I’m not entirely sure what that means? How do you measure that? Is there a statistic somewhere that I’ve missed that compares the number of out of work JDeveloper Developers versus the number of out of work APEX developers?

Another quote which leaped out at me was this one –

JDeveloper’s ADF will provide a higher educational stepping stone away from the old Forms market than Apex will

Again, I’m not entirely sure what Chris means by ‘higher educational stepping stone’. APEX development means you get to use SQL, PL/SQL, Javascript etc, does he not consider learning those as ‘educational’?

I have seen many (way too many!), Java systems which run appalling slowly simply because the Java Developers didn’t understand how best to use the database and usually end up reinventing the wheel to do things themselves that the Database could do far more efficiently in the first place. When you use APEX, all your code runs in the database (besides the client-side JavaScript stuff of course), so it *encourages* you to learn about how best to use the Oracle database to its full potential.

Another quote:

One of the other career benefits is, unlike if the Forms or Apex market dies

I’ve heard this argument many times too, it is always along the lines of “Use X, because if Y dies then we’re locked in”. Well what if ‘X’ dies first? Sure, sometimes you can make an educated decision about which market is more likely to survive, but what makes Chris think that APEX is more likely to die in the short to medium term than JDeveloper is?

If there is one thing I’ve learned in IT, is that there is *always* something new coming along, now that something *new* might be a completely new technology, or it might be an improvement in an existing technology, however the way that I have always looked at it is this….what can I use that will make my development easier *right now*?

APEX might die out one day, JDeveloper might die out one day, the Oracle DB might die out one day? Heck…I’ll die out one day, but does that mean that I can’t use a great tool because it *might* die out one day?

That argument just doesn’t stand up for me, in many businesses there are old COBOL systems still running decades after they were first written. Why couldn’t an APEX (or JDeveloper) application written today still be working in 3/5/8/20 years time, even if the development tool has long gone? I do not use a development tool, to use the tool itself, I use the tool to help me to achieve a specific *requirement*, for example developing an application to do ‘XYZ’. If I develop that application and it works, do I really care if the tool disappears in 5 years time?

Anyway, Chris said he wrote the article for this reason –

The other purpose behind this post is to start discussions about which *is* better, JDev + ADF or Apex.

So it will be interesting to see what other comments (beside mine) his post receives.

18 thoughts on “JDeveloper versus APEX?

  1. Alex

    I have been developing and teaching in many different languages. When I stumbled across Apex it was a decision of only a few days to use it as development tool for the future. It is easy and brings a lot functionality out-of-box, which I must develop in other environments by myself!


  2. Chris Muir

    Hi John

    Thanks for taking up the debate. I’m very much interested to hear what others have to say too.

    I’ll just address 1 of your questions at this stage.

    I guess what I meant by “higher educational stepping stone” (I was trying to think of a phrase rather than write 10 paragraphs in trying to describe this – always the death of a blog post and I’m not the most articulate of writers) is that you’ll actually have to *learn*more* to become successful in the JDev arena (than comparatively to say Apex), and this will expose you to more computing concepts (such as MVC, OO, an OOPL (ie. Java), and more).

    Arguably among other things there is a cost associated with this, such as that to the business of retraining you (if at all sadly for some of us) and also to the success of the project this can be detrimental if not fatal (as experienced by us all at 1 time or another) due to the added complexity of trying to implement new technologies…

    (As a backup to this statement I have read comments that JDev programmers should start small and be prepared to throw away their first program because most likely they will have implemented it badly – that definitely doesn’t bode well for JDev)

    As the programmer however looking after your own future interests (ie. your career path, wages, successful employment) does being exposed and learning more technologies assist your career path on hinder it? Maybe put another way, what you’re learning today, say technology X,Y,Z or alternatively W,Y, if learning technology X,Y,Z will assist you directly or indirectly in getting a job for the next say 10 years, vs 5 years for technology W,Y, wouldn’t that be better?

    I’ll agree this point is pretty theoretical, and can be shot down very quickly when asked “where are the metrics”, or anybody’s own direct experience vs the generalisation. That’s why talking about the future is so hard…. d@mn God for not allowing us to event time machines…. though I suspect if I had a time machine the first thing I wouldn’t be doing is checking out the future of say, Apex vs JDev 😉

    But all the above is still a very valid discussion for the Forms programmer, at the starting gates of learning new technologies, which way should *I* go to my benefit. And should I consider the business before myself (not that the 2 are mutually exclusive either).

    Thanks again for the post John, and taking the time out to respond. A little healthy debate beyond Oracle’s marketing I think is important. Let’s see what other comments come forward.



  3. Frank

    I am a developer for a local government in Virginia. My perspective on this debate is probably a little different from everyone else. And I also admit to knowing little about Jdev.

    I am a 25 year career IT programmer going from punching cards and filling out coding sheets for COBOL systems… to CRT’s where we had an “online” editor to key our COBOL code…(so cool, even during the time we had to share our monitors)… to my first adventure into ORACLE in 1998 where my brain had to be rewired.

    I guess my argument FOR APEX is that it is one of the first “new world” technologies where there is a breakthrough in the learning curve. We struggled trying to learn ORACLE architecture and our first venture into Oracle Forms was not a pleasant one. Also we had other teams throwing up SQL Server databases and doing VB at a better productivity rate than Oracle Forms.

    It came down to…do we trash Oracle and go VB and VB.Net or continue to struggle with Forms and go forward with a new learning curve with JDev. APEX cured all that. To make it more interesting, my buds on large VB.Net teams are struggling while me, a co-worker and a DBA are pumping out APEX systems left and right.

    I even had one of our SQL Server guys wondering how they could read SQL Server data through Oracle so they could use APEX. Also we are finding other COBOL personal who have avoided the learning curve of moving to Oracle (basically just waiting to retire maintaining legacy systems) now are starting to look at the new world through the lens of APEX.

    In a new environment where we as developers are now having to produce results in 30 day and quarterly segments, APEX fits the bill and allows us to implement AGILE programming concepts. Now instead of the old water fall project approaches we are finding our projects evolve as we can implement more modular concepts easily. Also I can produce concepts on our development environment and cut and paste the URL and have a user do concept reviews easily. Basically users are getting new systems they know how to use before they are in production.

    One of our guys in an IT Masters program dubbed APEX as a disruptive technology. It has changing the way we do business where I work. I think if a technology is going to work these days, it will have to have shorter learning curves and be useable by more than just smart geeks out of MIT, because local governments, small businesses and even medium size businesses must find ways to use current resources to get the job done. Hurrah for APEX!


  4. Alex

    Hi again,

    anyone involved in the development of applications has some favourite tools or languages, but the basic concepts (like problem analysis, modelling etc.) are the same – independent from the used tool or language.

    I have used many different programming languages and different development environments – from command line to Eclipse.

    Having discovered Apex just 1.5 years ago, it is the environment of choice for me. I don’t see any correlations between the tools you use and possible career paths or earnings.

    Being a good developer is independent from the tools you use! Of course there are trends like OO, Java, .NET etc. and it is always good to get an at least basic understanding of the different inherent concepts. Choosing the appropriate tools for a given problem is crucial for the solving of it!



  5. Lev

    If you want to develop application for somebody else (especially if he has a lot of extra money) – use JDev, Eclipse and so on… If you want to develop for yourself – use APEX.



  6. Bill Ferguson

    Hi John,

    Chris must have deemed my post on his blog not worthy of posting I guess, so I’ll repost (from memory) what I replied on his blog on Sunday.

    I do everything in my group (a group of one). DBA, data architect, system architect, developer, documentation writer, end-user support, System Administration, Web Administration, security, email, etc. It’s all (and only me).

    I have no time to take training. I need to be able to get up to speed on something fairly easily, when I have a few minutes here and there to study on it (plus, being ADHD doesn’t really help either).

    With ApEx I’ve been able to develop a fairly complex application with very minimal training or work on my part. We do not have the money in our budget to have hired contractors to accomplish with anything java what I’ve accomplished with ApEx. I’m even “guiding” other database applications towards my Oracle database so the people can use ApEx, instead of (some of the things these other groups have mentioned), Access, MySQL, SQL Server, FileMaker, and even (gasp) FoxPro.

    They have seen the light. With very little training, several of them have already built some pretty decent apps, though they really do need to start coordinating with me first on database design (very poor designs, but at least usable apps).

    My app is far from “a toy database running on a PC”. Mine is a fairly complex system which currently has over 30 data tables and almost 20 lookup tables. I’m also working on adding in another database that is fairly simple, only two main tables and about 10 lookup tables, but that one will also require the integration of two other databases as part of the overall workflow. These are “static” databases, in that I’m not getting any real-time information, like stream-flow data, or information from an assembly line, so persistence is not an issue for me.

    Actaully, there’s very few applications that really need persistence, especially with licensing costs and memory requirements. ApEx helps keep the cost down on licensing (fewer concurrent users), and also keeps the memory requirements very low (compared to a few hundred or more concurrent connections).

    With ApEx, I don’t have to worry about double and triple-checking for memory leaks. I don’t have to sit back and do a decent analysis of 4 or 5 different “libraries” (for lack of a better term right now), that all do the same thing, just with different code. I also don’t have to worry that when the one I chose goes belly up in a year, future versions of my app will need to be re-written to use the other version and it’s calls instead.

    My users don’t have to worry if they all the latest updates for jave installed and properly configured on their system. This is a big problem for several mandatory on-line training classes we have to take each year. I easily spend two to three days going around my office helping my users find and download and install the proper set of updates for java so these stupid training classes can run. And the worse thing is, all they do is display a web page! About 30 different web pages, and then at the end it records the userid and the percent of correct answers in a database. But, somebody in upper management without any knowledge of the subject, heard the buzz-word “Java”, and spent several hundred thousand dollars on a java app that displays web pages and nothing else. ApEx could have easily done the same thing, saved our parent organization that money, been operational in a couple days (max), and saved several hundred people (maybe several thousand) in our organization the hassles of running around making sure their users had the correct java patch.

    Finally, with ApEx, I can forget about an application for several months or more, and when I need to make some changes (bug fix, enhancements, etc.), I know exactly where to go and what to do to implement it. No digging around through complex sets of code, trying to figure out which linked library (or even my own code) is causing the problem, etc.

    Deployment is a snap. I give the user the web address. Period. No worries about compiling and/or configuring OC4J, .ear, .war, .jar, or .zip files, and all that other ‘stuff’ that overly complicates something that should be simple.

    Recapping, the original blog by Chris is which is better for a developer. Maybe for somebody that only does development on a contract by contract basis, JDev would be a better choice. It’s so complicated and convoluted, that easy to fool high management into overpaying for something that’s relatively easy, and it has a catchy buzz-word that many people have heard, but few actually know about.

    For many actual organizations though, where you’re a full-time employee in a downsized environment, you don’t have time to learn something so complicated, so prone to bad design and implementation without extreme proper training, and complicated for distribution.

    We just need something simple, powerful, and quick, which ApEx does very nicely. A quick and simple application can be generated very easily with the wizards, and after the users have had a chance to see what’s possible, the application still be re-written very easily without the wizards, utilizing the existing knowledge of SQL and PL/SQL. We need to progress past the one application and get working on the next immediate problem in the organization, which usually isn’t even an application.

    Bill Ferguson


  7. Lev


    My logic is based on my experience. In last years I took part in 5 “big” J2EE projects. All these projects were built according to the best practices of the time. All these projects are in production and are considered successful.

    But I think that all these projects are a failure- they were very expensive develop and to maintain. And frankly speaking the quality was not that high. With Apex these projects could be done much better and cheaper.

    Unfortunately there is no way Apex could be used for these projects – a lot of people doesn’t know (and doesn’t want to know) anything but J2EE. That’s why if you are doing project for yourself and can make a choice – don’t hesitate to use Apex, if you are doing for somebody else – you probably will have to use J2EE weather you like it or not and they will have to pay that.



  8. John Scott


    Ahhh ok, I misunderstood your original comment, I thought you were implying that APEX wasn’t ‘good enough’ to use to develop programs for other people.

    I now see the context which you meant.



  9. Lev


    Sorry for confusion (English as you have probably guessed is not my native language).
    I think that Bill said it better:
    “Maybe for somebody that only does development on a contract by contract basis, JDev would be a better choice. It’s so complicated and convoluted, that easy to fool high management into overpaying for something that’s relatively easy, and it has a catchy buzz-word that many people have heard, but few actually know about.”

    I would only say not only JDev but J2EE in total is “so complicated and convoluted, that easy to fool high management into overpaying…”



  10. Nathalie Roman

    This has a lot to do with politics …
    Depending on the knowledge, existing archicture, existing software, budget, etc. you have to choose the best of both breeds.
    When the customer has a development team that has no experience, affinity with J2EE development you could favorize APEX for obvious reasons.
    When the customer is thinking about integrating existing applications, working out the strategy for the future you could favorise ADF because this would give the customer the ability to plug-in soa suite later on using adf as it’s front-end and incorporating web services as the adf data model layer, …
    I wouldn’t favorize APEX above ADF, every product has it’s strengths and weaknesses and depending on the experience, knowledge and future planning you need to make the best decision for that particular customer/project.


  11. John Scott


    >you need to make the best decision for that particular customer/project.

    I completely agree with that 100%.


  12. Chris Muir

    To Bill F comment above, sorry Bill, just enough time to respond to all the posts I’ve received. I’d lie it’s work commitments, but really it’s my 12 week year old baby that is way too much fun. And here I am posting about JDev vs Apex …. sick really 😉

    To John, Bill and all others, as I’ve posted on the other forums, I’m willing to take this whole discussion off board and write a blog post with input from us all, with the goal of writing something that is a tad more clear than the comments sprayed across the several blogs & forums. Please feel free to join me and others in this discussion be emailing subs/@/ccmlabz/net. My feeling is there are other Oracle programmers out there still sitting on the fence who would like to make an informed choice based on our experiences, and not just the Oracle marketing collateral. With out a doubt I’ll be building up the JDev angle, but will fully support the Apex discussion too, with the view to writing 1 if not more detailed blog entries.




  13. Marc G.

    We are living in a strange world.
    The cheapest way to develop an application is a tool like apex. It should be the choice of most of companies and IT people.
    The job of IT people is not coding or playing with nice concepts, it is solving problems using the best way: cheap, performing, maintainable…

    My job is not developing anymore. I did it a lot mainly with SQL*forms. That is probably why I so interested and testing Apex possibilities.

    Now I buy and install solutions. The only offers I get are C++, .NET and Java stuff.

    All I can say is that the result is a pity: expensive, slow, difficult to maintain… It is not better for user’s experience.

    A functionality that can be developed in a 1 day using Apex takes often 5 to 10 with the other tools. When the project is about 2000 or 3000 man days, it makes a difference!

    I do not understand the success of these tools.




  14. Zafer

    The licensing costs for using a tool also needs to be considered when making a choice in addition to the requirements of the project. The strongest portion of JDeveloper in my opinion is the ADF and ADF is not free (even for a JClient application for the client/server). The biggest problem for the Forms/Reports developers is to convince the project managers the cost of deployment (Forms and Reports services in iAS or FMW is required for deployment) and it is not free. Same thing applies to J2EE applications with ADF – developed by JDeveloper. The deployment cost is an added burden for small size projects. APEX is free as long as the database server is licensed properly. Look at the new shop.oracle.com – which is an APEX only application. By using APEX vs a J2EE server (iAS or FWM), you are eliminating the cost and complexity of the deployment – especially for small businesses and small budgeted projects.
    R/ Zaf


  15. Hasan Al Mamun

    Hi, I have been working as a Oracle Forms developer for my entire career of last 5 years. One of my system is made with Oracle forms 6i. Now I was ordered or you can say forced to convert my system from client-server system to web based application. I had no experience of web development. Then I was searching for suitable tool to easily and efficiently covert to web application. I found PHP to be something that I need to do from “Hello world”. Then I decided to convert to Oracle Forms 10g. Forms 10g does not work for all version of web browser, you need to learn lots of new configurations to do it, still it’s not efficient enough to launch it to web. Then I thought of JDev…. I have gone through many tutorials and documentations, but I have not been able to do any thing more than wizard driven dept/emp pages. I had a feeling Jved might be a powerful development tool but very difficult to learn. With such a dull brain I cant develop web application with Jdev in complying all my requirements as well as securities within a short period of time. Then came Oracle Apex. Some documentation, forum posts and help from Mr. Denes kubicek’s demonstration site, that’s all I had to go through. I have developed my system in almost no effort. I am looking forward to deploying my system in the web by next october 2010. So to me Apex is the easiest way to develop web applications. What else do you need. Look one thing I believe that we all know almost all programming techniques, we need not prove anybody my skills again. professionals need to do things easily, efficiently and within a shortest period of time. And that’s what Apex provides. Thanks all.


  16. Rafi

    HI all,

    Can any one tell me what is the exact difference is there between j2ee and apex.

    in short can u tell me what is the difference from the development perspective.




Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s