abdera-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From James Snell <jasn...@gmail.com>
Subject Abdera2 Nearing Completion
Date Fri, 02 Dec 2011 21:09:19 GMT
Ok, work on Abdera2 is nearing completion. All that's really left at
this point is a ton of testing and documentation, I'll also likely
continue to work with a number of new experimental features, but the
core modifications are complete and I would like to invite folks to
start kicking the tires on it and giving it a spin.

Abdera2 is a MAJOR update over Abdera 1.x, and as such, it uses a new
package name (org.apache.abdera2.*) and is *NOT* binary compatible
with Abdera 1.x. The overwhelming majority of the Atom Feed Object
Model (FOM) API remains untouched but there have been important
changes, such as the switch over to using the Joda-Time library for
all DateTime handling, and the introduction of the new Selector
framework API. Also, the Server framework and Client APIs have both
been refactored significantly, so there will be a necessary migration
path if you choose to upgrade your existing Atom-based applications to
Abdera2. I think you'll find the new capabilities well worth the
trouble.

The part of this that I'm most excited about is the Activity Streams
implementation. Plenty of examples are included to help you get
started with that.

The build and test cases may still be a bit rough around the edges,
I'll be working on smoothing all that out over the coming week, so if
you run into any issues, let me know. You'll need Maven to build as
there is no Ant build option for Abdera2.

You can find the code here: http://svn.apache.org/repos/asf/abdera/abdera2/

Below is a high level listing of the changes/new features. There are
way too many changes to list them all in detail.

Abdera2 - High Level Features (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 templates
    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

Mime
View raw message