DWR version 3.0 has reached release candidate 1. Here's what's new right from Joe Walker's Blog:
- RPC Enhancements
- Varargs support
- Method overloading (DWR tries to copy Java's method matching rules)
- Typed parameters (so you can say
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 (
FileTransfercan be uploaded from an
input type=file, offered for download, or sent to an
- Binary file upload/download (
- Locale, Currency (DWR will marshal to and from
- Reverse Ajax
- More scalable Reverse Ajax APIs (See
- DOM Manipulation Library (
Documentcan 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.requireall 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)
- 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)
You can download it here.
DWR 3.0 is going to be released soon. Following are vision from Joe, Founder of DWR
DWR 2.0 has been out for 6 months or so. At the time, I swore that the next release would be a small one, called 2.1. However it appears that I’m not good at swearing because there is lots in the next release - I think we’re going to have to call it 3.0.
Since 2.0, we've been working on the following adding support for JSON, Bayeux, images/binary file upload/download, a Hub with JMS/OAA support and more reverse ajax APIs. I also want to get some Gears integration going.
There are also a whole set of non-functional things to consider:
* Moving the website to directwebremoting.org
* Restart chasing CLAs, using a foundation CLA rather than a Getahead CLA
* Get some lawyer to create a CLA so Getahead can grant rights to the Foundation (or something similar)
* Get someone to pony up and let us move to SVN
* Unit tests
Bayeux Support: Greg Wilkins (Jetty) committed some changes to DWR, which need some tweaks to get working properly. Greg still intends to complete this.
File/Image Upload and Download: This allows a Java method to return an AWT BufferedImage and have that image turn up in the page, or to take or return an InputStream and have that populated from a file upload or offered as a file download. I’ve had some bug reports that it doesn’t work with some browsers, also we need to find a way to report progress to a web page simply.
DWR Hub and integration with JMS and OpenAjax Hub: We have a hub, along with one way integration with JMS. The OpenAjax portion will be simple except for the getting the OpenAjax Hub to work smoothly with JMS part. Much of this work has not hit CVS yet, but will do soon.
DOM Manipulation Library: Currently this is limited to window.alert, mostly because I’m not sure how far to take it. There are a set of things like history, location, close, confirm that could be useful from a server, and that are not typically abstracted by libraries.
Gears Integration: I’ve not started this, but it needs to take higher priority than it currently does. It would be very cool if DWR would transparently detect Gears, and then allow some form of guaranteed delivery including resending of messages if the network disappears for a while.
Website: We need to get the DWR website moved away from the Getahead server, and onto Foundation servers. There will be some URLs to alter as part of this, and I don’t want to lose Google juice by doing it badly.
The documentation for DWR 2 was not up to the standards of 1.x, and while it has been getting better, we could still do more. One thing that has held this back has been lack of a DWR wiki. I hope we can fix this with the server move.
Source Repo: We are currently using CVS hosted by java.net (which is a collab.net instance - yuck). They support SVN, but want to charge me a few hundred dollars to upgrade. Maybe the Foundation can either ridicule them into submission or pay the few hundred dollars for the meta-data so we can host the repo. ourselves. The latter option is probably better.
Unit Tests: I've been trying for ages to find a way to automatically test with multiple browsers and servers. WebDriver looked good for a while, but it doesn't look like the project is going anywhere particularly quickly, so I'm back trying to get Selenium to act in a sane way.