# WebObjects

WO is a free Java framework for developing Internet applications. WO supports Rapid Application Development (RAD) of Ajax, web services, streaming media, file transfers, and many other web technologies. WO was originally developed by and for NeXT computers in the mid 1990's. Originally written in Objective C, NeXT ported it to Java in the late 1990s.
WO has an active developer community which provides support through the WO Developer and WO Deployment email lists. New developers may also find the WO Community Wiki helpful.

## Introduction

* What is WO?
* History
* Naming Conventions
* Foundation
* Objective-C to Java Transition
* Licensing
* Hands On: Hello World - Your First WO Application
* Key Value Coding
* Database Development

## Enterprise Object Framework (EOF)
### Introduction

* Overview

### Modeling

* Overview
* Required Reading
** Entities
** GlobalIDs
** Attributes
** Relationships
** Entity Inheritance
** Fetch Specifications
** SQL Generation
** Code Generation
** Reverse Engineering
** Common Pitfalls and Troubleshooting
** EOModeler
** EOModeler on Windows
** Booleans
* Advanced
** JDBC
** JNDI
** Stored Procedures
** Prototypes
** Multiple Models
** Custom Attributes
* Examples

### Using EOF

* Overview
* Required Reading
** The EOF Commandments
** EO Enterprise Object
** EO Editing Context
** EO Object Store
** EO Database
** EO Adaptor
** Context and Database Locking
** Faulting
** Fetching
** Updating
** Deleting
** Caching and Freshness
** Optimistic Locking
** Memory Management
** EOF Best Practices
** Configuration Settings
** Common Pitfalls and Troubleshooting
* Advanced
** EOGenerator
** Logging
** EOF Performance Tuning
** Primary Keys
** Compound Primary Keys
** Concurrency
** Validation
** Database Adaptors and Plugins
** Undo and Redo
** EO's and Multiple Editing Contexts
** EOSharedEditingContext
** Raw Rows
** Batch Fetching
** Fetch Limits
** Bulk Operations
** Schema Changes
** Delegates and Notifications
** Multiple Stacks or Instances
** Custom Qualifiers
** Localization and Internationalization
** Default Values
** Custom EOAdaptor
** EOF Traces
** Problems
* Tips and Tricks
* Examples
* Help! EOF is Doing Strange Things!

## Web Applications
### Introduction

* Overview

### Development

* Overview
* Required Reading
** Apache
** WO Adaptor
** WO Application
** WO Session
** WO Component
*** Binding Synchronization
*** Code, Templates, and WODs
*** Built-in Components
** Component Actions
** Direct Actions
** Request-Response Loop
** Using EOF in a WOA
** Authentication and Security
** General Best Practices
** WOForm Best Practices
** WODisplayGroup
** Debugging Techniques
** Direct Connect
** Frameworks
** Ajax
** CSS
** Sending Emails
** The Build Products
** Errors and Explanations
** Common Pitfalls and Troubleshooting
* Advanced
** Audit Trails
** Backtracking
** Concurrency
** Image Thumbnailing
** Database vs Filesystem (aka Images in the Database?)
** WOLongResponsePage
** Stateless Components
** Non-HTML WO's
** WOEvents and Logging
** PDF Generation
** Excel Generation
** SSL
** Localization and Internationalization
** Testing and JUnit
** Custom Error Handling
** Custom Request Handlers
** Custom Templates
** Calling Commandline Applications
** High Performance WOA's and WO's
** Profiling WO Apps
** J2EE Integration
** WO and Subversion
** Third Party Jars
** Generating Static Pages
** Cocoa EO Applications
** Custom Resource Manager
** Persistent Sessions
** How Forms Work
* Development on Windows
* Tips and Tricks
* Examples
** Hands On: Hello World - Your First WO Application
** Page Layout
** List Components
** Calendar Component
** Path Inspector
** Alphabetic List
** Login
** Anchors
** Open Link in New Window
** Return a File

### Deployment

