Discussions

The wingS team is proud to announce the general availability of wingS 3.0 with Transparent AJAX.
Transparent AJAX unburdens the application developer from the complexity of asynchronous replication of conversational state between client and server. The utilization of AJAX is completely hidden behind the wingS API. Even custom components, written against the wingS 2 API immediately profit from the incremental page update mechanism.
The wingS Project
Wings is a mature web application framework based on Java Servlets, resembling the Swing API with its MVC paradigm and the event oriented design principles. It utilizes the models, events, and event listeners of Swing. Like in Swing, components are arranged in a hierarchy of containers, whose root container is hooked to a frame. Though MVC and Swing are well established and well known, most web application frameworks on the market are still stuck in the paradigm of page- flow oriented design principles and require a heavy mixture of different technologies like XML, Java, JSP, Tag- libraries, JavaScript, yet AJAX, etc. In contrast wingS offers a very efficient and sophisticated way to implement and design complex real- world applications in pure Java, enabling to fully leverage modern software design principles like inheritance, component- oriented design, refactoring and the like without making a stop on the web tier.
As of version 3 wingS utilizes AJAX for incremental updates of the client (browser window). This happens in a completely transparent manner. The application developer does not get in touch with complex JavaScript code and asynchronous event handling. There is a ReloadManager tracking component changes during the event dispatching phase. When events are delivered and the application logic has finished processing user interaction, all component changes are delivered to the client and applied to the browser document.
More information about the wingS framework is available at wingsframework.org. Of course there are some Online Demos available, too.

Nice framework but if you think it's the best that means you haven't seen WebCream. It has the same components, some of them much better (like internal frames), but unlike wingS WebCream takes a REAL Swing application and produces HTML-AJAX pages for it. So developers don't have to learn a "Swing-like" API which is a requirement for wingS.
The biggest difference is for existing Swing applications, which can be turned into interactive web-sites in just a few hours with WebCream.
http://www.creamtec.com/webcream/

I took a look at the WebCream site, and I never knew how expensive open source was. Damn, I could have made a fortune already, Microsoft was right after all!
Many people argue that Swing is a really bad programming model as it is slow, ugly and not native enough. Looking at the demos, I think WebCream has duplicated those features quite well!
I also took a short look at the wingS demos, and these are really great. I can't imagine anyone saying WebCream is better than wings, as the demos themselves prove the difference.

As far as rendering, take a look at desktop pane(which are pretty much non-existant in wingS) and table rendering (sorting, selection, filtering that you see in WebCream). On the other hand, wingS fares better with dialogs...
But the point I was trying to make is that there is a fundamental difference between how WebCream works and how wingS works. WebCream takes an existing Swing application and automatically converts it to a HTML-AJAX site. You can see standard SwingSet2 running as a WebStart and as WebCream-enabled HTML. This means that if someone spent 2 years building a Swing app and now wants to deploy it in thin client, they don't have to rewrite anything. wingS as I understand provides an API that resembles Swing but it doesn't just run Swing apps - you have to make code changes etc.
It's hard to tell from the demos how extensive those changes are. Is it just replacing the javax.swing package with wings package? Can they take let's say SwingSet2 and turn it into wingSet2, and how long would it take?

As far as rendering, take a look at desktop pane (which are pretty much non-existant in wingS) and table rendering (sorting, selection, filtering that you see in WebCream).

Well the desktop demo is here (the visual appearance could be improved) and sortable/ filterable/ selectable tables are available in wingX also. Please double check the demos before "trying to compare" next time ;-)

Correction to my own post. I didn't try clicking on the desktop pane icons in wingS initially. I see that it knows how to collapse and expand the panes, which is pretty nice. It doesn't allow moving them around like WebCream but it's not as primitive as it appeared first. And I see that there's XTable which seems to have sorting and filtering.
My other questions remain - how many changes would one have to do to an existing Swing application to get it to run on wingS? I have also noticed that all classes would have to be renamed too, so it seems to me that wingS makes itself easy to understand by adopting Swing-like API but it's not an easy conversion path for existing apps. Which is what WebCream does better - it just runs existing Swing apps without changes.

First of all, I really like the WingS demos and i think they are pretty impressive. The WingS guys did a really good jobs and the examples are nie and polished.
What I like less is this pathetic naive plug of WebCream. I'm sorry, but that thing just looks ridiculous to me. It gives the impression of half-baked product that someone tries to sell for insane price. Not to mention the support forum with whopping 30 posts which does say something about the user base.

