Enterprise Objects Framework
|
Enterprise Objects Framework (or more commonly, EOF) is an object-relational mapping product which is currently included in the WebObjects product sold by Apple, although it was originally created by NeXT for use on NeXTSTEP and OpenStep and sold as a separate product. EOF evolved from an "lower level" toolkit known as DB Kit that was available on NeXTSTEP, and became a fairly widely used enterprise programming tool in the mid-1990s.
Contents |
How EOF works
EoModeler.png
History
In the early 1990's NeXT Computer recognized that connecting to databases was essential to most businesses and yet also potentially complex. Every data source has a different data-access language (or API), driving up the costs to learn and use each vendor's product. The NeXT engineers wanted to apply the advantages of object-oriented programming, by getting objects to "talk" to relational databases. As the two technologies are very different, the solution was to create an abstraction layer, insulating developers from writing the low-level procedural code (SQL) specific to each data source.
The first attempt came in 1992 with the release of Database Kit (DBKit), which wrapped an object-oriented framework around any database. Unfortunately, NEXTSTEP at the time was not powerful enough and DBKit had serious design flaws.
EoSleeve.jpg
EOF achieved a modest level of popularity in the financial programming community in the mid-1990's, but it would come into its own with the emergence of the World Wide Web and the concept of Web applications. It was clear that EOF could help companies plug their legacy databases into the Web without any rewriting of that data. With the addition of frameworks to do state management, load balancing and dynamic HTML generation, NeXT was able to launch the first object-oriented Web application server, WebObjects, in 1996, with EOF at its core.
In 2000, Apple Computer (which had merged with NeXT) officially dropped EOF as a standalone product, meaning that developers would be unable to use it to create desktop applications for the forthcoming Mac OS X. It would, however, continue to be an integral part of a major new release of WebObjects. WebObjects 5, released in 2001, was significant for the fact that its frameworks had been ported from their native Objective-C programming language to the Java language. Critics of this change argue that most of the power of EOF was a side effect of its Objective-C roots, and that EOF lost the beauty or simplicity it once had. Third-party tools, such as EOGenerator, help fill the deficiences introduced by Java (mainly due to the loss of categories).
EOF and Core Data
Many of the concepts behind EOF were re-introduced to desktop application developers with the release of Mac OS X Tiger in April 2005. Core Data is an object-graph management and persistence framework for developers using Apple's Cocoa API. In simple terms, this means that Core Data organizes the application's model layer into a set of defined in-memory data objects. Core Data tracks changes to these objects and can reverse those changes on demand, such as when a user performs an undo command. Then, when it is time to save changes to an application's data, Core Data takes care of archiving the objects to a persistent store.
However, despite many similarities, the two technologies have different goals. EOF is a Java-based framework that connects as a client to a database server. Core Data is an Objective-C-based framework designed to support desktop application development. Core Data supports a number of features not supported by EOF, and vice-versa:
Features Supported Only by EOF
EOF allows you to use custom SQL, shared editing contexts, and nested editing contexts. Core Data does not provide the equivalent of an EOModelGroup—the NSManagedObjectModel class provides methods for merging models from existing models, and for retrieving merged models from bundles. EOF supports pre-fetching and batch faulting of relationships, Core Data does not.
Features Supported Only by Core Data
Core Data supports fetched properties; multiple configurations within a managed object model; local stores; and store aggregation (the data for a given entity may be spread across multiple stores); customization and localization of property names and validation warnings; and the use of predicates for property validation.
External links
- Apple WebObjects product page (http://www.apple.com/webobjects)
- Apple WebObjects documentation (inc. EOF) (http://developer.apple.com/documentation/WebObjects/index.html)
- article in linuxjournal about GDL2 (http://www.linuxjournal.com/article.php?sid=7101&mode=thread&order=0&thold=0)de:Enterprise Objects Framework