One To Watch
The Java Social Media API is dead: Long Live Agorava
Social media is an ever changing place- that's a given. Over the
past decade, some social networks have flourished, some have died a
sorry death. But with numerous social networks seemingly appearing
by the day, Java hasn't really had chance to connect to the latest
network making a big splash. Many Java developers are left
frustrated by the dearth of options when wanting to authenticate
users' Twitter, Facebook or LinkedIn accounts or post tweets or
Facebook updates automatically from within their
Fortunately, a new project has emerged to provide the missing link between Java and Social Media. Agorava is an open source framework that will, according to its Tech Lead Antoine Sabot-Durand, "provide a way to authenticate on Social Media, use APIs and map JSON answers to Java pojo."
Currently based on CDI, which is gaining increasing importance
within Java communities, the plan is to bring in multiple
implementations (such as Java SE, JSR 330 supporting framework and
others) to support your needs. But this is of course further down
the pipeline, with the current focus being on creating influence
with the CDI implementation.
It's important to give context the genesis of this project, with the area of social media standardisation in Java having been discussed at great length. Agorava was born after two main events. In March 2011 the project Seam Social was launched, aiming to provide a collection of CDI beans and extension to support growing social network consumption. With Seam 3 project ending at the back of last year, (and merged into Apache Deltaspike with Apache CODI and others), some of the team decided launch the JCP proposal: Java Social JSR 357.
However, some on the Executive Committee were sceptical of its timing and its broad scope, rejecting it early in proceedings. Sabot-Durand believes that it was down to not having "real proof of concept (an implementation) behind it."
Hence Agorava comes into play - taking stock of those JCP comments and aiming to start over by experimenting in creating a standard API for Java to solve all these social media problems within the language. Not that there haven't been attempts to amend this social shortcoming - only recently was Java Specification Request 357: Social Media API rejected due to such a broad scope and many felt it wasn't the right time to standardise.
Now some of you are probably thinking here - don't most (if not all) networks have their own APIs? What would be the point of reinventing the wheel so to speak? Sabot-Durand fields this in his blogpost:
Having a vendor free solution to deal with these Services is also an advantage, we’ll try to implement all the available public APIs and provide similar functionalities across “all Social Media”.
Sabot-Durands also details just some of the roadmap ahead, and from the looks of it, it's a pretty ambitious one. The 0.5.0 snapshot release is expected this summer, with a heavy focus on supporting stateless architectures - quite a big deal. Further down the line in the first final release, we can expect the following:
- Change REST engine for JAX-RS 2.0 client framework
- Implement OAuth implementation on JAX-RS client Framework
- Provide compatibility with Weld-OSGi
- Java SE implementation
- JSR 330 specific API and implementation (Guice or Spring)
- Finished Twitter, LinkedIn, Facebook Modules
It's a bold ambitious to tackle so much, but are the team behind
Agorava biting off more than they can chew? It may be an incredibly
noble goal, as Java absolutely needs to be cohesive with social
media. But with the field still changing, is it too much at once?
We do agree though that this is the correct way to go about getting
a Social Media API in Java.
We're eager to monitor the progress of this huge undertaking and hope that it can live up to the claims made. There's also heavy praise for Spring Social, and we're wondering how it can possibly differentiate from that project.
You won't be surprised to hear Agorava is already up and running - You can test the demo application Socializer or fork the Socializer project on Github. As you'd hope with a project devoted to the area, there's oodles of social networking going on too - follow on Twitter @Agoravaproj and check out the Google User Group for more discussion surrounding the project. Why not join in?