InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Apache Abdera: Atom, AtomPub, and Java

Posted by Stefan Tilkov on Apr 15, 2008

Sections
Architecture & Design,
Enterprise Architecture
Topics
REST ,
SOA ,
Syndication
Tags
Abdera

The Apache Abdera project, an open source Atom Syndication and Atom Publication Protocol implementation currently still in its “incubation” phase, has recently reached its 0.40 milestone, an important step towards “graduation”. InfoQ had a chance to talk to IBM's James Snell and MuleSource's Dan Diephouse, two of Abdera’s core developers, about Abdera, Atom and AtomPub.

InfoQ: Everyone knows Atom and AtomPub are just for weblogs. Right? Why would anyone care about them outside of this domain?

James Snell: While Atom and AtomPub certainly began life as a way of syndicating and publishing Weblog content, it has proven useful for a much broader range of applications. I’ve seen Atom being used for contacts, calendaring, file management, discussion forums, profiles, bookmarks, wikis, photo sharing, podcasting, distribution of Common Alerting Protocol alerts, and many other cases. Atom is relevant to any application that involves publishing and managing collections of content of any type.

Dan Diephouse: One only needs to look to some of the public services out there. Most of the APIs for Google are based on AtomPub. Microsoft is moving toward it for web APIs too. These services are all going beyond just blogs. AtomPub goes beyond public web APIs as well - I’ve noticed that many enterprises are starting to use AtomPub for some of their internal services as well.

InfoQ: Is AtomPub the new SOAP?

James Snell: I’m sure someone could make that case but I don’t think it’s worthwhile.

Dan Diephouse: I agree that its not a very worthwhile analogy as SOAP is primarily a way to ship around data. Maybe there is some more validity if you bring WSDL into it. Both AtomPub and SOAP/WSDL give you a way to build a service for others to use. But AtomPub takes a fundamentally different approach to helping users implement services. It implements constraints which give new types of freedom. Because the data format is constrained - every entry has a title, entry, id, and content/summary - I can use an Atom feed from any type of application and get some useful information out of it! I can consume calendar data the same way I consume an employee directory and the same I was read blogs. I don’t need any specific tools nor do I need to know anything other than that the service is AtomPub. These constraints limit the applicability of AtomPub as well - it is by no means a protocol for all things. Many things are awkward to model in AtomPub - really your data needs to be time based lists of things for it to be a natural fit.

InfoQ: What is Abdera?

James Snell: Abdera is an open source implementation of the Atom Syndication Format and Atom Publishing Protocol. It began life as a project within IBM’s WebAhead group and was donated to the Apache Incubator in June 2006. Since then, it has evolved into the most comprehensive open-source, Java-based implementation of the Atom standards.

Dan Diephouse: The features are beginning to be a little too numerous to mention. It includes support for developing/consuming AtomPub services, an IRI library, a URI template library, unicode normalization, extensions for things like XML signature/encryption, GData, GeoRSS, OAuth, JSON and more. One of the cool new things in the latest release are a set of “adapters” which allow you to have an AtomPub service without any coding by storing entries in JDBC, JCR or the filesystem.

InfoQ: Can you briefly summarize some key design decisions in Abdera’s architecture?

James Snell: Abdera was initially designed around three primary points:

  1. It was to be functionally complete, providing support for every aspect of Atom development and every option allowed by the standard. This principle is illustrated by Abdera’s support for features like IRI’s, Unicode Normalization, XML Digital Signatures, XML Encryption, and a wide range of extensions.

  2. It was to perform well, providing fast parsing and serialization of Atom documents.

  3. It was to be modular, providing a means for developers to pick and choose only the functionality necessary to enable any particular feature and to allow pieces to be swapped out or plugged in easily.

InfoQ: What do the two of you use Abdera for?

James Snell: Within IBM, Abdera is used by components of the Lotus Connections and Lotus Quickr suites to enable Atom Publishing Protocol support. Abdera is also shipped within the WebSphere Web 2.0 Feature Pack. Internally, Abdera is used in a broad variety of applications.

Dan Diephouse: At MuleSource we’re using it in a couple places. We’re using it in Galaxy, an open source registry/repository, for our API. It allows users to manage artifacts and metadata inside our repository. We shied away from using something like UDDI as it was overly complex. AtomPub gave us the ability to manipulate our registry using a simple RESTful API and enable syndication of things inside the repository at the same time.

We’ve also written an Abdera component for Mule which allows you to easily integrate AtomPub services with any of the other various connectors Mule supports. AtomPub can be extremely useful a lot of integration scenarios - like queueing, logging, eventing - anything where you have time based collections of things. We’re hoping it will help people get their data out there in a web friendly way.

InfoQ: What’s on the roadmap next?

James Snell: Graduation. Abdera has been part of the Apache Incubator for long enough. While there are still some details to work out, I would very much like to see Abdera graduate to it’s own Top Level Project at Apache, and become host to a broad range of Atom-based applications.

Dan Diephouse: I think we’re also focused on getting a 1.0 release out soon as well (community willing). I’ll also take this moment to plug our project and say - get involved! Feedback (of any kind) and patches are always welcome. Just join the mailing list or start filing issues.

Check out Dan Diephouse’s and James Snell’s blogs as well as the Abdera home page.

  • This article is part of a featured topic series on SOA
Google APIs by Thom Nichols Posted
  1. Back to top

    Google APIs

    by Thom Nichols

    It was sort of mentioned, but the Google Data API is basically ATOM with some add-in XML namespaces. This is super useful if you want to integrate with (or more importantly, publish data using the GData format.

Educational Content

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.

Max Protect: Scalability and Caching at ESPN.com

Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.

The Seven Deadly Sins of Enterprise Agile Adoption

Are there repeated patterns of failure on Enterprise Agile Enablement efforts? Sanjiv and Arlen discuss Seven Deadly Sins to avoid when adopting Agile in an enterprise.

Questions for an Enterprise Architect

Erik Dörnenburg answers: What is Enterprise and Evolutionary Architecture?, discussing 4 issues: Turning strategy into execution, Ensuring conformance, Where do the architects sit? Buying or building?