> That's why I said 'basically'. ;) I claim no knowledge in Vaadin besides > reading its website. >
I also said 'basically' :) I'm currently working on my first Vaadin project, so I am in no way an expert. I do really like it though and I plan to also use it for an administrative section of an existing Tapestry application. That part of the application only has a couple of users with modern browsers and they required advanced controls. That is much easier and quicker to create using Vaadin. > Could you provide a short description of Vaadin's server-side stuff for > people who are used to Tapestry? I'd love to read that. :) > That's just it. It isn't just the server-side stuff that is impressive in Vaadin. You made it sound like everything on the client is provided by GWT and Vaadin only adds some server-logic to it. This is not true. They created a lot of impressive stuff on both the client and the server. Communication between client and server and most of the rich client stuff is not provided out of the box by GWT, but was custom-built by the Vaadin team using GWT. That way a developer doesn't have to worry about client-server communication or GWT-specific stuff. You just create an application, add components to it, add listeners to those components and respond to events. You can basically create an application as if you were creating a single-user client application. Each user-session gets its own application instance which is stored on the session and keeps running while the session is alive. If the user interacts with a component, the listener on the component is triggered on the server. All your code actually runs on the server, which makes things both easy and secure and the components are updated automatically on the client. The Vaadin team has created the entire infrastructure to make all of this possible, implemented an extensive (server-side) application API and provided many rich client components for you to use (which requires both server-side and client-side work). Just take a look at their calculator example, which only uses a simple label-component and a couple of buttons: Code: http://demo.vaadin.com/docs/example-source/com/vaadin/demo/Calc.java.html Demo: http://demo.vaadin.com/Calc No HTML templates, no Javascript. Just plain old Java. If you didn't know about Vaadin, you probably wouldn't guess the code was running on a server. > Tapestry == Javassist plus some server-side stuff? I'm not following you. > Javassist is used server-side in Tapestry and its being completely replaced > by Plastic (which is built on top of ASM). > Yeah, exactly. Tapestry is not just Javassist. A lot of stuff has been added and most of it was server-side stuff. Just like Vaadin is not just GWT with some server-stuff. Even though the server-bits are pretty nice, an enormous amount of effort has gone into the client part. The entire reason for using GWT is that so much of the development effort would be on the client, but all of it is custom work by the Vaadin team. Up until version 7, Vaadin didn't even come with GWT, you had to install it yourself if you wanted to develop custom components. I know you guys are replacing Javassist with ASM, but that doesn't change the point I was trying to make: - Vaadin provides a lot of magic for you on both the client and the server and for part of it they use GWT but the user hardly notices. They could have used another framework instead, but they had good reasons to pick GWT. - Tapestry also provides a lot of magic for you and uses Javassist for part of that magic and the user hardly notices. Tapestry could have used something else but Howard had a good reason to choose Javassist at that time (he actually wrote a blog defending its choice). - Onno