Force.com is a Platform-as-a-Service (PaaS) offering from Salesforce.com. It provides infrastructure commonly required by business applications, customizable for the unique requirements of each business through a combination of code and configuration. This infrastructure is delivered as a service on the Internet, where it can be accessed through a web browser and integrated with on-premise applications.
Salesforce.com started out as a Software-as-a-Service (SaaS) application for Customer Relationship Management (CRM). As it grew and became widely adopted, features were added to allow the application to be customized for each company subscribing to it. For example, fields could be added to database tables, validation rules enforced on data, and custom user interface controls embedded on the screen. Over time these features became so substantial and powerful that entirely new types of applications could be constructed alongside the CRM, at which point the Force.com platform was born.
The features and design philosophy of Force.com sets it apart in the PaaS market. Force.com is specifically designed for business applications, with infrastructure that is uniquely tuned to the needs of these applications. Some examples of this infrastructure are security, user identity, logging, profiling, integration, schema-driven data management, transactions, workflow, and reporting. Contrast this to typical PaaS solutions which provide only raw web and application servers, leaving developers with a significant amount of work before they can write line one of their application.
Force.com has its own programming language called Apex. It allows developers to script interactions with other platform features, including the user interface. Its syntax is a blend of Java and database stored procedure languages like T/SQL, and can be written using a web browser or a plug-in to the Eclipse IDE. One way to understand Apex is as a domain-specific language. Although it won't solve every programming problem, Apex's specialized nature leads to some advantages in learning curve, code conciseness, ease of refactoring, and ongoing maintenance costs.
Force.com provides two approaches for the development of user interfaces: Page Layouts and Visualforce. Page Layouts are inferred from the data model, including validation rules, and then customized using a WYSYWIG editor. For many applications, Page Layouts can deliver some or all of the user interface with no development effort. Visualforce allows developers to build custom user interfaces. It consists of a series of XML markup tags called components. Like JSP, ASP.NET, Velocity, and other template processing technologies, these components format data returned by Apex code.
Some applications are better suited to implementation on Force.com than others. The best applications are centered around structured data with strict sharing and security rules, a user interface composed primarily of forms or wizards, and a need for real-time integration with other systems. But Force.com is not an all-or-nothing proposition. Thanks to its integration capabilities, Force.com can be used together with other cloud platforms to build composite applications.
This article is adapted by Author Jason Ouellette from his book, Development with the Force.com Platform: Building Business Applications in the Cloud, published by Addison-Wesley Professional, Oct. 2009, ISBN 0321647734, Copyright 2010 Pearson Education, Inc. For a complete Table of Contents please visit the publisher site.
About the Author: Jason Ouellette is Chief Architect for Appirio, a leading Force.com ISV and Salesforce Consulting partner. He was previously director of R&D for application products at Composite Software, where he led development of data services for Siebel, SAP and salesforce.com. Jason also has done a one-hour webcast on Force.com.