# WebObjects/Overview

The contents of this wikibook are out of date and have now moved to http://wiki.objectstyle.org/confluence/display/WO/Home.
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. Apple provide a suite of tools that you can use to develop your applications, XCode, WebObjects Builder, EOModeler. 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.