If Amazon's Jeff Bezos had something to say about Apex, he might say "it handles muck so developers don't have to." I refer to muck as heavy lifting. Anybody remember the days when, in DOS, what was being shown on screen had to be painted one pixel at a time? I remember when, because of the way that Lotus 1-2-3 and Flight Simulator use to write directly to the graphics hardware (bypassing the DOS calls designed to do the same thing), they were also used to benchmark the performance of PCs.
Today, a call to the Windows application programming interface (API) that paints a Window from one set of x,y coordinates to another, loads it with content, turns on the scroll bars and so forth does a lot of the heavy lifting that developers use to have to do on their own. One line of code eliminates the need to write a few hundred or a few thousand.To the provider of the solution that does the most heavy lifting for as many developers as it can and as elegantly as possible will go the riches. So, it should come as no surprise that salesforce.com released Apex: a language that's a merger of sorts between Java and SQL and that is prewired to work with a lot of existing salesforce entities so developers don't have to figure that out on their own (aka: heavy lifting).
alesforce.com is getting some criticism for coming out with a new language (it's more a mashup of others) rather than using one of the existing languages that are out there. Some of the criticism is grounded in the fear that using a proprietary salesforce.com-specific language is a lock-in attempt. Yes. To put it bluntly, if you use Apex, you'll end up locked-in. Either that or there'll be a hefty migration price to pay if you look to recreate what you've done on the salesforce.com platform on some other platform. But, what if salesforce.com picked Ruby or PHP? Well, you'd still have to recreate what you've done, even if the target platform supported Ruby or PHP. It's not like you can just take piece of PHP code and drop it on top of salesforce.com's competitors like Siebel, NetSuite, or SugarCRM. The surgery would be major. Six of one, half dozen of the other.
Now, perhaps validating the notion that it's good to have derivations of existing languages that handle more of the heavy lifting than the original "inspirations" did, comes Flapjax. According to Darryl Taft:
Researchers at Brown University have created a new programming language for developing Web applications, known as Flapjax.
The new language makes AJAX-style development easier by hiding complexity, its developers say.
"What we do is present a language that hides the messy details of AJAX," Krishnamurthi said.
"Instead of worrying about building low-level packets, etc., we give you a simple way of saying 'This datum resides on a remote server—send all of my updates to it, and get all updates from it to me.' That's what AJAX is typically used for, but never at that high level of abstraction."