Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vaadin 7 - Good framework but not for my project [closed]

Vaadin is a wonderful framework, It is very useful to develop colorful web apps. However, I'm totally frustrated by some unexpected things happening in it. I know it is hard to create such a framework where client and server side components can be coded at the same time. It saved me time.

But, I don't know why I'm getting communication error, session expired notification, app freezes sometimes in the server environment. However, Everything works perfectly fine in my local environment.

Can anyone please tell me why I'm facing these issues?

Problems:

  1. Communication Problem? (http://dev.vaadin.com/ticket/8466)
  2. Session expired message? (I set the session to expire after 300 minutes. But it happens before. But, not all the time)
  3. App freezes sometimes. (I can click buttons, But no use.. No actions.. Only way is to restart)
  4. Very bad performance in IE. (I know it is common for all web apps. But, my application when compared to other browser; IE totally sucks.
  5. Lazy loading in treetable will be really helpful for me.
  6. ICEPush add-on, doing its job perfectly. But, after sometime it is giving me exception in the console.(https://vaadin.com/forum#!/thread/234493/4528542)
  7. If I do any action in a browser. It is reflected in another browser(another instance of the application. (http://dev.vaadin.com/ticket/10208)
  8. Context menu add-on: Easy to implement and fantastic. but, gives me exception on multiple right clicks on a slow network.https://vaadin.com/forum#!/thread/119996/4455717
  9. Annoying exception messages. what is the need to show it on the UI?

I already spent most of my time in forums. I really got good support from you guys. But, I don't want to.

I suspect the following things will be the reason for the above problems.

  1. My Vaadin server is in UK and API server is in US, Is this a reason for the communication problem?
  2. I build components from functions of a Util class. Is this the reason for the problem no 7 on my list. Like this, ComponentsBuilder.buildVerticalLayout();
like image 405
Gugan Avatar asked Dec 09 '13 05:12

Gugan


2 Answers

It's a lot of questions. I don't have answers, but have some insights for You.

I've developed one and seen three web applications developed in Vaadin 6. All failed, the reasons were varied, but I can share with you some of my humble insights:

  • Some Vaadin behaviors (at least 6.x) was hard to customize, e.g. session expiration.
  • Resulting HTML was extremely heavy and hard to customize also. Often it was impossible for my team to achieve the desired visual effect.
  • I found Vaadin's design quite poor (a lot of casting/ using Object instead of generics). Also source code is not high quality in my humble opinion.
  • Built-in widgets are sometimes hard to use due to bugs and lack of real-world examples.
  • Portability among browsers is a myth (especially IE, but You found out that already)
  • Simple Vaadin app can take up a lot of CPU resources

Keep in mind also that Vaadin used in wrong way (not in Single Page App) becomes a nightmare - but is not a fault of framework itself. The same applies to any other tool.

like image 179
G. Demecki Avatar answered Nov 19 '22 12:11

G. Demecki


Vaadin 8 & 10

A lot has changed in the intervening years.


Communication Problem? (http://dev.vaadin.com/ticket/8466)

That ticket has been migrated to GitHub as Issue 2178. Now marked closed. Seems to be bugs in Tomcat and browsers, now fixed.

This is a bug caused by the cookie handling of certain browsers when using Tomcat 7 and no trailing slash is used in the address after the name of the app (i.e. http://host/app instead of http://host/app/).

You can fix this by setting the context attribute sessionCookiePathUsesTrailingSlash to false.


Session expired message? (I set the session to expire after 300 minutes. But it happens before. But, not all the time)

I have not tried this, and I am just guessing here, but it looks like we have a getter for the session expiration message displayed to user here, com.vaadin.server.SystemMessages class, methods getSessionExpiredCaption() & getSessionExpiredMessage().

The description for that SystemMessages class says:

Use VaadinService.setSystemMessagesProvider(SystemMessagesProvider) to customize.

So perhaps we can override the session-expired message by implementing the SystemMessagesProvider interface. (I am not sure how all this works.)


App freezes sometimes. (I can click buttons, But no use.. No actions.. Only way is to restart)

I do not know about this. I have found Vaadin 7 to be very stable in production, running for countless months at a time without failure. Vaadin 8 in my current development efforts also seems completely reliable.

The implementations of web browsers, web servers, Java Servlet containers such as Tomcat & Jetty, and so on have dramatically improved and evolved in recent years.

If the user’s web browser has lost contact with the Vaadin server, they should see a message displayed.


Very bad performance in IE. (I know it is common for all web apps. But, my application when compared to other browser; IE totally sucks. Someone please talk with gates to stop IE... :-(

Yes, indeed IE was a series of terrible browsers, with many problems.

Fortunately, someone did indeed talk to Gates/Ballmer/Nadella. The Internet Explorer product line has ended. Replaced with Microsoft Edge. A huge improvement. They seem to have a new spirit, and heartily endorse and follow web standards now.

See the CanIUse.com site to see which versions of what browsers support which features in HTML, CSS, etc.


Lazy loading in treetable will be really helpful for me.

The TreeTable widget is supplanted by TreeGrid in Vaadin 8. This new widget shares technology in the amazing new Grid widget.

See also the manual page on Hierarchical Data. It discusses lazy-loading data from your backend.

Here is an article on lazy-loading in Vaadin 8 by Alejandro Duarte.


ICEPush add-on, doing its job perfectly. But, after sometime it is giving me exception in the console.(https://vaadin.com/forum#!/thread/234493/4528542)

Push technology is now supported within Vaadin, as a built-in feature. Amazingly, basically all you need to do is add a @Push annotation to your app.

The Push implementation in Vaadin is based on the popular, robust, and well-proven library, Atmosphere.

See the manual page, Server Push.

Be aware that Push technology has improved dramatically in recent years, especially WebSocket. The new HTTP/2 standard furthers the advancement. Be sure to use the later versions of web containers such as Tomcat, and of Vaadin, and of the web browsers.


If I do any action in a browser. It is reflected in another browser(another instance of the application. (http://dev.vaadin.com/ticket/10208)

See update to that ticket. Seems to be a non-issue.

Looks like passing in the page like: new Notification(message).show(ui.getPage()) solves the problem…


Context menu add-on: Easy to implement and fantastic. but, gives me exception on multiple right clicks on a slow network. https://vaadin.com/forum#!/thread/119996/4455717

I cannot speak to this except to say:

  • There is much discussion on that thread.
  • That component has now been integrated as part of the Vaadin framework.

I suggest trying it again. (I have not used it.)


Annoying exception messages. what is the need to show it on the UI?

Not sure what you mean here.

If you refer to Java exceptions, I am not sure what else you would want to happen, if the app has errored-out for that user.

If you refer to session communication problems, you should know that recent versions of Vaadin try more aggressively to maintain and re-establish a problem connection.

I cannot find links at the moment, but it has been documented. Perhaps in their blog.


My Vaadin server is in UK and API server is in US, Is this a reason for the communication problem?

Of course maintaining sessions over the Internet can be problematic.

What I can tell you is that Vaadin has worked well for me with my server deployed in a colo in Wisconsin US and users running successfully from Florida, Seattle, Canada, and even Hong Kong using an app that uses Push to update displayed data every minute.

If your network is unreliable, then an actively “chatty” architecture such as Vaadin is not appropriate.

like image 24
Basil Bourque Avatar answered Nov 19 '22 10:11

Basil Bourque