Abdera2 is a major update to the project that introduces a broad range of new features and functionality as well as bug fixes and improved performance.
New features include (not a comprehensive list)
- Updated all dependencies to latest versions
- Introduced new dependencies on Joda-Time and Guava Libraries
- Refactored package layout, new packaging structure:
- common, core, client, server, security, ext and activities
- New Common Code Library
- Selector Framework, extension to the Guava Predicate API, used extensively throughout Abdera2.
- Updated and Extended URI Template Implementation
- Updated Unicode Support using ICU4J
- Improved efficiency in IRI implementation
- Enhanced ISO8601 Date/Time handling using Joda-Time, Guava and the Selector framework
- Enhanced support for common HTTP Headers (Authentication, Cache Control, ETag, Preference, Web Linking)
- Simplified Lang Tag Support
- Enhanced Media Type Support
- New lightweight "Pusher" interface.. acts as a shim for simple pub/sub applications.
- Lightweight MapReduce implementation built around the Guava Function API designed primarily for relatively small, in-memory analysis operations. Supports asynchronous, non-blocking operations.
- Simple Chained Invocation API extending the Guava Function API
- API Key and One Time Password Implementations
- Utilities for simplifying Hash and HMAC generation and validation
- Variety of other useful utilities...
- Updated Feed Object Model API, using Joda-Time for all Date-Time handling, use of the Selector API for filtering results
- Simplified the Named Writer and Named Parser mechanism in the Atom implementation
- Completely refactored HTTP Client API based around the Apache HTTP Client Components 4.x.
- Support for Asynchronous, non-blocking HTTP Client operations leveraging the java.util.concurrent.Executor framework and java.util.concurrent.Future
- Refactored Publishing Server Provider framework, simplifying the overall architecture and tying in new capabilities from the new Common Code library.
- Improved Atom Parsing Performance (my informal testing has demonstrated about a 20-25% improvement on average)
- Complete JSON Activity Streams implementation
- Support for generating and consuming Activity Streams
- Support for all core Object Types and Verbs
- Support for a number of extension Object Types and Verbs
- Fluent, factory-model API
- Immutable, thread-safe objects
- Streaming Serialization API
- API for using existing Activities objects as template to create new objects
- Extensible serialization/deserialization
- Asynchronous, non-blocking parsing and serialization
- Support for primary Activity Streams extensions such as Replies and Audience Targeting
- Experimental mode that allows playing around with new experimental extensions
- JSON Web Token Support
- Client and Server side Activity Streams based API support
- Type-safe dynamic extensibility API
- Merge/Diff API
- Filter API based on Selectors
- Conversion of JSON Activity Stream to and from Atom
It is important to point out that Abdera2 is NOT binary compatible with the 1.x version. While much of the basic Feed Object Model (FOM) API remains unchanged, there have been many changes specifically in the area of Date handling and the introduction of the Selector framework. Accordingly, the Abdera2 Java Package has been changed to org.apache.abdera2.*.
Also, it must be noted that the Server and Client frameworks have been completely refactored as well. Custom Provider implementations based on the BasicProvider API should require fairly little modification to work under Abdera2, but in general, Adapters and Providers written to the 1.x code will need to be migrated to the new refactored design. Detailed documentation on the new design will be provided.
The Abdera2 artifacts are not yet being published to the Maven Repositories, so if you want to play around with it, you will need to check it out of SVN directly and build. Within the source code repository, it is located at http://svn.apache.org/repos/asf/abdera/abdera2/. To build, use the latest version of Maven and run "mvn install" to compile and install the binaries into your local mvn repository.
Abdera 2 looks ambitious - is there a timeline for the plan to get it (or perhaps a subset of it) to GA?