Replacing 'J's with 'S's is your first task. Then you have to recode all kinds of mouse listeners, as mouse move events and the like are not available. Also the right mouse button popup trigger won't work. You must use the componentPopupMenu property, that has been introduced with jdk 1.5. You don't need to make any changes to your models. Then of course, your application has to be thread safe and multi user aware. Statics become SessionLocals and so on.
Nevertheless, the port should be simple in most cases. The intention is not running Swing applications but leveraging an established concept, thereby providing an easy migration path.

Your pricetag is 50000$ for an "open source license".
Could you clarify what are the exact license terms, and how do you plan to prevent users from re-distributing the software after they have bought it from you?
/Henri Karapuu

We are trying to adjust the licensing model and it's not quite there yet. First, there is the FREE standard edition that has just about all the features. Second, there is a reasonably priced enterprise edition that allows to customize the product anyway you want.
The open source license would allow the customer to embed it into their applications and redistribute WebCream as part of their application. Obviously we can't physically prevent the user from just releasing the source code to the internet. The point of this license is to give client a sense of security and ultimate flexibility.
By the way we are very open to sharing source code with customers who purchased either a license or support from us. We share the source code and accept code contributions. So you don't have to get open source license to see/contribute the code.
Guys, before you start throwing stones at the license fees, let me say that I am also impressed with the work done by wingS contributors. I also happen to believe that developers should be compensated for their efforts, in some form.

Obviously we can't physically prevent the user from just releasing the source code to the internet.

My point is that you may have difficult time also legally preventing the user from just releasing the source code to the internet.
While some OS licenses do indeed allow charging money for the software (GPL comes to mind) it is my understanding that a 'real' (approved) open source license cannot restrict the redistribution.

I also happen to believe that developers should be compensated for their efforts, in some form.

In case you miss it, there's a Webcream opensource counterpart:
Swingweb http://swingweb.sourceforge.net.
It supports traditional HTML/javascript. The GWT ajax is in beta now. Flex2 support is in progress. No online demo but you can download the tomcat demo pack.
thlee

If one is searching for powerful frameworks to build web apps using a Swing like API and programming model, WidgetServer is worth to be taken into consideration.
WidgetServer is one of the most complete RIA frameworks to build apps serving either AJAX/web clients or Swing clients.
The demo shows most components and features including complex server side event handling.
Take a look!

Here's my vote: ZK - www.zkoss.org
They've been around a while, the project is very actively developed, and seems more mature in terms of components than the previously mentioned platforms. One downside(potentially): its GPL

There are so many promising frameworks with good components. Why or why is there so much duplication of effort? Are people just writing it because it's fun? Wouldn't it be better to join efforts, come up with a standard and build a good library with an IDE around it?
The problems caused by defragmentation are:
- No common API so one has to learn each framework
- No pool of developers that can carry the knowledge from one project to next
- No IDE to quickly build the apps
- No guarantees that 3 years from now the framework of choice is still alive and well
As a result I think people are just not using any of the frameworks and sticking with basic apps. Does anyone share my concerns at all?

Sure. The simple honest truth is:
-) Action based framework - Struts is best.
-) Component based framework - Tapestry is best.
Truth/uniformity isn't always what people want though, so good luck herding all of those cats to agree on something. =p

...No guarantees that 3 years from now the framework of choice is still alive and well

As a result I think people are just not using any of the frameworks and sticking with basic apps. Does anyone share my concerns at all?

There are so many promising frameworks with good components. Why or why is there so much duplication of effort? Are people just writing it because it's fun? Wouldn't it be better to join efforts, come up with a standard and build a good library with an IDE around it?

The problems caused by defragmentation are:- No common API so one has to learn each framework- No pool of developers that can carry the knowledge from one project to next- No IDE to quickly build the apps- No guarantees that 3 years from now the framework of choice is still alive and well

Take a look at telephones, televisions, mp3 players, heck even web sites and wonder the same. That's a global competitive market for ya :) If you think you are doing fine with the frameworks you use, just stick to it; nothing wrong with that. However, chances are you can improve your way of working by either adopting a new technology, or start one yourself if you know what you want but no-one did it before you.
I don't think our industry is doing that bad tbh. Compare building software now with ten years ago. I think productivity and quality has improved quite a bit on average.

TechTarget provides technology professionals with the information they need to perform their jobs - from developing strategy, to making cost-effective purchase decisions and managing their organizations technology projects - with its network of technology-specific websites, events and online magazines.