Version 7.1.0.beta1 built on 2013-05-03.
Release Notes for Vaadin Framework 7.1.0.beta1
- Overview of Vaadin 7.1.0.beta1 Release
- Enhancements in Vaadin 7.1
- Complete change log for Vaadin 7.1.0.beta1
- Limitations in 7.1
- Vaadin Installation
- Package Contents
- Migrating from Vaadin 6 to Vaadin 7
- Vaadin 7.1.0.beta1 dependencies
- Upgrading to Vaadin 7.1
- Supported technologies
- Vaadin on the Web
Overview of Vaadin 7.1.0.beta1 Release
Vaadin 7.1.0.beta1 is a feature release that includes a number of enhancements as well as important bug fixes, as listed in the change log below. You can also view the list of the closed issues at the Vaadin developer's site.
Enhancements in Vaadin 7.1
The 7.1 includes many major and minor enhancements. Below is a list of the most notable changes:
- Server push based on Atmosphere
- CSS injection through a Styles object from Page.getCurrent().getStyles()
- Enhanced Debug Window
- Calendar is now included in the core framework
- The VaadinServlet/-Portlet and -Service have been refactored
- DateField can now have a range
- Window has Maximize/Restore controls
- WAI-ARIA support for form fields, Button, and Tree
- The page can be reloaded programmatically with Page.reload()
- The legacy behavior of Property.toString() can be toggled using the legacyPropertyToString init parameter
- Sass compiler now supports arithmetics
- Sass compiler now supports @content
- Tooltip delays can be configured
- Loading indicator delays can be configured
- Layout components have a default alignment
- DefaultFieldGroupFieldFactory supports date fields
- Add-ons containing a theme should specify it with a Vaadin-Stylesheet attribute in the manifest
- Native support for Internet Explorer 10
- Many locking fixes
- Java assert statements added to critical code sections. Start JVM with -ea to use.
For enchancements introduced in Vaadin 7, see the Release Notes for Vaadin 7.0.0.
Limitations
- It is currently not possible to specify font-size as em or %, or layout component sizes with em (#10634)
- Push using streaming does not work in Opera (#11642)
- Some debug console features such as analyze layouts do not work when push is enabled (#11536)
ChangeLog
This release includes the following closed issues:
- #111: """Ajax push"" features (aka ""Comet"")"
- #2460: DebugWindow resizing problem
- #3400: Add maximize and restore commands to sub windows
- #4252: AbstractApplicationServlet.handleServiceSessionExpired throws error message for non-UIDL requests with no SessionExpiredURL
- #5500: Easy way of injecting CSS to portal (and any other Window)
- #6241: DateField should have a way to limit its value range
- #7448: Loading indicator timeouts should be customizable
- #7827: SQLContainer, TableQuery, PostgreSQL, table schema
- #7891: Consider handling file uploads using a RequestHandler
- #7892: Consider generic handling of PortletRequests using a PortletRequestHandler
- #8065: Manually defined tooltip delay
- #8539: DateField in DefaultFieldGroupFieldFactory
- #8894: Race condition when two Roots load at the same time: both fail to load
- #9103: Use -XenableClosureCompiler to further optimize widgetset
- #9214: Support IE10 natively in Vaadin 7
- #9216: Add support for detecting if IE10 is running on a touch device or not
- #9219: Run tests automatically on IE10
- #9354: Support arithmetics in the SCSS compiler
- #9515: Verify that lock is held when accessing state
- #9626: Redesign Debug Window
- #9945: Ensure proper locking when serving resources
- #9998: Document and improve how to build your own version of Vaadin 7
- #10108: VaadinServiceSession: update of totalSessionTime and lastRequestTime not thread-safe
- #10207: Mixins should support @content declaration
- #10250: Add Page.reload()
- #10492: Support division in the SCSS compiler
- #10524: Remove redundant inline styles from Label
- #10569: VaadinServlet.service() should lock session while processing requests
- #10708: UIConnector strips hyphens (-) from theme names
- #10882: Make servlet available through VaadinServletService and portlet through VaadinPortletService
- #10916: Make it possible to disable legacy Property.toString and related warning message
- #10931: Create a readme file to the root of the git folder
- #10976: @extend works in unexpected ways
- #10995: VaadinSession.getCurrent() fails during detach() due to HTTP session timeout
- #11052: Remove generator hack for AbstractComponentConnector.hasTooltip
- #11053: Memory leak in tree component (com.vaadin.ui.Tree)
- #11059: Implement server push prototype
- #11079: Integrate Calendar into core
- #11156: handleUidlRequest writes to closed output stream
- #11159: DefaultFieldGroupFieldFactory doesn't create DateFields
- #11177: AbsoluteLayout should not calculate slot size in pixels
- #11180: Properly support WAI-ARIA in field implementations
- #11192: Refactor Vaadin communications layer
- #11219: Add methods to VaadinSession: assertSession(), invoke(Runnable)
- #11234: Add method for getting Container filters
- #11237: Remove IE9 fallback mode
- #11254: Remove synchronous AJAX support
- #11265: Running application in debug mode throws Javascript exception
- #11294: Internal Error when clicking button in IE10
- #11300: Combobox text field contains 'x' in IE10
- #11301: Most IE9 css rules needed for IE10
- #11303: GridLayout broken in IE10
- #11308: "DevMode throws ""Something other than an int was returned from JSNI method"" warnings in IE10"
- #11327: Table generated column rendering defect in IE10
- #11329: Reindeer tabsheet tab error indicator styles are wrong in IE10
- #11335: HTTP session should not be invalidated on invalid security key
- #11360: Create wiki article with CSS Inject and Colopicker
- #11361: UI.getCurrent() null on detach() in case of session expiration
- #11370: Plan server push testing
- #11371: Plan handling of special cases in server push
- #11376: Vaadin Maven Plugin build should not use a hardcoded version
- #11380: Properly support WAI-ARIA in button
- #11384: Fix all race conditions and deadlocks in handling of VaadinService and VaadinSession
- #11389: Properly support WAI-ARIA in tree implementations
- #11390: Add tooling for scanning the 'Vaadin-Stylesheets'-attribute from Vaadin addon manifest
- #11395: DateField popup height is incorrectly calculated
- #11400: Move common request start/end handling code from servlet+portlet to service
- #11407: WAI-ARIA fields correction
- #11419: Using a converted without a data source can cause locale issues on attach
- #11421: Make it possible to set default alignment for layouts
- #11424: Client response should be buffered before written to the output stream
- #11440: Refactor internal communication error handling
- #11489: Push causes SessionExpiredException with TomEE
- #11490: Constant pushes of only meta data
- #11491: Fallback transport is never used if server does not support websockets
- #11492: Remove mandatory atmosphere dependency
- #11494: Run server integration tests with push enabled
- #11495: Add polling support
- #11498: Add a vaadin-push package
- #11499: Show help message if trying to enable push without atmosphere on the classpath
- #11501: Fallback push transport does not use UTF-8
- #11506: Make it possible to toggle push mode after init
- #11511: Rendering a Tree with icons fails if no alternate text is given
- #11512: PushConnection is not serializable
- #11513: Update license information with Atmosphere dependencies
- #11514: Ensure session is extended when push and websockets are used
- #11517: Write tutorial about creating a push enabled application
- #11528: Push request after server restart causes a lot of exceptions to be logged
- #11529: Client side race condition when pushing immediately
- #11530: Write release notes
- #11544: Maximize/restore icons for light and black Reindeer styles missing
- #11546: Push fallback does not work on iOS
- #11547: Fallback transport sometimes cut message in half
- #11548: Show all state properties in the hierarchy section of the debug console
- #11551: API: Don't bind PushConnection to any particular push implementation
- #11552: Problem with trailing slash on weblogic
- #11556: PushHandler must catch exceptions from event handlers
- #11573: IE8 streaming does not work properly if first message is small
- #11574: Build a 7.1-SNAPSHOT version of Maven plugin
- #11587: UI init request creates new session if ?restartApplication is in the URL
- #11589: Add goal vaadin:update-theme to update addons.scss
- #11590: Update vaadin-deps with new ICU4J GWT dependency
- #11591: Move SASSAddonImportFileCreator and ClassPathExplorere to vaadin-server
- #11592: Maven plugin should be buildable by default without signing (release profile)
- #11596: UI push connection should be closed on detach
- #11603: DebugWindow related tests fail
- #11610: IE8/IE9 tries to download PUSH.json
- #11616: Testbench test fails when checking for empty attribute
- #11622: Invalid parameters in logging commands
- #11624: ConnectorMap is never cleared when push is used
- #11626: Add isEnabled() to PushMode enum
- #11629: Switch to using the jquery version of Atmosphere client side
- #11634: The new gwt-uid-XX ids causes problems with TestBench Recorder
- #11635: PushHandler accepts push connections from old UIs
- #11643: Update commons-io dependency to 2.2
- #11646: Setting style (CSS class) on Accordion Tab is not working. (7.1)
- #11648: Websocket is disconnected if message size is larger than 8192
- #11653: @Push should use PushMode.AUTOMATIC as default value
- #11654: Remove atmosphere commercial
- #11655: Add client side PushConnection interface to be consistent with server side
- #11656: Change ApplicationConnection.handleJSONText to private
- #11657: Implement client side logging using java.util.logging
- #11658: Remove and deprecate old logging classes
- #11659: Simplify and clarify WAI-ARIA API
- #11660: "Addon scss should be included inside an ""addons"" mixin"
- #11661: Vaadin-stylesheets values should be relative to jar root
- #11662: Rename DisplayState to WindowMode
- #11663: Rename Tooltip to TooltipConfiguration
- #11665: Rename LoadingIndicator to LoadingIndicatorConfiguration
- #11666: Document that setPushMode and setPollInterval is only for application developers
- #11668: Rename loading indicator phases to first,second,third
- #11672: Verify push support in all supported servers
- #11684: SassCompiler cannot resolve scss files correctly on classpath
- #11690: WebBrowser no longer available in LegacyApplication.init
- #11698: Difficult to debug layout of detached connectors
- #11702: Message about handling pending messages displayed even if there are no pending messages
- #11705: Critical notifications sent during opening of push channel are lost
- #11706: Connector hierarchy tree is missing from new debug window
- #11707: use scheduleFinally for sending pending changes
- #11714: A closed UI should not accept RPC calls
- #11716: Let Atmsophere read settings from web.xml
- #11717: Store security key in VaadinSession instead of in the underlying session
- #11720: AssertionError if when client unexpectedly disconnects
- #11727: Remove reconnect limit for push
- #11729: Stacking of windows no longer works
- #11736: ActionManager should not use HashSet while collecting Actions (7.1)
- #11739: PushMode can't be set in UI.init
- #11754: Typo in PopupDateField.setAssisitiveText
- #11756: Rename runSafely() to access()
- #11757: Make access() throw if another session is already locked
- #11762: Compiling a theme on the fly does not work (Windows)
- #11767: AddonsStylesImporter should only invoked when a new jar is added,changed or removed from a project
- #11768: Pushing on the client before the push connection has been opened might cause an infinite loop
The full list of the closed issues can also be found at dev.vaadin.com.
Vaadin Installation
Vaadin is a Java framework for building modern web applications that look great, perform well and make you and your users happy. Vaadin is available under the Apache License, Version 2.0 (see the license.html in the Vaadin ZIP or JAR package).
The easiest ways to install Vaadin are:
- If using Maven, define it as a dependency or use any of the available archetypes (only vaadin-application is available for Vaadin 7 at the time of this release) to create a new project
- If using Eclipse, use the Vaadin Plugin for Eclipse, which automatically downloads the Vaadin libraries. To use this prerelease version, the plugin should be installed from the experimental update site (http://vaadin.com/eclipse/experimental).
It is also available as a ZIP package downloadable from Vaadin Download page.
Package Contents
Inside the ZIP installation package you will find:
- Separate server-side (vaadin-server) and client-side (vaadin-client, vaadin-client-compiler) development libraries
- Precompiled widget set (vaadin-client-compiled) for server-side development
- Shared library (vaadin-shared) for both server- and client-side libraries
- Built-in themes (vaadin-themes) and the theme compiler (vaadin-theme-compiler)
- Dependency libraries provided under the lib/ folder
See the README.TXT in the installation package for detailed information about the package contents. Book of Vaadin (for Vaadin 7) gives more detailed instructions.
For server-side development, copy the vaadin-server, vaadin-client-compiled, vaadin-shared, vaadin-theme-compiler, and vaadin-themes from the main folder and the dependencies from the lib folder to the WEB-INF/lib folder of your Vaadin project. (The vaadin-client-compiled is necessary if you do not wish to compile the widget set by your own, which you need to do if you use almost any add-on components.)
For pure client-side development, you only need the vaadin-client and vaadin-client-compiler JARs, which should be put to a non-deployed project library folder, such as lib. You also need them if you compile the widget set for any reason, such as using Vaadin add-ons, or create new server-side components integrated with client-side widgets.
Migrating from Vaadin 6
All Vaadin 6 applications need some changes when migrating to Vaadin 7. The most obvious changes are in the application/window API and require extending either UI or UI.LegacyApplication instead of Application. A detailed list of migration changes are given in the Vaadin 7 Migration Guide.
Any custom client-side widgets need to be ported to use the new client-server communication API, or the Vaadin 6 compatibility API.
Vaadin 6 add-ons (ones that contain widgets) do not work in Vaadin 7 - please check the add-ons in Vaadin Directory for Vaadin 7 support.
Vaadin 7.1.0.beta1 Dependencies
When using Maven, Ivy, Gradle, or other dependency management system, all Vaadin dependencies are downloaded automatically. This is also the case when using the Vaadin Plugin for Eclipse.
The Vaadin ZIP installation package includes the dependencies in the lib subfolder. These need to be copied to the WEB-INF/lib folder of the web application that uses Vaadin.
The dependencies are listed in the Licensing description. Some are explicit dependencies packaged and distributed as separate JARs, while some are included inside other libraries.
Bean Validation
If you use the bean validation feature in Vaadin 7, you need a Bean Validation API implementation. You need to install the implementation JAR in the WEB-INF/lib directory of the web application that uses validation.
Upgrading to Vaadin 7.1
Upgrading the Eclipse Plugin
Vaadin 7 requires that you use a compatible version of the Vaadin Plugin for Eclipse. The stable version of the plugin is available from the http://vaadin.com/eclipse update site. Please see the section about updating the plugin in the Book of Vaadin and the installation instructions at the download site for more details.
You can also use the experimental Vaadin Plugin for Eclipse. Its update site is http://vaadin.com/eclipse/experimental.
General Upgrading Instructions
When upgrading from an earlier Vaadin version, you must:
- Recompile your classes using the new Vaadin version. Binary compatibility is only guaranteed for maintenance releases of Vaadin.
- Recompile any add-ons you have created using the new Vaadin
- Unless using the precompiled widget set, recompile your widget set using the new Vaadin version
Remember also to refresh the project in your IDE to ensure that the new version of everything is in use.
By using the "?debug" URL parameter, you can verify that the version of the servlet, the theme, and the widget set all match.
Eclipse users should always check if there is a new version of the Eclipse Plug-in available. The Eclipse Plug-in can be used to update the Vaadin version in the project (Project properties » Vaadin).
Maven users should update the Vaadin dependency version in the pom.xml unless it is defined as LATEST . You must also ensure that the GWT dependency uses the correct version and recompile your project and your widget set.
Liferay and other portal users must install the Vaadin libraries in
Notes and Limitations for Google App Engine
The following instructions and limitations apply when you run a Vaadin application under the Google App Engine.
-
Applications must use GAEVaadinServlet instead of VaadinServlet in web.xml.
-
Session support must be enabled in appengine-web.xml:
<sessions-enabled>true</sessions-enabled>
-
Avoid using the session for storage, usual App Engine limitations apply (no synchronization, that is, unreliable).
-
Vaadin uses memcache for mutex, the key is of the form _vmutex<sessionid>.
-
The Vaadin VaadinSession class is serialized separately into memcache and datastore; the memcache key is _vac<sessionid> and the datastore entity kind is _vac with identifiers of the type _vac<sessionid>.
-
DO NOT update application state when serving an ConnectorResource (such as ClassResource.getStream()).
-
The application remains locked during uploads - a progress bar is not possible
For other known problems, see open tickets at developer site dev.vaadin.com.
Supported Technologies
Vaadin 7 is compatible with Java 6. Vaadin 7 is especially supported on the following operating systems:
- Windows
- Linux
- Mac OS X
Vaadin 7 requires Java Servlet API 2.4 but also supports later versions and should work with any Java application server that conforms to the standard. The following application servers are supported:
- Apache Tomcat, version 5.0 or newer
- Oracle WebLogic® Server, version 10.3 or newer
- IBM WebSphere® Application Server, version 7 or newer
- JBoss Application Server, 4.0.0 or newer
- Jetty, version 5.0 or newer
- Glassfish, version 2.0 or newer
Vaadin 7 supports the JSR-286 Portlet specification. All portals that implement either of the portlet specifications should work. The following portals are supported:
- Liferay Portal 5.2 or newer
- GateIn Portal 3.1 or newer
- eXo Platform 3 or newer
Vaadin also supports Google App Engine.
Vaadin supports the following desktop browsers:
- Mozilla Firefox 18-20
- Mozilla Firefox 17 ESR
- Internet Explorer 8-10
- Safari 6
- Opera 12
- Google Chrome 23-26
Additionally, Vaadin supports the built-in browsers in the following mobile operating systems:
- iOS 5, 6
- Android 2.3, 3, 4
Vaadin SQL Container supports the following databases:
- HSQLDB
- MySQL
- MSSQL
- Oracle
- PostgreSQL
Vaadin on the Web
- vaadin.com - The developer portal containing everything you need to know about Vaadin
- vaadin.com/demo - A collection of demos for Vaadin
- vaadin.com/learn - Getting started with Vaadin
- vaadin.com/forum - Forums for Vaadin related discussions
- vaadin.com/book - Book of Vaadin - everything you need to know about Vaadin
- vaadin.com/api - Online javadocs
- vaadin.com/directory - Add-ons for Vaadin
- vaadin.com/pro-account - Commercial support and tools for Vaadin development
- vaadin.com/services - Expert services for Vaadin
- vaadin.com/company - Information about the company behind Vaadin
- dev.vaadin.com - Bug tracker
- How to get the source code of Vaadin