Wicket vs Vaadin

20,114

Solution 1

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.

Solution 2

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.

Solution 3

(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.

Solution 4

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.

Solution 5

I am currently working with Wicket and I have worked in the pass with Vaadin. I wil be short in my observations:

  • Vaadin is entitled to be free but IMO, is not so beautiful like that. If you need support, help, documentation for that painful and tricky problems that you encounter, then you are screwed because you do not have so good documentation/community when compared with Apache Wicket. Vaadin have guys to help you, but you have to pay for it.;
  • To program in wicket you need to be a strong programmer. Vaadin also requires good Java knowledge but you can easily do some spaghetti code if you want (just saying, not doing..);
  • Apache Wicket really separate the web technologies (Javascript, HTML, etc.) from the framework technology (Java). Vaadin also try to do it, but IMO is not so elegant and transparent on that.

Appart from that, we are talking about two different types of frameworks, two different approach, which have pros and cons that I advice you to search and compare and see what really fits your needs.

Edit: Oh, and about the look and feel, for instance you always have Wicket Bootstrap

Share:
20,114
joshua
Author by

joshua

I am currently enjoying programming in golang and clojure.

Updated on July 09, 2022

Comments

  • joshua
    joshua almost 2 years

    I 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 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.

    However, if I go the Vaadin way:

    1. I will loose the ability to create UI declaratively.
    2. I wont have the fallback feature if the browser doesn't support JavaScript - e.g most non Webkit mobile browsers.
    3. Vaadin company is selling some components - e.g the JPAContainer so am not sure the company will be committed to offering full open-source framework. Business interests will always come first.
    4. Vaadin applications will be mostly for the intranet. They are not very suitable for the internet with a web look and feel.

    If I go the Wicket way:

    1. 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.

  • hezamu
    hezamu over 13 years
    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.
  • Karussell
    Karussell over 13 years
    this is a fair comparison although I think that with Vaadin it is relative simple to style components: stackoverflow.com/questions/2827052/…
  • joshua
    joshua over 13 years
    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.
  • Jonik
    Jonik over 13 years
    When plugging Vaadin, it might be fair to always mention the fact that you work for IT Mill (the company behind Vaadin). :)
  • joshua
    joshua about 13 years
    "..., 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." -- It really puts me off to learn that JPAContainer is not free for commercial use unless you buy a license from the same guys who made vaadin. Isnt it not your goal to make your framework as good and complete as possible? Or is your goal to make your framework good enough to attract developers but also lacking enough to make developers spend some money on some components? --
  • joshua
    joshua almost 13 years
    Follow-up on the above comment: I later switched to wicket and i have never looked back since then. I had a problem with vaadin UI layout.
  • Karussell
    Karussell almost 13 years
    Thanks for the update. What in detail were your problems? My initial problems were performance wise (I can only speak of ~April 2010)
  • joshua
    joshua almost 13 years
    It has been a while so i cant remember clearly. I had panels that had form view, table view and combined (form on top of table ). I had created buttons to switch the views. Despite following the instructions on the tutorials, it worked but with unpredictable behaviors. Sometimes taking too long to transition. I decided that the best way to do a browser based application is to write HTML myself . So i switched back to wicket. I have never been cornered when using wicket.
  • Lawrence
    Lawrence over 9 years
    For desktop feels, try ExtJS javascript framework. It is awesome.
  • Ethan Hohensee
    Ethan Hohensee over 8 years
    Wicket also generates components with unpredictable numeric IDs by default. You can, however, set them explicitly if you prefer. I've seen a lot of people complaining about using Selenium with Wicket because the IDs are unpredictable.
  • Cavaleiro
    Cavaleiro about 7 years
    Indeed. But the same happens with Wicket: if you want a powerful charting solution for client side beautifulness and user interaction you will also have to pay for a good charting solution like Highcharts. You can always cope with server-side solutions, like JFreeChart which will render the chart to a png and load it in the UI (I have used it in Wicket and it worked like a charm). You can always create a widget yourself to interact with the chart..
  • Ishan Thilina Somasiri
    Ishan Thilina Somasiri about 7 years
    True, but Highcharts for Wicket is free while Highcharts for Vaadin requires you to buy it (even if the project is FOSS)
  • Cavaleiro
    Cavaleiro about 7 years
    I am not sure that it is free for commercial purposes.