> 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

Reply via email to