This post is for those Java Developers who are looking for a transition to Salesforce or might
have already started. Understanding the basic points mentioned here will help them with in this
Salesforce products knowhow: Salesforce is a product with well defined release cycles. Every
developer should be on top of the new features of Salesforce release announcements.
Salesforce comes with bag full of useful side products like Desk.com, Work.com, Data.com,
Communities etc and knowledge of these are very much required. Salesforce out of box Sales
and Service model which completes it as a CRM tool are a must to be learned for a Java
developer. One should also be aware of the internal Data model which is accessible via direct
Object referencing much as in JavaSpringHibernate combination.
Multi-tenant Architecture: Java application run on a JVM and can be hosted on Servers or run
locally but Salesforce is a pure Cloud based Technology. For Java developers it is a must to
understand that this Multi-tenant Architecture. The multi tenant design of a cloud service can
have a dramatic impact on the application delivery and productivity of an IT organization, yet
most CIOs, CTOs, system architects, and developers who use clouds don’t give it a second
thought because it’s all magic that transparently happens behind the scenes.
Integration: Salesforce being a CRM need lots of integration with other 3rd party tool. This is
one of the most common scenario in which a Java developer learns about Salesforce and take
the path of enlightenment. Salesforce also provide ready made APIs for integration. Java
developers have several options for integrating Java based systems with Force.com and
● Restful APIs, such as the Force.com REST API, Bulk API, and Streaming API.
● Web Services Connector (WSC)
WSDL generation and consumption is much as a one click process.
Programming Language: Salesforce Apex and Java programming language are quite similar.
Apex Code uses a Javalike syntax, and like Java, Apex Code is strongly typed, which is that
the code is compiled by the developer before it is executed, and that variables must be
associated with specific object types during this compile process. Control structures are also
Javalike, with for/while loops and iterators being exactly the same. Apex Code is much more
limited in scope; whereas a language and platform like Java can be used to build almost any
kind of application. Apex is exclusively for building business applications to manage data and
processes within Force.com platform framework. Salesforce library of functions and system
commands are must for a Java developer to learn and understand as quickly as possible.
Salesforce and Java have some common Design patterns as well.
Packaging and Deployment: Java Classes developed needs packaging before deployment
and every developer needs to do their own end of unit testing & bug fixing. Creating Jar is a
standard process done manually or by IDE whereelse Force.com gives some readymade
restrictions, governer limits and process for Apex code development, Testing, bug fixing and
development in Salesforce CRM is always specific to certain edition. All the development
components like Apex classes, Visualforce pages, Validation rules etc can be added to
Changesets, Managed or Unmanaged Packaging and Metadata. All of these methods have
and metadata group is for code deployment.