Java Client-Overview
Java Client is a Three-Tier development model for WebObjects. The interface is a Java Application instead of a web page or web service. One of the big advantages of Java Client is that you can easily program client-side logic into the user interface that requires little or no direct communication with the server. This allows for a rich client experience without the complications of Ajax, but now requires extensive Swing programming which has it's own set of hardships.
Historically there were three methods of WebObjects Java Client development:
- Direct To Java Client (D2JC)
- Java Client using Interface Builder to create NIB files that define the UI
- Java Client using Swing
The first two types used other files (XML/NIB files) to build the Swing code during run-time. This made for quick development times requiring very little Java code. D2JC was very flexible with the UI controlled almost entirely by text-based configuration files (the same rules-system used by Direct to Web) and major changes to the underlying .eomodel file could often-times be reflected in the UI with no refactoring at all.
Unfortunately both of these first two methods suffered from low usage and therefore little support was available within the community. Both have since been deprecated. NIB-based development was deprecated due to the deprecation of the tools required for development. D2JC has been deprecated as well, even though no external tools were required to build or modify a D2JC application.
The good news is that building a WebObjects Java Client application "The Third Way" using pure Swing has not been deprecated and still exists in WO 5.4.
While there are not a lot of WebObjects Java Client projects when compared to the quantity of Web-Based projects, it seems to be getting more attention now than it has in several years.
There are a couple third-party developers working on solutions to streamline the development of pure Swing/SWT/etc Java Client applications for Web Objects.
- Paolo Sommaruga's JPBinding http://www.jpaso.com/name/XMLBindingForJavaClient which is a WebObjects framework that allows building WebObjects Java Client (not D2JC) without the use of Interface Builder and nib files. JPBinding uses a xml file to describe the bindings between the view objects (buttons, tables, text fields, etc) and the model objects (EODisplayGroup, EOAssociation, etc.).