I suggest that these are two common thoughts for an experienced developer working in Apex and Visualforce on Force.com:
- if my next job doesn’t use Force.com, learning this stuff is taking me nowhere
- in Java you can do it like this, but I’ve just wasted an hour discovering you can’t do it at all in Apex/Visualforce
And the proprietary lock-in of Force.com is uncomfortable for an organization to take on too.
So the VMforce story, well articulated in VMforce and VMware’s “Open PaaS” Strategy offers some promise albeit perhaps further in the future than we might like given the “VMforce will be open for Developer Preview in the second half of 2010” quote from VMforce Provides Spring Cloud Platform.
However, at first sight the winner here looks like the Java/Spring/JPA developer/organization not the Apex/Visualforce developer/organization. The productivity benefits of the current Force.com proprietary platform are largely in the early stages of projects where you have a ready-made technology stack (including the database) and hosting environment and want to create CRUD pages. As soon as you have to start defining behavior – business logic – and task-oriented UI – custom pages and navigation – the weaknesses kick in and cost a lot of time and effort.
If the VMforce Java/Spring/JPA environment provides similar early stage benefits, then ultimately the ability to create a differentiated product (with multiple hosting options) in a mature and complete environment with good tools support will win compared to the ability to create a more limited product (that is locked in to Force.com hosting) in a distinctly limited environment.