jThinRich FAQ


Product Questions:
  1. Is jThinRich just a wrapper for JNLP or WebStart?
  2. Is jThinRich based on JNDC?
  3. How does jThinRich differ from browser/HTML based application development?


Product Questions:
  1. Is jThinRich just a wrapper for JNLP or WebStart?

    No! WebStart/JNLP is just one enabler. By itself WebStart is just a wrapper for JNLP and for creating a sandbox by which Java applications can run on the desktop. What is missing is an application framework to allow developers to build secure and robust applications using a Java software distribution model while leveraging web services to communicate with a centrally hosted system. jThinRich applications are tightly coupled to the server for session management, persistence, rights and access control, and for some if not all their business logic. The client side is primarily for rendering what is stored and managed on the server and for providing the user with a rich application experience.

    If all you want to do is build a word processor or email client that resides on the desktop then for the most part all you need is webstart and good GUI components. There are several products out (some based on JNLP) that help you manage software distribution on your local intranet and tracking patches and updates and the like. jThinRich is not aimed at such applications.


  2. Is jThinRich based on JNDC?

    JNDC is a move in right direction but for the most part it builds on Swing and trys to fill the missing holes in Swing. The goal of jThinRich is to enable applications that need tight coupling between client and server (in an Internet/HTTP environment) where the client, for most part, only does GUI rendering, and the server handles persistence and complex business logic. Even the JNDC XML markup does not really address this directly.

    If you are building a Java/WebStart word processor you may not need jThinRich. WebStart and some good Java UI components like JNDC might be all you need. But let's say you wanted to convert a commercial home banking on-line Internet/browser/HTML application to a rich Java application that can also be offered over the Internet. What would you need jThinRich to do? Here are some of the things that you might need:

    - Java desktop software is distributed from a central server with dynamic and seamless updating of software. The only thing you need to have installed on your desktop is the JDK. For example, if the product is updated while users are using the application, on the next client request the user is informed that they need to logout to get the updated software. The server administrator can control when the whether the client should upgrade after the next click or after the user logs out of their session.

    -Java desktop applications can run in a secure sandbox delivered by the server. The user must authenticate with the server and must maintain an active session with the server. The client communicates with the server using POJOs over SSL with fine grained security and access control managed by the server.

    - Server tools and APIs for managing the upgrading process of both the server and client software.

    - Client API for managing GUI application state like window closing when application times-out from server session, off-line vs on-line usage options for application or sub application screens, API for viewing backgrounded server requests and active requests, ability to terminate long running requests, etc.

    - Lightweight HTTP based messaging API for managing communication between server including session management and authentication. The client developer uses POJO API to talk to the server. The protocol allows for efficient use of HTTP including keep-alives to allow multiple quick succession client requests to minimize track to the server.

    - Smart cache management API to allow client to keep recently used data local for easy access by MVC components. Caching related listener API also allows GUI screens to know when their data "may have" changed such that they can request refreshes only when needed thus minimizing server hits. For example, navigating back and forth between screens should not always require server hits unless there is a known change to the data model or some timing threshold has been reached.

    - Standard way to log, view, and track request errors between client and server.

    - Convenient threading model so that user has option of background server requests and asynchronously updating UI when request completes while keeping GUI responsive.

    The benefits of this model are not just for the GUI client experience. Server load will be significantly decreased allowing centrally hosted services to support large concurrent users. Every button click will not require an expensive round trip. Servers no longer have to format and generate HTML.


  3. How does jThinRich differ from browser/HTML based application development?

    jThinRich has all the benefits of browser/HTML applications without the limitations. The client is still tightly coupled and controlled with the server end. For example, just like in the browser world, the client would still send a session token during each and every request to the server. The server still manages and tracks the session in all the same ways. The server is responsible for authenticating the user and issuing the initial session id, terminating the session after a inactivity timeout threshold is hit, and handling explicit user logout requests. Session management is very central to jThinRich.

    Somewhat similar to how cookies work in the browser world, jThinRich gives developers a simple session API for use on the client and server side. Details on how sessions are managed on the server side would still be an implementation detail for the server (db vs memory cache, load balancing etc). One can work with standard J2EE application servers and do this without restriction.