New in DWR 3.0 RC1 (Nov 2, 2010)
- RPC Enhancements:
- Varargs support
- Method overloading (DWR tries to copy Java's method matching rules)
- Typed parameters (so you can say new Apple() in JavaScript and pass it to the addFruit() method and DWR will instantiate the correct type on the server)
- Lightweight typed parameters (as above, but by adding $dwrClassName:"Apple", for when you are getting the objects from something else)
- More natural synchronous XHR (so you can call var reply = Remote.getData() when doing 'Sjax')
- Improved Marshalling:
- Binary file upload/download (byte[], java.awt.BufferedImage, InputStream etc and FileTransfer can be uploaded from an input type=file, offered for download, or sent to an img)
- Functions (Store a reference to a JavaScript function on the server for later execution)
- Objects by Reference (Store a reference to a JavaScript object, and then call methods on that)
- Locale, Currency (DWR will marshal to and from java.util.Locale and java.util.Currency objects)
- Reverse Ajax:
- JavaScript can now implement a Java interface (For simple integration with Java Events/Listeners)
- More scalable Reverse Ajax APIs (See org.directwebremoting.Browser)
- DOM Manipulation Library (Window and Document can now be manipulated from the server)
- The server now runs in 3 modes: stateless (New - save memory with no page tracking), passiveReverseAjax (the default) and activeReverseAjax (comet enabled)
- TIBCO GI Integration:
- Complete set of Reverse Ajax Proxy APIs (So you can manipulate your GI user interface from Java on the server)
- Dojo Integration:
- Data Store (Keep a server side data store in sync with data in a client browser with both sides able to send updates. The data store also supports paging, sorting and filtering)
- Packaging Integration (dojo.require all your DWR scripts)
- Server Support:
- Asynchronous servlet support for Tomcat and Glassfish
- Improved Spring and Guice support
- Over the wire:
- JSONP support
- JSON-RPC support
- Tech Previews:
- JMS Integration (Publish to the browser directly from JMS)
- Jaxer Integration (Zero configuration for trusted environments)
- Infrastructure:
- SVN (We've moved from CVS to SVN)
- Related Projects (Our repository contains a set of related projects including a number of demos)
- CLA (We've been through a legal review and have signed CLAs for dwr.jar)
- Dojo Foundation (We joined the Dojo Foundation and are now hosted by their servers)
- Better Documentation (DWR version 1.x had great docs. Version 2.x let things slide a bit, but we've dropped Drupal, and have our own system now)
- There are also a bunch of things like better logging, error reporting and so on, but the full list would get quite dull. 2 things dropped out that we'd previously talked about: Bayeux Support and Gears Offline integration. We'll get to those, particularly Gears, soon.