File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Java in General and the fly likes Improving the Architecture and Using Available Frameworks Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Improving the Architecture and Using Available Frameworks" Watch "Improving the Architecture and Using Available Frameworks" New topic

Improving the Architecture and Using Available Frameworks

Ashik Uzzaman
Ranch Hand

Joined: Jul 05, 2001
Posts: 2373

I am working in a project that uses Spring, iBatis, Jess, Crystal Reports and SQL Server in server side and SWT/JFace, Struts, Java Web Start in the client side. Different parts of the system was developed by different teams independently and later integrated together. As a by-product of communication gap between different teams, we have come with a solution that could have saved a lot of time and effort if could be designed and developed upfront with single objective.

We are thinking of re-designing it, however, the server-side is pretty much neat and clean (except the reports part that we may switch from crystal reports to something else in future) and so better remain less touched. The first areas that seem a little bit isolated is the existance of client-side that involved SWT/JFace (which have been heavily twicked to make it windows-only), Struts and Java Web Start. We have 3 options that we can think of.

1. Improve the SWT/JFace and Struts codebase and design patterns.
2. Switching to JFC/Swing due to its improvement over years that will solve part of our windows-only implementation in SWT.
3. Make our client totally thin client using AJAX or some other technologies that can leverage the power of what our thick client GUI is providing now.

Which approach would you have preferred?

Personally, I am in favor of AJAX based approach but want to know pros and cons from you.

Also do you mind pointing me to some popular AJAX based frameworks, preferably open source, so that I can develop a prototype myself without spending money?

Looking forward to your comments.

Ashik Uzzaman
Senior Software Engineer, TubeMogul, Emeryville, CA, USA.
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 15082

"Which approach would you have preferred?"

Really, it's totally impossible to give you good sound advice based on such a short overview of the whole system. It depends on what the software is for, how it is used, etc. For some systems, desktop clients (made with SWT/JFace or AWT/Swing) are more suitable, for other systems a thin-client AJAX solution is more suitable. Don't use the same technology for all your systems just because you only want to use one technology. You have to make an intelligent choice for every system.

I was once in a project where we were making software for a call center. We were making it using AJAX technology, as a "Web 2.0" web application. The project failed because a web application and AJAX was the wrong technology choice - the client had very strict performance requirements which were impossible to reach with the chosen technology and it was also very hard to impossible to get the level of control that was needed (they wanted the app to respond to very specific shortcut keys; some of these could not be handled in an AJAX web app because the browser would catch and handle those keys and not pass them on to the app). For that project, a desktop GUI (client-server) app would have been a much better choice.

In my opinion, the main advantage of (AJAX) web apps is that you don't need to install anything on the client; the client only needs a web browser. If you have thousands of client computers on which the software is going to be used it can be a major cost saving if you don't have to install the software on all those computers. However, you don't have the level of control in an AJAX web app that you have in a desktop GUI program.

Note that with technologies like Java Web Start you can (almost) have the same no-hassle installation with a Java desktop GUI program as you have with a web app.

Some very interesting AJAX toolkits are the Google Web Toolkit and the Dojo Toolkit.
[ March 09, 2007: Message edited by: Jesper Young ]

Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 8 API documentation
I agree. Here's the link:
subject: Improving the Architecture and Using Available Frameworks
It's not a secret anymore!