DWR version 3.0
The much awaited DWR version 3.0 has reached release candidate 1. What's new?
- 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.
I'm sure there will be lots of questions about how to use these features. Please don't ask in the comments. Join the mailing list and ask there. As we roll out the new documentation system in the next week or so, all the details will be in there, and I'll then come back and link up this blog post.
You can download it now.