Changes, Issues, and Gripes

This document lists issues and internal changes made to frameworks we use.

Vaadin Issues

We chose Vaadin as our reference framework because it is built on GWT and Atmosphere. However, we needed to ‘fix’ Vaadin for our needs.

  • Not compatible with OSGi
  • Issues with resource caching
  • Database connectivity issues
  • Layout issues
  • Centering
  • Scrolling Issues
  • Dynamics CSS and Scripting support
  • Support for global Javascripts
  • Session Synchronizations issues.
  • Hacked window class to allow for AppBar, menus, etc
  • Client based layout code
  • Too many click handlers / not enough click handlers.
  • No Client based click processing
  • Missing ID / Name support
  • Does not take advantage of the client processing in a simple manner
  • Awful declarative UI and database abstraction.
  • Container API is to vague, too simple, yet too complicated.
  • Layouts should be performed by the client. Its silly to do them on the server for bandwidth, processor, and speed issues.
  • Vaadin tries to micro-manage operations that are best performed in the client.
  • Terrible Javascript Connector tooling support
  • auto create javascript stub
  • auto create javascript methods
  • async support
  • Vaadin allows accessing database on main thread.
  • Missing group list container
  • Added a ResourceHandler to deliver intents from requests
  • Resources cache for 6 minutes and do not sent last-modified header
  • Vaadin is too ''server centric''
  • Vaadin only allows JS resources to be cached by 5 minute windows. It won't return last-modified.
  • No Bootstrap refresh page
  • Cannot add widgetset after the fact
  • Cannot use widget set from another bundle
  • No runat server/client support
  • New API for developers
  • API not extensive or well thought out
  • Lack of pre-existing integration
  • No Content-Editable
  • Limited CSS support

    Android Issues

    Store resources in file system uncompressed Multi User support Multi Session support Shared Resources OSGi install No Async Lifecycle No Browser client/server state Rewrote the XML library Shared / Multiple database Database caching Much attention paid to what ‘hand’ is holding the device Multi User / Device event bus with push capacity No cursor.getBoolean Implemented

  • java.nio.file.Path
  • 0 based column index is messed up Bookmarks for app state Bad support for adaptive fragments.
  • Too much work for developer. Mouse over events not handled. (should be in a web setting) No code limitations on server.
  • Run any code in any language. Missing resource sub_folder support Android has SQL isNull getInt but MySql has getInt wasNull Menu bar actions do not scroll Preference and Binding APIs for all systems is lacking, so we roll our own. Android does not deal with hover and press of mouse cursor or voice cursor. Resources need to be identified by ID and plugin. Interface and Definitions Constants, enumerations, and interface classes. System Basic functionality that does not involve user input or output, or the native OS. OS Specific to the host operating system. UI Specific functionality that needs to be mapped to the GUI. Resources Accessing the file system, network, and device hardware. Sizing calculations can be performed on the client. Future Goals Reuse more Android implementations.
  • The major issues we have in doing this is handling the dependency graph. Drag and Drop on the Home Screen Cannot set style programmatically on a viewgroup []


Android should have used group:action:version instead of a single string. Scope and version baby.


Spinners are not populated on the client until they are selected and opened. This speeds up page loading.


No MenuItem.setOrder() method. We added MenuItem._setOrder().


Big Decimal Division errors when not specifying Math.Context parameter