WebObjects is Apple's suite of tools and object-oriented frameworks for creating and deploying scalable, reusable web and client-server applications for the Internet and intranets. WebObjects supports the development, deployment, and extension of standards-based web services without the need to write low-level SOAP, XML or WSDL code. Tools enable code-free generation, configuration, and testing of applications from existing data assets.

According to Apple, "WebObjects gives you the power to quickly develop robust applications that can be distributed over the Internet" (http://developer.apple.com). If you ask me, that sounds a little like 'marketing-speak' and it doesn't really tell you much. Wikipedia have a much more thorough definition of WebObjects which states, in part, that WebObjects is "a range of tools and frameworks to develop and deploy Web applications and Web services" (my emphasis - http://en.wikipedia.org/wiki/WebObjects). To me, this is a much better definition as it makes it clear that WebObjects is both a set of tools (software applications) and frameworks (programming libraries) that you can use to both develop and then deploy web applications.

What does this mean to you?

WebObjects includes a number of applications that you can use to develop the interface of your application, write underlying application logic and model the database that you'll use to store your data. It also includes a number of programming libraries that you can call on so that you don't have to handle many of the mundane tasks associated with developing a web application.

Another way of defining WebObjects is that it is the technology that powers the iTunes Music Store (http://www.apple.com/itunes/).

Why Would You Care?

Because your time is best spent thinking about things specific to your applications (rather than dealing with the same generic data-access code every time).

The thing that makes you unique are your ideas and your understanding of your customers' or users' needs. When you're writing a web application it is because you've got a fantastic new idea or because you've identified a need that can be met by a new application. As such, your time is best spent writing code that relates directly to the purpose of your application. Why should you have to spend your time (re)writing the same kind of routine code that has already had to be written for every other web application?

To me, the beauty of WebObjects is that it allows me to focus on the parts of my application that are unique - rather than requiring me to write lots of repetitive code.

So What's this Book All About Then?

One of the criticisms that has been levelled at WebObjects is that there aren't many resources available to help people learn how to use WebObjects. Whilst I'm not sure if I agree with this assessment, the more quality material that is available, the better. This wikibook is an attempt to add to the available resources for people who are new to WebObjects and those who just want to know more.

Before you can start developing your first WebObjects applications it is worth understanding a bit about the programming libraries that you'll be using. When you develop WebObjects applications, you'll be writing Java code and making use of the WebObjects frameworks. This book assumes that you're familiar with Java and introduces you to the WebObjects frameworks. The fundamental frameworks used in developing even the most basic WebObjects applications are covered in the Foundation section, while the powerful framework that is used to interact with databases is covered in the Enterprise Object Framework (EOF) section. Whilst WebObjects comes with very rich set of programming libraries, there are a number of open source libraries that you can make use of in developing your applications. This book introduces one such library in the Project WONDER section.

WebObjects allows you to create HTML-based web applications (see the Web Applications section), SOAP-based web services (see the Web Services section) and client-server applications (see Java-Client).

Once you start to become familiar with WebObjects you might like to explore different ways that you can develop WebObjects applications. Beginning with WebObjects 5.4, WOLips is now the preferred development tool for WebObjects, and you can also use it with WebObjects 5.3. These tools are described in detail in the Development Tools section which also covers alternative tools that you might be interested in using.

Where Do I Start?

If you've come here because you want to know more about the history of WebObjects and to understand the underlying concepts in more detail - continue reading the rest of this book in order. As you progress through the chapters you'll develop an in-depth understanding of WebObjects.

If on the other hand, you've come here because you've just noticed this weird 'WebObjects thing' in the optional extras section of the Developer Tools installer that comes with Mac OS X and you're itching to get started developing your first application, you might want to jump ahead to the Web Applications section.

State of Play (Late 2007)

(summarised from a WO mailing list post from Mike Schrag)

  • WebObjects is very much alive. WebObjects 5.4 represents a significant move forward for the platform.
  • EO Modeler has been superceeded by Entity Modeler. Entity Modeller is a plugin for Eclipse which allows for editing and viewing of data models. Funding has been provided for development of a stand-alone modeller that functions outside of Eclipse for use with other IDEs.
  • WebObjects Builder has been superceeded by Component Editor. Component editor is a plugin for Eclipse which allows for completion of key-paths in bindings as well as being able to validate key-paths. The Component Editor does not have the graphical-markup which some WebObjects Builder users are familiar with, but after some usage many users find it a much more productive environment to work in.
  • RuleEditor is superceeded by Rule Modeler. This is found in Project Wonder.
  • Whilst it is possible to develop WebObjects applications in Xcode, any specific support for WebObjects in Xcode is no longer present. The community has strongly gravitated towards the Eclipse platform for future development and a team of people in the community has developed a set of tools within Eclipse for working with WebObjects projects in Eclipse.
  • Java Client support is uncertain.
  • JavaMonitor and wotaskd are open-sourced in MacOS X 10.5.
  • EOGenerator, EOReporter, and DBEdit no longer work in MacOS X 10.5. Apple and the community has provided replacements to EOGenerator.
  • ProjectWonder continues to develop frameworks (containing major and minor enhancements, extensions, and in a few cases, bug-fixes) and tools for use with WebObjects.
  • WOLips is the name for the toolset for development of WebObjects applications under Eclipse. These tools already support many of the WebObjects 5.4 features.
  • WebObjects 5.4 deploys by default against Apache 2.2 instead of Apache 1.3.