Agorava, the Social Framework can best be described as a "reference implementation" for Social Media integration on the Java Platform.
It helps developers to integrate their apps with many Social Networks, both Public (Facebook, Twitter, Google+, LinkedIn, Xing, Yammer,...) and Corporate, e.g. within the Enterprise or Institution (University, Hospital, Library, Museum...) or by artists and other creative individuals. It also adds social media features to Java Enterprise and web sites or services developed running Java or other JVM languages. Agorava is intended to be part of JDF 2.x or similar parts of a JBoss "Social" Stack.
In this session, you will learn how to use Agorava and hear about similar frameworks or approaches and where they stand at the moment.
8. Twitter4J
• Twitter4J is an unofficial Java library for Twitter
API.
With Twitter4J, you can easily integrate your
Java application with Twitter.
• Its author, Yusuke Yamamoto used to work at
Twitter.
While he did, he was briefly meant to represent
Twitter in the Social JSR (357) EG.
• It’s light and compatible even with Java 1.4 to be
integrated e.g. in mobile apps
#SMWCPH
9. Scribe Java
• Scribe is Java framework that provides basic
OAuth function
• It also contains configuration for a lot of Social
Media
• Only one dependency on Apache Common
Codec
• Was at the heart of Agorava 0.5
#SMWCPH
10. DaliCore – CMS
• More than a CMS → DaliCore
• Adds functionality common to users, content and
permissions on top of Java EE 6.
• Focus on Users and Permissions.
• In about every DaliCore project, users should be
able to login with existing credentials (Facebook,
Twitter, Google Connect,...)
• Dali modules extend DaliCore
#SMWCPH
11. Spring Social
• Spring social somewhat inspirational to Seam
Social and Agorava has been around a bit
longer
• Spring Social module were used to create first
Agorava modules (thanks to OSS and ASL2)
• But it’s Spring a only module....
#SMWCPH
18. Standard part in
Social Media
• All social medias use REST as
transmission protocol
• Most of them transmit data in JSON
format and some in XML
• Identification & Authentication are almost
entirely based on OAuth protocol
18
#SMWCPH
19. REST
• REpresentational State Transfer :
Requests about resource representation
(customer, book, order)
• REST is based on low level HTTP
• Each resource has a unique identifier
(URI). 4 HTTP verbs can be applied to a
URI : GET, POST, PUT, DELETE
• Java has REST standard: JAX-RS.
Version 1.0 doesn’t provide client API
#SMWCPH
yet, JAX-RS 2.0 does
19
20. JSON
1: {
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23: }
"firstName": "John",
"lastName" : "Smith",
"age"
: 25,
"address" :
{
"streetAddress": "21 2nd Street",
"city"
: "New York",
"state"
: "NY",
"postalCode" : "10021"
},
"phoneNumber":
[
{
"type" : "home",
"number": "212 555-1234"
},
{
"type" : "fax",
"number": "646 555-4567"
}
]
20
• JavaScript Object
Notation: Data format
inspired by
JavaScript. It became
a standard for online
services including
Social Media.
#SMWCPH
21. OAuth
• OAuth is a protocol to delegate rights
for an application to act on the behalf of a
user who granted its rights without giving
away login / password
• Developed by Twitter, Magnolia and
Google, it was made standard by IETF in
April 2010 under RFC 5849
21
#SMWCPH
22. OAuth (2)
• Version 2.0, simpler to use but often
criticized for too many implementation
was standardized in October 2012 under
RFC 6749 and 6750. Already widely used
(Facebook, Google, Microsoft)
• All Social Media services are based on
OAuth 1.0a or 2.0.
• To use OAuth, one has to create an
application on the targeted service to
have an entry point for consumer #SMWCPH
22
25. OpenSocial
• Become an
OpenSocial Container
Get Shindig (PHP or Java)
or Google implementations*
OpenSocial Container
• http://shindig.apache.org
– Look at examples & documentation
• http://code.google.com/p/opensocialresources/wiki/SampleApps
25
» * See later why
#SMWCPH
26. OpenSocial – Shindig
– Open source implementation of OpenSocial &
Gadgets specification
– An Apache Software project
– Available in Java & PHP
– http://shindig.apache.org
It’s Goal: “Shindig's goal was to allow new
sites to start hosting social apps in under an
hour's worth of work“
• Those who tried it confirm, this failed quite
miserably
26
#SMWCPH
27. OpenSocial – What is a
Gadget?
Simple gadgets for getting a Grid proxy credential and
running remote commands. Both run on my own
Web server.
27
#SMWCPH
28. OpenSocial Fork
The “official” OpenSocial implementation has shifted – from
Shindig to Google Code https://code.google.com/p/opensocial-
resources/
And just plans to move yet again, this time to GitHub!
In fact, Google’s OpenSocial Ruby Gem moved there 4 years
ago, and the code hasn’t changed since
https://github.com/revans/opensocial
(original Google Code SVN by MySpace also still exists;-)
28
#SMWCPH
29. Who uses OpenSocial?
• Social “Herrings”
– MySpace
– Orkut
– Friendster
– Hi5
– Jive
– IBM (Lotus Notes;-)
29
#SMWCPH
30. Who does not use
OpenSocial?
• Big “Fish”
– Facebook
– Twitter
– LinkedIn
– XING*
– Yammer
– Foursquare
– Google+
...
30
* Abandoned it for lack of Security among other reasons
#SMWCPH
31. What’s said about
OpenSocial
– OpenSocial is what Google created for
MySpace
(Yammer CTO and co-founder Adam Pisoni)
– Out of the box, most gadgets are publicly
available content that do not require
authentication and authorization.
(ThoughtWorks Studios about OpenSocial
gadgets)
31
#SMWCPH
32. What’s said about
OpenSocial (2)
– OpenSocial is a specification that provides a
standard way to share content between semitrusted applications.
– While initially proposed for public facing social
networking sites, it has possibly more potential
within the corporate firewall
(ThoughtWorks Radar, March 2012)
– Latest twist: OpenSocial is now proposed as
W3C recommendation
32
#SMWCPH
33. The non Standard parts
• No standard identity management or any
other API across Social Media
(for Java JSR 351 tries to establish that)
• More than that. There is no Social Media
that guarantee:
– Its API won’t change for a given period
34
– Backward compatibility when its API
changes
#SMWCPH
34. What would be a standard
for Social?
• A basic heart providing basic services :
– OAuth and Rest request
– Multi Social Media connections
– Polymorphic services to enforce standard on
social Media
– Connector definition for Social module
• So this standard would be a kind Java
Social Connector definition standard
35
#SMWCPH
35. From JSR 357 to Agorava
• Before Agorava there was Seam
Social, part of the JBoss Seam 3 project
• Early 2012, Seam was stopped to be
merged in Apache DeltaSpike
• Agorava was born mainly from Seam
Social after JSR 357 attempt
• One of it’s goals is to be the missing POC
for a new Java Social Standard
36
#SMWCPH
36. Differences to
Spring Social
• Spring Social works primarily with Spring
• Other UI frameworks than Spring MVC
are harder to integrate
• Focus on Facebook, so far examples only
provide Single Service support, unlike
Agorava Multiservice approach
#SMWCPH
37. Differences to
Spring Social (2)
• Despite otherwise still somewhat active
Spring community, even at Pivotal /
Vmware there’s doubt about support and
activity, especially after some people left
• Currently supports .NET, too
#SMWCPH
38. Differences to
DaliCore
• Also offering Social Container and
CMS, partial OpenSocial support
• Persistence support via EJB, JPA, etc.
• Not so clear separation of
modules, especially API/Spec and
Implementation, in most cases they share
same module and even package
39
#SMWCPH
39. Differences to
DaliCore (2)
• Currently seems a little heavier, strong
dependencies on the Full Java EE
stack, i.e. using only Web Profile or Java
SE seems hard right now
• Glassfish support and Integration
Oracle stopped professional GF support
• Demonstrated Scalability also under
heavy usage
49
40
#SMWCPH
40. Agorava 0.7
Macro architecture
– Agorava core is the
«smart module» of the
framework
– Modules are mainly
REST API and JSON
mapping
– Agorava provides full CDI
implementation
– In progress from 0.7 on:
• Full Java SE support (e.g. CDI 2)
• JSR 330 (Guice | Dagger, maybe
Spring) support
43
#SMWCPH
42. Agorava Book
– A first book about Agorava is
scheduled for release to print
and online (Amazon, Google
Play!, iTunes) this Spring.
– Please check
http://developerpress.com/en
/enterprise-20-agorava-0/
45
#SMWCPH