WebObject's hallmark features are its object-orientation, database connectivity, and prototyping tools. Applications created with WebObjects can be deployed as web sites, Java WebStart desktop applications, and/or standards-based web services.
WebObjects was maintained by Apple for quite a while. However, because Apple has stopped maintaining the software, it now is instead maintained by an online community of volunteers. This community calls it "Project Wonder".
Apple acquires NeXT, and continues to maintain the software
Following NeXT's merger into Apple Inc. in 1997, WebObjects' public profile languished. Many early adopters later switched to alternative technologies, and currently Apple remains the biggest client for the software, relying on it to power parts of its online Apple Store and the iTunes Store — WebObjects' highest-profile implementation.
WebObjects was part of Apple's strategy of using software to drive hardware sales, and in 2000 the price was lowered from $50,000 (for the full deployment license) to $699. From May 2001, WebObjects was included with Mac OS X Server, and no longer required a license key for development or deployment.
WebObjects transitioned from a stand-alone product to be a part of Mac OS X with the release of version 5.3 in June 2005. The developer tools and frameworks, which previously sold for US$699, were bundled with Apple's XcodeIDE. Support for other platforms, such as Windows, was then discontinued. Apple said that it would further integrate WebObjects development tools with Xcode in future releases. This included a new EOModeler Plugin for Xcode. This strategy, however, was not pursued further.
In 2006, Apple announced the deprecation of Mac OS X's Cocoa-Java bridge with the release of Xcode 2.4 at the August 2006 Worldwide Developers Conference, and with it all dependent features, including the entire suite of WebObjects developer applications: EOModeler, EOModeler Plugin, WebObjects Builder, WebServices Assistant, RuleEditor and WOALauncher. Apple had decided to concentrate its engineering resources on the runtime engine of WebObjects, leaving the future responsibility for developer applications with the open-source community. The main open-source alternative — the Eclipse IDE with the WOLips suite of plugins — had matured to such an extent that its capabilities had, in many areas, surpassed those of Apple's own tools, which had not seen significant updates for a number of years.
Apple promised to provide assistance to the community in its efforts to extend such tools and develop new ones. In a posting to the webobjects-dev mailing list, Daryl Lee from Apple's WebObjects team publicly disclosed the company's new strategy for WebObjects. It promised to "make WebObjects the best server-side runtime environment" by:
Improving performance, manageability, and standards compliance
Making WebObjects work well with Ant and the most popular IDEs, including Xcode and Eclipse
Opening and making public all standards and formats that WebObjects depends upon
WebObjects 5.4, which shipped with Mac OS X Leopard in October 2007, removed the license key requirement for both development and deployment of WebObjects applications on all platforms. All methods for checking license limitations were then deprecated.
The end of WebObjects, and the beginning of Project Wonder
In 2009, Apple stopped issuing new releases of WebObjects outside Apple. The community decided to continue development with Project Wonder, an open-source framework which is built on top of the core WebObjects frameworks and which extends them. For example, Project Wonder has updated development tools and provides a REST framework that was not part of the original WebObjects package.
Though once included in the default installation of Mac OS X Server, WebObjects was no longer installed by default starting with Mac OS X Snow Leopard Server and shortly after, Apple ceased promoting or selling WebObjects. As of 2016, WebObjects is actively supported by its developer community, the "WOCommunity Association", by extending the core frameworks and providing fixes with Project Wonder. The organization last held a Worldwide WebObjects Developer Conference, WOWODC, in 2013.
In May 2016, Apple confirmed that WebObjects had been discontinued.
As of 2016 most WebObjects architects and engineers are using the tools being developed by the WebObjects community. These tools run within the Eclipse IDE and are open-source. The WebObjects plug-ins for Eclipse are known as WOLips.
Building WebObjects frameworks and applications for deployment is typically achieved using the WOProject set of tools for Apache Ant or Apache Maven. These tools are distributed with WOLips.
A WebObjects application is essentially a server-side executable, created by combining prebuilt application framework objects with the developer's own custom code. WebObjects' frameworks can be broken down into three core parts:
The WebObjects Framework (WOF) is at the highest level of the system. It is responsible for the application's user interface and state management. It uses a template-based approach to take that object graph and turn it into HTML, or other tag-based information display standards, such as XML or SMIL. It provides an environment where you can use and create reusable components. Components are chunks of presentation (HTML) and functionality (Java code) often with a parameter list to enhance reusability. WebObjects Builder is used to create the HTML-templates and creates the .wod-file linking, for instance, a Java String object to interface objects like an input field in a web form.
The Enterprise Objects Framework (EOF) is, perhaps, the hallmark feature of WebObjects. EOF communicates with relational databases and turns database rows into an object graph. Using EOModeler the developer can create an abstraction of the database in the forms of Java objects. In order to access or insert information into the database the developer simply accesses the Java Enterprise Objects (EOs) from their business logic. After that EOF manages the Enterprise Objects and automatically creates the required SQL-code to commit the changes to the database.
Java Foundation. Both Enterprise Objects and WebObjects rest on the aptly named Java Foundation classes. This framework contains the fundamental data structure implementations and utilities used throughout the rest of WebObjects. Examples include basic value and collection classes, such as arrays, dictionaries (objects that contain key-value pairs) and formatting classes. Java Foundation is similar to the Foundation framework contained in Apple's Cocoa API for macOS desktop applications, however Java Foundation is written in Pure Java as opposed to Cocoa's Objective-C (with its Java bridge runtime wrapper). Foundation classes are prefixed with the letters "NS" (a reference to their NeXTSTEP OS heritage). Since the transition of WebObjects to Java in 2000, the functionality of many of Apple's Java Foundation classes is replicated in Sun's own JDK. However, they persist largely for reasons of backwards-compatibility and developers are free to use whichever frameworks they prefer.
Rules-Based Rapid Application Development (RBRAD)
WebObjects features a set of rapid development technologies that can automatically create a Web application without the need to write any Java code. Given a model file for a database, WebObjects will create an interface supporting nine common database tasks, including querying, editing and listing. Such applications are useful for prototyping or administering a database, perhaps to check relationships or to seed the database with data.
The user interface is generated dynamically, on-the-fly at runtime using a rules-based system—no code is generated. Consequently, one can modify an application's configuration at runtime (using an assistant program) without recompiling or relaunching the application.
Developers can utilize one of three different technologies, depending upon the type of interface they wish to employ:
Direct To Web (D2W) allows developers to rapidly create an HTML-based Web application that accesses a database.
Direct To Java Client allows developers to rapidly create a client desktop application using the Java Swing toolkit. An advantage of Java Client applications is that they can take advantage of the processing power of the client computer to perform operations such as sorting a list of items received from the server.
Direct To Web Services allows developers to rapidly develop Web service-based applications that provide access to a data store.
Advantages of RBRAD
Vastly decreased development and debugging time;
Increased stability through the use of highly exercised code;
By using the information contained in the data model file, applications will not violate database integrity. Normally you would have to write code to avoid such situations and handle errors generated by bad data;
Fully utilizes the validation services provided by WebObjects and Enterprise Objects.
WebObjects is a 100% Java product with the following Java-based features:
Deployment: Applications can be deployed on any operating system that has Java 1.3 or later. Many developers have successfully deployed on Windows and various Linux systems such as Red Hat Linux, Debian and SUSE. Applications can also be hosted on any Java EE compatible application server such as JBoss.
Java EE integration: WebObjects applications can be packaged in a single directory (an exploded .war file) that make it easier to deploy to a Java EEservlet container.
JDBC: Since WebObjects uses JDBC for database connectivity any DBMS that has a JDBC-driver can be used within WebObjects.
Swing interface: WebObjects applications can be delivered to the user as a "Java Client application" or as a Java applet.
WebObjects was originally released by NeXT Computer in March 1996, but was acquired by Apple Inc. with their acquisition of NeXT in December of that year.
1.0 — March 28, 1996
2.0 — June 25, 1996
Pre-release version of WebObjects Builder application.
3.0 — November 1996
Supports a subset of the Java APIs (NT only).
3.5 — December 1997
Enhanced Java support (NT only): all objects and components can be worked on as a set of Java APIs based on a complete implementation of the JDK 1.1.3.
4.0 — September 1998
First version of WebObjects to run on the Mac platform — specifically Mac OS X Server 1.0 (a public release of the beta OS formerly code-named 'Rhapsody').
OPENSTEP 4.2 OS no longer supported; Windows NT now uses a new version of the OpenStep base of libraries and binary support called Yellow Box.
Direct actions introduced whereby actions can be sent directly to an object that can handle it, allowing for simpler, static URLs.
Direct to Web code-free development assistant introduced.
WebObjects and Enterprise Objects Framework provide thread-safe APIs. This means that you can write a multithreaded WebObjects application where you couldn't before. This enables applications that can provide user feedback for long-running requests.
Better tools for managing, configuring and testing the scalability of applications.
Java capabilities are greatly improved over previous version, however compiled Objective-C is still two to three times faster;
Possible to build a fully capable Java client either as a stand-alone app or as an applet with the Interface Builder - all sorts of Swing and Java Bean components are sitting on IB palettes for wiring up.
Developers can now debug applications on a machine that doesn't have a web server present.
EOF 3.0 adds support for a new database, OpenBase Lite, which ships with EOF 3.0 as an unsupported demo.
EOF 3.0 introduces new API, mainly in EOUtilities, to facilitate common programming tasks.
EOModeler adds support for prototype attributes and the ability to create and store complex queries (or EOFetchSpecifications).
4.5 —; March 2000
Integrated XML support using IBM's alphaWorks parser.
New WebObjects Builder interface, specifically in the main window toolbar, the user interface for binding keys, and the table editing user interface. A path view, an API editor, and component validation have been added.
Application profiling tools.
EOF 4.5 comes with a new sample adaptor: the LDAP adaptor.
Direct to Web now allows you to create your own visual style and exposes a great deal of new API.
Java Client extended considerably, including a new user interface generation layer, Direct to Java Client.
First version to support Mac OS X 10.x and Windows 2000.
Addresses incompatibilities with Xcode 2.2 Developer tools on Mac OS X 10.4.
Adds a modified Developer tools license that allows WebObjects applications developed with Xcode 2.2 to be deployed on any compatible platform. The license is available at /System/Library/Frameworks/JavaWebObjects.framework/Resources/License.key after installation.
Adds better SQL Generation in the EOModeler Plug-in design tool in Xcode.
Improved FetchSpecification building in the EOModeler Plugin design tool in Xcode.
Adds a "components and elements" window for improved workflow in WebObjects Builder.
Addresses incompatibilities with Xcode 2.4 Developer tools on Mac OS X 10.4.
As part of the simultaneous release of Xcode 2.4, the Cocoa Java bridge is deprecated along with the following WebObjects applications: EOModeler, EOModeler Plugin, WebObjects Builder, WebServices Assistant, RuleEditor and WOALauncher.
"WebObjects DST Update": Updates WebObjects 5.3 systems to observe the Daylight Saving Time (DST) changes due to come into effect in March 2007 in many countries, including the United States and Canada. Uses the latest DST and time zone information available as of January 8, 2007.
Deprecations: Java Client Nib based applications, Direct to JavaClient based applications, EOCocoaClient based applications, OpenBase no longer example database, Tools (EOModeler, WebObjects Builder, Rule editor)
Combined Component Template Parser that reduces .wo components to single .html files
Generation of XHTML compliant pages
AJAX request handler for enhanced page caching
Added support for secure URL generation
JMX monitoring support
Entity index management in the model
Improved the synchronization with the database
Added support for index generation
Support for enum in attribute conversion
Improved support for vendor specific prototypes (EOJDBCOraclePrototype, EOJDBCFrontBasePrototype, etc.)
"WebObjects 5.4.1 is an update release for the version of WebObjects included in the Mac OS X Leopard tools. This release fixes several bugs in areas such as web services serialization, deployment tools, and database compatibility, among others. This update can be installed on Mac OS X 10.5 Leopard."
Fixed bugs in web services serialization, deployment, databases.
Duplicate primary keys generated by FrontBase JDBC Adaptor under load
Additional issue fixes
Since 2007, the community has held an annual conference for WebObjects developers, WOWODC. In 2007 and 2008, the conference was held the weekend before WWDC, and in 2009, the community promoted two conferences: WOWODC West in San Francisco on June 6 and 7, immediately before WWDC, and WOWODC East in Montreal on August 29 and 30. WOWODC 2010 was held in Montreal on August 27, 28 and 29, 2010. WOWODC 2011 was held in Montreal on July 1, 2 and 3 in 2011. WOWODC 2012 was held in Montreal on June 30, July 1 and 2, 2012. WOWODC 2013 was held in Montreal. WOWODC 2014 was held in Montreal (April 12, 13 and 14). WOWODC 2015 was held in Hamburg on April 25, 26 and 27. WOWODC 2016 was held in Montréal on June 24, 25 and 26
Interest in OpenSource alternatives to WebObjects that use the Objective-C language grew with WebObjects' move from Objective-C (last version WO 4.5.1) to Java (first version WO 5.0). The two frameworks available are SOPE, which has been used as the basis of the OpenGroupware.org groupware server for about eight years, and GNUstepWeb, which is part of the GNUstep project. Open-source rewrites of the EOF frameworks also exist (AJRDatabase, GDL2).
There are also Java-based alternatives:
Wotonomy is a project, hosted on SourceForge, that implements a clean-room, open-source version of the WebObjects 5.x system. It provides a near-complete implementation of the MVC web-framework, as well as partial implementations of Foundation, Control, and Data layers, and other features. It is sufficiently functional for low-transaction volume, single-source database applications. While the project's structure was re-organized in 2006 around an Apache Maven build infrastructure and migrated to the Subversionrevision control system, there has not been any substantial update to the codebase since 2003.