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 pure Swing
The first two types used other files (XML/NIB files) to build the Swing code during run-time. This can make for quick development times requiring very little Java programming.
D2JC is very flexible with the UI generated almost entirely at runtime by text-based configuration files (the same rules-system used by Direct to Web). This allows the developer to go from Database or Model to a native-UI application in just minutes. Major changes to the underlying database/EOModel can often-times be reflected in the UI with little or no Java programming or refactoring at all.
NIB-Based development used Project Builder/Xcode's Interface Builder application to create cocoa-based NIB files that were then interpreted at run-time using the Cocoa-Java Bridge to create a pure Swing application. NIB-based development has been deprecated due to the deprecation of the tools required for development and the Cocoa-Java Bridge.
Swing-based Java Client Development has recently gotten much simpler with the release of Florijan Stamenkovic's javaBound (JBND) framework which greatly streamlines many key pieces of native-client application development.
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. See Complimentary Frameworks