* Overview
* Required Reading
** Apache
** Memory Settings
** Standard Deployment
** wotaskd
** Java Monitor
** Logging
** Split Install
** Common Pitfalls and Troubleshooting
** Deployment Black Art Cheat Sheet
* Advanced
** WOStats
** Additional Monitoring
** Scheduled Restart
** Clustering and Load Balancing
** J2EE and Servlet Deployment
** Tomcat Deployment
** High-Performance Configuration
** Killing WOA Processes
** Debugging Frozen Deployed Instances
* Platform Specifics
** Mac OS X Server
** Linux
** Solaris
** FreeBSD WO5.2
** FreeBSD WO5.3
** FreeBSD 6.2 WO 5.3.3
** FreeBSD 6.x WO 5.3.3 using port system with many options
** Windows
* Helpful Tools & Shellscripts

## Web Services

* Overview
* Required Reading
** WO as a Web Service Provider
** WO as a Web Service Consumer
** Interoperability
** Common Pitfalls and Troubleshooting
* General Info
** Instructions for .NET consuming Direct to WebServices
** Testing Services with Terminal
* Advanced
** Sending Large Data
** How to Trust Any SSL Certificate
** Problems
** Controlling Enterprise Object Serialisation
** Controlling WSDL Service Location
** Integration with WebServicesCore on MacOS-X
** Working With Temporary GlobalIDs
* Examples

## Complementary Frameworks
### Project WONDER

* Overview
* Required Reading
** Installing
** Quickstart
** History
** Frameworks
*** Ajax
*** DynaReporting
*** ERCalendar
*** ERChangeNotificationJMS
*** ERCoreBusinessLogic
*** ERDirectToWeb
*** ERExtensions
*** ERIMAdaptor
*** ERJavaMail
*** ERPlot
*** ERPrototypes
*** ERSelenium
*** ExcelGeneration
*** JavaWOExtensions
*** PostgresqlPlugin
*** SVGObjects
*** Validity
*** WOOgnl
*** WOPaypal
** Adaptors
** PlugIns
* Advanced
* Examples

### WireHose

* Overview
* Basic Concepts
** Content Management
** Personalization
** Access Control
** Dynamic Layouts
** Rapid Development
* Reference
** Installation
** Online Reference Library
*** Developer Overview
*** Java API Reference
*** Properties Reference
*** Database setup
*** Regular Expressions
* Recently Deployed Sites
** Paizo.com
** Eurovision Song Contest Store
** Bilka Music Download Store
** Jubii Music Download Store
** Uziing (Scandanavian "Toys-R-Us") Music Store (UI is all in Flash)

### LEWOStuff

* Overview

### GVC Frameworks and GVC.SiteMaker

* Overview

## Development Tools

* Overview
* Eclipse and WOlips
* Xcode
* EOModeler
* WOBuilder
* Running Though Apache

## Direct-To

* Overview
* Required Reading
** Web
** Java Client
** Common Pitfalls and Troubleshooting
* Advanced
** ERD2W - part of the WONDER frameworks
* Examples

## Case Studies

* iTunes Music Store
* .Mac
* Apple Store
* Original Dell Store
* Radar
* ShopToIt.ca
* EverLearn
* WO Showcase
* WO Sites

## Java Client

* Overview
* Required Reading
* Advanced
* Interface Builder
* svn
* Examples

## Testing

* Load Testing WO Apps with JMeter
* WOUnitTest

## Database Compatibility / Comparisons

* FrontBase
* OpenBase
* MySQL
* Postgresql
* Oracle
* Sybase
* SQLServer
* Data Migration
* Informix

## Alternative Technologies Pros / Cons

* ASP.NET
* ASP.NET + Monorail
* JSP and Taglibs
* EJB
* Hibernate
* Core Data
* Cayenne
* Tapestry
* Ruby on Rails
* Struts
* WebWork
* SOPE

## Additional Resources

* Websites
* Mailing Lists
* Tutorials
* Books
* Periodicals
* Authors
* Training