Skip to content

Thoughts on Saleforce

A community dedicated to making Salesforce, it's products, and partners better...

Click to register with for a FREE 30-DAY TRIAL!


Login Form

Lost Password?
No account yet? Register

Why APEX, and why not Java, C#, VB.NET, PHP, Ruby, etc. etc.?

Stuck on the Apex?
Dog Precariously Perched on Apex
Photo by hangdog

I understand from Investor’s Business Daily via SalesforceWatch that’s new secret sauce is a programming language called "Apex."  My question is, "Why create YAPL?" (Yet Another Programming Language)  Why not leverage one of the many excellent programming languages that already exist? 

Why create the need to learn a whole new language when they could have leveraged one that already exists?  After all, most of the functionality is in the class library; why not just create a class library for Java or C#/VB.NET or PHP or Ruby instead of an entire new language?  Or why not buy Delphi for god’s sake?!?

Naybe is just trying to increase revenues by planning to charge for training and certification?!?  There goes me not trusting’s motivations again. Or maybe it is just arrogance and/or delusions of grandeur on their part?

But bottom line this is a foolish strategy. Clearly wants to see more apps developed for AppExchange but going this route means significant increasing the friction required. And as most of the successful Web 2.0 companies have show, the more you reduce friction, the most quickly you are able to harness collective intelligence.

Before I close, let me point out that I founded and then ran for over a decade an Inc 500-recognized company that sold components for Visual Basic and later to .NET developers. I understand programming languages and I can program in more languages than I have fingers (and I’ve got all ten, thank you very much.) I also understand third party markets like AppExchange extremely well as that’s exactly what I focused on; reselling third party components and tools to developers. So I think I have the authority to comment on this. This strategy of launching a new programming language, though they may eventually be able to tuff it out over the long term to make it look successful is, IMO, just plain dumb.

P.S. Even after bitching about this, I’ll probably still learn Apex. Assuming they don’t limit it to just Enterprise and Universal edition customers, DOH!

6 Responses to “Why APEX, and why not Java, C#, VB.NET, PHP, Ruby, etc. etc.?”

  • Anonymous responded:

    Wait until you see the language to make any judgements. My guess is that the strength of the language does not lie in the syntax chosen (which could have been java, php, ruby, etc, but in the tight binding between the database and the language.

    take a look at the screenshot from zdnet.

    You’ll see that the SQL statement is not a string, and that the datatype returned is of type Lead.

    Also notice the references to Again, metadata from the database that is somehow surfaced in the language.

    What language do you know that supports tight binding to the database? Not java, not php, not ruby.

  • jeremy ross responded:

    ECMAScript would have been nice. Almost everyone knows it, and some kind of O/R mapping could have been implemented in a similar way. I think there is a perception that if some new feature requires an entirely new programming language, then it must be great, profound, sexy, whatever.

  • Sinclair Schuller responded:

    Great read. I found your article after I wrote a similar one at my blog

    Take a look if you’re interested in some discussion around “why Apex”

  • Sridhar Vembu responded:

    An earlier commenter asked:

    My guess is that the strength of the language does not lie in the syntax chosen (which could have been java, php, ruby, etc, but in the tight binding between the database and the language.

    We at Zoho have a service called Zoho Creator which comes with an online scripting language Deluge. That offers a tight integration between the database and progamming level objects. It provides very convenient programmatic access to db objects.

    For example try the sample application

    and look through various tabs, and click on “View Script” on the right.

    This blog post explains it in greater detail:


  • Sridhar Vembu responded:

    Here is a small sample code in Deluge, to create a “Return Book” form. Issued books are shown in a picklist which is populated by doing

    Book[Status == issued].Name

    which is basically a SQL query on the Books table with status “issued”, and you are pulling the name column.

    form Return_Book
    displayname = “Return Book”

    displayname = “Select the book to return”
    type = picklist
    values = Book[Status == “Issued”].Name
    on change
    iss = Issued [(book == input.Select_the_Book && (Return_date is null))];
    if ( is not null)
    set viewdetails = “” + “Issued to : ” + iss.user + ” on ” + iss.issuedate + “”;
    set viewdetails = “Select a valid book”;

  • Mike Schinkel responded:

    Wow, lots of comments! Thanks. I want to really flesh out my reply, so give me a chance before I get back to you.

Add your own comment...