views:

669

answers:

5
+8  Q: 

wicket vs Vaadin

Hi, Am torn between wicket and vaadin. i am starting a micro-isv and need to make a choice of web framework. I have narrowed down my choices to wicket and vaadin. I have used both frameworks and i love them both. however i need to make a choice.

If i choose vaadin:

  1. I wont have to worry much about the look and feel.It comes with nice themes
  2. I will do all my programming in java which am very good at and wont have to spend time hacking css which am not very good at
  3. And most of the components that i will need for a business applications are there OUT OF THE BOX including, desktop like layout, tooltips, Keyboard shortcuts, tables with draggable and collapsible columns to name a few. How ever , if i go the vaadin way:
  4. i will loose the ability to create UI declaratively.
  5. I wont have the fallback feature if the browser doesnt support javascript - e.g most non webkit mobile browsers.
    1. Vaadin company is selling some components - e.g the JPAContainer so am not sure the company will be committed to offering full opensource framework. Business interests will always come first.
    2. vaadin applications will be mostly for the intranet. not very suitable for the internet with a web look and feel.

If i go the wicket way: I will have to style my applications and i can hardly give them a desktop look and feel.

Any advice. anyone with experience on either framework kindly tell me the cons and pros and how you made your decision.

+2  A: 

I have a limited amount of experience with each but I prefer Vaadin. It allowed a richer experience with the web application I was developing. The main benefit that sold us though was how easy it was to write unit tests around our UI classes, ensuring the components functioned correctly when interacted with in the expected ways. This is also possible with Wicket however it was more difficult in my experience.

I will also mention that either framework will require some styling. Wicket starts off as plain old HTML and Vaadin starts off with a MacOSX-like theme by default but almost any web-app you write will require at least SOME customization. With this in mind, customizing the CSS of a Wicket app is SIGNIFICANTLY easier than Vaadin for the simple reason that you control the markup. Vaadin hides the markup from you and generates elements with weird IDs and structures so it is harder to customize the look. Just remember this when making your decision.

Gweebz
this is a fair comparison although I think that with Vaadin it is relative simple to style components: http://stackoverflow.com/questions/2827052/what-is-the-method-of-choice-to-adjust-css-changes-in-vaadin
Karussell
+3  A: 

I've worked extensively with Wicket but I've not had any experience with Vaadin so this might be (a little) biased.

I'd recommend Wicket for obvious reasons, but what's probably of interest to you is Wickets openness. As Gweebz rightly pointed out, Wicket uses basic HTML markup as its foundation, so any structural or cosmetic changes are often trivial to implement.

Personally one of the things I really enjoy about out wicket work is the flow between front end presentation and the data backend, we've implemented Spring & JPA/Hibernate which means that any changes in the front end can be translated back into the data base with a single line of code thanks to Wickets model based architecture.

Again I can't say much for Vaadin having never worked with it, but if you're looking for architectures to start off with, I'd also recommend you have a look at GWT.

BjornS
Disclaimer: I'm a member of the Vaadin team and I really don't know enough about Wicket so please correct me if I get anything wrong.What I've gathered Wicket's programming model is quite similar compared with Vaadin. Spring, JPA etc. backend stuff are readily available for both. I don't know what Wicket does to support those, but Vaadin includes various ways to integrate them, eg. JPAContainer. Also check out the upcoming Spring Roo plugin for Vaadin.See the rest of my comment below.
hezamu
A: 

Java language is not so powerful, as it's wanted. If you choice Wicket, you can use Scala as language (and I think other cool language, clojure, for example). GWT (and Vaadin as is builded on GWT) allow to use only Java.

leonidv
what about using groovy with Vaadin or GWT? http://wiki.github.com/halls/groovy-vaadin/
rochb
Nice. It's interesting.
leonidv
Vaadin can be used with any JVM language. There is even a official Vaadin plugin at scala-lang.org. More info with code examples available at our site: http://vaadin.com/wiki/-/wiki/Main/Using%20Scala%20with%20Dynamic%20Web%20Projects%20and%20Vaadin%20in%20Eclipse
hezamu
+4  A: 

(continued from the comment in the first Wicket-related answer)

The major difference between Vaadin and Wicket is with how UI composition and client side code is written. With Vaadin you usually compose your UI without any templates or HTML at all and you get a sleek, fully Ajax'ed UI out of the box. However, if you prefer the templating approach just use CustomLayout which does exactly that.

Client side coding is rarely needed, but when it is you do it with the Java-based GWT which is IMO a lot more nicer than writing Javascript by hand. Besides, with GWT you automatically get cross-browser compliant solution instead of having to deal with those issues yourself.

When comparing frameworks you also should take a look at community activity and documentation. With Vaadin both of those are excellent. Also note the Vaadin Directory which currently contains 100+ very useful UI components and other addons.

hezamu
When plugging Vaadin, it *might* be fair to always mention the fact that you work for IT Mill (the company behind Vaadin). :)
Jonik
Ah, sorry, you did do that in the comment to the other answer
Jonik
+3  A: 

I think I've invested some time for both frameworks. I really like both because they bring the Swing-alike coding to web development. And I don't know easier ones for me (although there is click but I don't like the velocity templating thing)

And yes, there are differences.

I wont have to worry much about the look and feel.It comes with nice themes

true, but every serious company will style its app differently (unless you are prototyping)

I will do all my programming in java which am very good at and wont have to spend time hacking css which am not very good at

Then Vaadin would be 'better'.

i will loose the ability to create UI declaratively.

What are the advantages of that? (BTW: you could code declarative in groovy ;-))

But ok. I know what you mean: if you can effort a separate designers than wicket is 'better'.

i can hardly give them a desktop look and feel.

Why not? Or what do you mean here? Wicket supports ajax and there are components which supports nice 'desktop-alike' things (ajaxlink, lazycomponent, autocompletion, progressbar, see wicket stuff + extensions). ok, for any more complex component you'll have to code in javascript BUT BTW did you know that you could even use GWT within wicket

Some minor experiences:

Vaadin is surely faster while coding (no css, html stuff). But if you go production keep in mind that the ease of programming can come to the cost of performance on the client side: e.g. if you use the 'wrong' layouts such as Horizontal/VerticalLayout, ... the massive use of javascript could slow down old browser.

But Vaadin is not slow! Use appropriate layouts such as CssLayout or FastLayout and also old browser can serve it. (Although if you would use CssLayout your coding-style is really wicket-alike.)

One issue with Vaadin is that it is a bit harder to profile, because you don't see easily where the client needs all the CPU and the nested divs gets cryptic id-names.

One great thing about Wicket is its warp persist integration

(Guice can be integrated in Vaadin and Wicket)

Testing the UI should be easy with Vaadin (although I didn't found unit testing stuff) and is very easy with wicket.

Last but not least creating lists/tables is VERY easy in Vaadin compared to wicket.

Karussell
Thanks for your informative response. I ended up starting the project with vaadin. This is because it is helping me come up with a relatively good looking, feature rich application with less effort . I have a better experience with wicket but i always found myself spending hours on non-core things like layout, ui colors and all that. I want the application to have a full desktop look an feel without pages and all that. while it is possible to achieve this with wicket, i find most of the things easier to do with vaadin. I will use wicket for public facing website like parts of the application.
joshua