As we started to search architecture for our ERP platform in 2001, there were 2 options to select in Java:
1- Desktop-Based Applications:
If we select this option, 2 other ways to select; one is using AWT or Swing, the other way is building-buying a new component presentation framework. As my previous development experience Desktop Java was extremely difficult. Applications written in Java was not responsive as native windows applications. AWT and Swing was very heavy. Building a new presentation framework was another unknown way to go since requires many UI engineering effort(Layout-Window Management, Rendering, State Management, Event Model, Release Management, Server Communication etc.).
2- Web-Based Applications:
Here we had another options; first is pure HTML and browser-based option, second is using Java in browsers (ie. Applets). Some ERP vendors, uses another option that's clients are web-based but doesn't require (or minimal setup) setup and loads applications on demand. Oracle ERP uses this model, its loader is JInitiator. Sun had offered similar function with its JNLP and Web Start technology.
What we selected is first option of Web-Based Applications; 100% web-based solution.
Every option may be true in their context but in our context we had following motivation for this decision:
2- Browsers are deployment tool: One of the most important problems of application is release and deployment management. This problem had 2 part; 1st is for server-side and 2nd part is client-side. Web-based applications solves nearly all problems of client deployment since requires zero installation. Browsers are evolving in their own direction with many improvements and standard support (i.e. caching, rendering, new CSS specification support); browser-based Web applications utilize all new features with zero price.
3- Network is getting faster: One of the most important problems of the web application is downloading pages and its content. As the network speed increases every day, both in home and offices, web page downloading becomes faster and faster. This leads much more satisfactory user experience in the UI.
Let’s try to list what was the rich functionality of desktop applications that we are still trying to fill:
3- Grid Component: We have searched a grid component many times but for many years web-based grids couldn’t reach to the desktop grid functionality. Only a few years ago, in-line editing etc. could be added to the feature list of web grids that DOM capabilities explored at last. We firstly developed a list component for the some functions of grid component (Sorting, Filtering, Selection, Paging). We could finally developed a grid component with has in-line editing with the help of Ajax. Our grid component supports many cell input types, insert row which eases data entry.
4- Master-Detail Forms: To provide this functionality, we must have grid functionality since Detail is formed with many input lines. After developing grid component, we easily supported this structure with detail tabs. One of the most important problems of this structure is mapping master-detail form into JSP pages. Current web-based master-detail solutions mostly don’t have detail tabs (One detail) or detail in-line editing and insert row causing to navigate another page for insertion.
7- Client Host Access: HTML doesn’t have this functionality. You can’t access client PC from Browser since security. The only feasible way to achieve this was using ActiveX components which are platform dependent and requires some security setting changes. Web site may not require this feature but as ERP web applications, we needed native printing or some manufacturing device access through the client host. Desktop applications are much more comfortable since have nearly no restrictions.
As the development and enhancement continues in Web world, we will see if this gap filled in the coming years. As a supporter of Web-based development, I think desktop applications will not be replaced completely with web applications. Both architectures had some powerful aspects and every software should be placed to the true platform considering software requirements. I give following link as a supporter of this idea: