WebObjects
|
Template:Infobox Software WebObjects is a Java Web application server by Apple Computer. It has a range of tools and frameworks to develop and deploy Web applications and Web services. Its hallmark features are its deep object-orientation, powerful data connectivity features and rapid prototyping tools. Applications created with WebObjects can be Web browser-based, or have the full interactivity of a stand-alone Java desktop application. Since version 5.2, developers have also been able to offer their applications as standards-based Web services.
As the first object-oriented Web application server in March 1996, WebObjects has attained a level of maturity unrivaled by its competitors. Throughout its history the technology has powered some of the most innovative Web applications for major corporations such as Disney, Dell Computer and the BBC. Its most high profile implementation in recent years has been Apple's own iTunes Music Store, launched April 2003.
Originally costing $50,000 for a full deployment license, the price of WebObjects was cut to $699 in 2000. In recent years, WebObjects has aligned more closely with Apple's corporate strategy of using its software to drive hardware sales. WebObjects deployment software was included free with the introduction of Apple's Xserve server hardware in June 2002, and has been included as an integral part of Mac OS X Server since the v.10.3 Panther release. The development tools and frameworks have also been free since June 2005 when WebObjects 5.3 was integrated with Apple's Xcode IDE.
While Apple's business model has resulted in WebObjects becoming free of charge, the corollary is that official support for other platforms, such as Windows, has been discontinued (as of v5.3). However, while the official development tools are now Mac OS X only, the deployment runtime remains pure Java and Apple does not prevent users from deploying WebObjects applications on alternative platforms which support Java (provided they purchase a copy of Mac OS X Server for the necessary deployment license).
Contents |
What Is WebObjects?
- A collection of proprietary frameworks: WebObjects comes with a rich, mature collection of proprietary Java frameworks that provide the functionality common to most Web applications;
- A set of Web application development tools: WebObjects uses the Xcode IDE which ships free with Mac OS X, along with WebObjects-specific tools such as WebObjects Builder and EOModeler;
- A Web application server: WebObjects includes a stand-alone, J2SE-based Web application server with a Web-based administration tool called JavaMonitor. Applications can also be deployed using the open-source, industry standard JBoss;
- Rules-Based Rapid Application Development: Given a data model, WebObjects can automatically create a customizable Web application without writing a single line of code.
Advantages of WebObjects
WebObjects has a number of key technologies that give it a significant advantage over other application servers:
- Zero Cost: The tools are frameworks required to develop and deploy WebObjects applications are free to users of Mac OS X.
- Streamlined Database Access: Database tables are represented in WebObjects as collections of Java classes called Enterprise Objects. The developer creates a "model" that maps objects to database rows. This high level of abstraction relieves developers from the drudgery of writing inflexible, database-specific code. With the use of drivers, such as JDBC, WebObjects automatically handles the writing of appropriate SQL code.
- Separation of Presentation Logic, Business Logic, and Data: WebObjects conforms to the MVC programming paradigm, enforcing a clean separation of presentation (Web pages), logic (Java code) and data (data store).
- State Management: Without using cookies, WebObjects provides objects that allow you to maintain information for the life of a particular user session, or longer.
- Pure Java: WebObjects applications are 100% Pure Java, which means they can be deployed on any platform with a certified Java 2 virtual machine (although you must have Mac OS X Server in order to get a license key);
- Scalability and Performance: You can run multiple instances of your application, either on one or on multiple application servers. Developers can choose from one of several load-balancing algorithms (or create their own).
Core WebObjects frameworks
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 Mac OS X 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 the 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, you can modify your 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 you to rapidly create an HTML-based Web application that accesses a database.
- Direct To Java Client allows you 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 you 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 leverages the validation services provided by WebObjects and Enterprise Objects.
Java compatibility
WebObjects is a 100% Pure Java solution 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, Debian and SUSE. Applications can also be hosted on any J2EE-compatible application server such as JBoss.
- J2EE integration: WebObjects applications can be packaged in a single directory (an exploded .war file) that make it easier to deploy to a J2EE servlet 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 version history
WebObjects was originally released by NeXT Computer in March 1996, but was acquired by Apple Computer when Apple bought NeXT in December of that year.
- 1.0 — March 28, 1996
- Debut release.
- 2.0 — June 25, 1996
- Pre-release version of WebObjects Builder application.
- 3.0 — November 1996
- 3.1
- Supports a subset of the Java APIs.
- 3.5 — December 1997
- Enhanced Java support: 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 able to run on the Mac platform (specifically PowerMac G3 systems running the original Mac OS X Server (formerly 'Rhapsody').
- Direct to Web code-free development assistant introduced.
- Supports the development of multi-threaded 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.
- 4.5 — March 2000
- Last version which supported the Objective-C API.
- Integrated XML support using IBM's alphaWorks parser.
- New WebObjects Builder interface.
- Application profiling tools.
- Back-end LDAP adaptor.
- Direct to Java Client.
- 5.0 — May 2001
- Major rewrite from Objective-C to Java.
- 5.1 — January 10, 2002
- Create and deploy Enterprise JavaBeans using the built-in container based on OpenEJB.
- Deploy WebObjects applications as JSPs or Servlets on top of third-party application servers.
- Access and manipulate data stored in JNDI or LDAP directory services.
- Automatically generate desktop Java client applications with rich, interactive user interfaces.
- Leverage the WebObjects template engine and object-relational mapping for seamless XML messaging.
WebObjects52.gif
- 5.2 — November 2002
- Web Services support.
- Improvements to J2EE integration
- Java Web Start support.
- Improvements to robustness and stability of Enterprise Objects.
- Major bug fixes led many developers to hail this as the first stable 5.x release of WebObjects.
- 5.2.1 — November 2002
- Resolved some incompatibilities with the latest Java 1.4.1 implementation for Mac OS X.
- 5.2.2 — August 2003
- 5.2.3 — February 2004
- Various bug fixes.
- 5.2.4 — May 2, 2005
- 5.3 — June 6, 2005
- WebObjects developer tools included free with the Xcode IDE (v2.1).
- Development and deployment on platforms other than Mac OS X no longer supported by Apple.
- EOModels can be created and edited within Xcode with a new EOModeler plugin that integrates CoreData modeling tools.
- WebObjects Builder has UI enhancements and generates HTML 4.0.1 code.
- WebObjects runtime now supports HTML 4.0.1.
- NSArray, NSDictionary and NSSet now implement the java.util.Collection interfaces.
- Axis 1.1 integrated with the Direct To WebServices feature.
- WebObjects is qualified against Oracle 10g using the 10.1.0.2 JDBC drivers; Microsoft SQL Server 2000 8.00.194; MySQL 4.1.10a; OpenBase 8.0; Oracle 9i Enterprise Edition Sybase ASE 12.5
OpenSource alternatives
With the move of WebObjects from Objective-C (last version WO 4.5.1) to Java (first version WO 5.0), people's interest grew in OpenSource alternatives to WebObjects which kept using the Objective-C language. The two frameworks available are SOPE which is used as the basis of the OpenGroupware.org groupware server for about eight years, and GNUstep-web, which is part of the GNUstep project.
Alternatively the Apache Tapestry has a smiliar design and philosophy with WebObjects. The EOF framework can be done with Cayenne.
Sites Using WebObjects
- The iTunes Music Store (http://www.apple.com/itunes/store/)
- The Apple Store (http://store.apple.com/)
- BBC News (http://news.bbc.co.uk/)
- The Hunger Site (http://www.thehungersite.com/cgi-bin/WebObjects/CTDSites)
- flightarrivals.com (http://www.flightarrivals.com/cgi-bin/WebObjects/Flights)
- University of Oslo (http://www.usit.uio.no/it/web/webobjects/)
- MoveEngine powered by WhiteFence.com (http://www.moveengine.com/)
- GreaterGood.com (http://www.GreaterGood.com/)
- Disneyland Reservation (http://dlr.reservations.disney.go.com/cgi-bin/WebObjects/TravelDLIBC/)
- Suburban Wheel Cover Web Store (http://www.suburbanwheelcover.com/)
- Deutsche Bank (http://www.db.com/)
- DocMorris (http://www.docmorris.com/)
- Skramkoob (http://www.skramkoob.com/)
- Toyota New Zealand (http://www.toyota.co.nz/)
External links
Information and code examples
- Apple WebObjects product page (http://www.apple.com/webobjects/)
- Apple WebObjects developer page (http://developer.apple.com/webobjects)
- Apple WebObjects Reference Library (http://developer.apple.com/referencelibrary/WebObjects/index.html)
- Project WONDER - a collection of free WebObjects frameworks and tools (http://wonder.sourceforge.net/)
- WOCode - a repository of WebObjects code samples (http://wocode.com/cgi-bin/WebObjects/WOCode)
- WODev - a WikiWikiWeb site for the WebObjects developers (http://wodev.spearway.com/)
- WODeveloper - sample code and a powerful search engine over the OmniGroup mailing lists (http://www.wodeveloper.com/)
Mailing Lists
- Apple WebObjects development mailing list (http://lists.apple.com/mailman/listinfo/webobjects-dev)
- Apple WebObjects deployment mailing list (http://lists.apple.com/mailman/listinfo/webobjects-deploy)
- OmniGroup WebObjects-dev mailing list (http://www.omnigroup.com/developer/mailinglists/webobjects-dev/)
- OmniGroup WebObjects-admin mailing list (http://www.omnigroup.com/developer/mailinglists/webobjects-admin/)
- OmniGroup WebObjects-talk mailing list (http://www.omnigroup.com/developer/mailinglists/webobjects-talk/)
- OmniGroup EOF mailing list (http://www.omnigroup.com/developer/mailinglists/eof/)
Open Source Alternatives
- OpenGroupware.org: SOPE (http://www.opengroupware.org/en/devs/sope/)
- GNUstep Web (http://www.gnustepweb.org/)
- Apache Tapestry (http://jakarta.apache.org/tapestry/)
- Cayenne (http://www.objectstyle.org/cayenne/)de:WebObjects fr:WebObjects