As an Apex developer I probably have a biased opinion, but I'd say Apex can be very suitable for an enterprise application. I've developed a number of business critical applications for large user groups and I must say that Apex was the right tool in those cases.
One challenge that I find with Apex is co-developing with a group of people. Apex has some tools (such as the team development) to help you, but it has no subversion or something like that. So working in unison is per agreement and works fine when working with a small team, but will be a challenge, or at least something to plan, when working with a big team of developers.
As far as ADF concerned, I can't tell you much about the pros and cons of that. All I know is that I've not yet faced a technical problem which could not be tackled in Apex.
It might be helpful to post this same question in the ADF forum as well, to get a complete picture.
APEX is quite capable to build anything you require. The biggest challenge I found with APEX was document generation. But now there are plenty of solutions such as Doxxy | Simplify with doxxy for docx, or APEX listener if you just require PDF. Since APEX 4.2 you can also create your own REST web services in APEX.
I think APEX does allow to work as a team. I have worked on APEX projects with up to 4 people. You just have to avoid working in the same package/page as another person.With small applications you will have few pages, but also few developers. With large applications, you will have more developers but also more pages. Because every change is saved instantly in APEX the chance of loosing things is quite slim. You can use versioning, just version your database objects and the application in SVN. These days you also see more continuous integration implementations popping up.
In my years of APEX I came to realize that if you can think of it you can create it with APEX. Font end you have access to jQuery should you need it, and in the back end you have PL/SQL to support you where required.
APEX also has some more advantages:
- Development is quite fast (even faster in APEX 5)
- It's very easy for one developer to work on the work of another developer because everything looks so alike
- Because apps look like web pages you require less training for your end users
- You don't need to spend endless time installing a bunch of (slow) tools, you just need a browser and are ready to go
I'dd like to add one note. I have seen two large clients who invested in ADF and APEX. And eventually ended up converting ADF to APEX or Java. The reason was that ADF was not capable enough to handle change requests fast, so the projects lasted a lot longer then originally planned. APEX will have a lot less issues with this.
I could go on more, and I have to say, because I love APEX I am biased to
i am biased here too.. aren't we all are here?
over the years i worked on many ent' apps developed in apex, and they all fulfilled requirements really well.
all the pros you mentioned, i fully agree, and it just keeps getting better, more APIs, features, capabilities..
and the cons like poor version control and multiple team developing, yes, not the best among the dev tools.
i like to add a few more points.
I used jasper report in one place to print out pdfs, can print reports,logos/pics, letters, charts etc.., its free too.
also, one thing my clients always ask for is inline editing (like an excel sheet), somehow people always compare apex with excel?
and sometimes i have to tell them apex has a 50 editable columns limit on inline editing / tabular form.. (has it been uncapped yet?)
and right click menus is another popular one when they doing in line editing.. (can be achieved with some custom css&jquery thou)
so when considering apex for ent' apps, no inline editing over 50 columns might be a constrain?