It moved from Objective-C to Java under Apple. Apple discontinued shipping it with OS X Server Snow Leopard, but the frameworks are still available/free. The community picked up where Apple left off with the open source Project WOnder.
It is a full stack development framework. Enterprise Objects Framework(EOF) is the ORM or Model layer like Cayenne or Hibernate. WebObject components are the front end View layer like you might get from Tapestry.
I have yet to find a web framework that rivals its Controller layer, DirectToWeb (D2W). D2W sits between the Model and the View. It can generate Views automatically using information from the model and with customizable direction from a rule system. It also provides controller actions with customizable callbacks.
Out of the box, WebObjects can reverse engineer your database, constructing a full model of it, and D2W can then construct a full blown Create/Read/Update/Delete interface to it with no coding required. If you don't have a database, you build a model and WebObjects can generate the SQL necessary to create the database for you as well.
It's still pretty amazing, despite being treated like an ugly step child by Apple. It still powers the billion dollar iTunes store as well AFAIK.
The developer community is small, but very active. Every year they hold a "World of Web Objects (WOWO)" conference right around WWDC in San Fran.
Project Wonder has done amazing work to bring Ajax and many other "Web 2.0" features to WO.
It does still power the iTunes store, and the Apple Store. A friend of mine that worked at our sister company landed a job with Apple working on the iTunes store, and AFAIK, he's still there doing that today.
Project Wonder was definitely at the core of iTunes Store. They had your typical monolithic web application and used most of the WebObjects technologies.
The Apple Store was different. They had dozens/hundreds of micro services which used WebObjects only in the front i.e. to handle request/response and routing. They may have even switched it out by now.
I've always wanted to work for Apple... care to share any thoughts?
And it's perfectly, utterly awful.
Looking at options today, I feel like a kid in a candy store.
WO also had the added benefit of being a full-stack solution. The way the J2EE spec was built up of sub-specs really contributed to the fragmented Java framework universe. Developers then had to get used to spending think-time reasoning about the way the pieces and "tiers" fit together and less time building coherent apps.
s/Sadly/Gladly/
There's something gloriously simple and effective about the page-is-a-page metaphor. Solid, unambiguous URLs that do what they say on the tin. It's not the "old" way, it's the native way.How about a URL that unambiguously specifies the state of all parts of the page? Paste that in a browser and it pulls up the page with all its dynamic parts set as before.
Obviously "tiny" changes can be performed with client side code without breaking the page-is-a-page metaphor. Look at Facebook -- a good example of an extremely mature application where the page-is-a-page metaphor remains fully intact.
And of course not all websites fit the metaphor, in which case you obviously should not use it.
This has nothing to do with looking cool. Your server generated dynamic full page can look great. Didn't you see Steve Jobs's Dodge site? This has to do with user experience, in particular performance. The problem with Steve's site is that a slight change in search criteria resulted in a two second full page refresh. It made me want to shop for a Ford.
Sure their are cases where full page refresh is fine. Shopping isn't one of them. Reading a news story that spans 10 pages isn't one of them. Most of what I use the internet for isn't one of them.
And then there are web applications. Without partial page refresh these feel like shopping for a Dodge in 1996.
I use Ghostery to block a lot of tracking JS. This includes things like FB stuff. The number of sites that break because a call to "FB.init" throws an exception is astonishing.
It's ridiculous how quickly people (by which I mean developers) have forgotten the concepts of graceful degradation and progressive enhancement.
There are very few use cases where a web application simply cannot function without javascript.