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.
Citation preview
1. ENTERPRISE 2.0 WITH OPEN SOURCE Frameworks like Agorava
#SMWCPH
2. #SMWCPH
3. Werner Keil | Bio Consultant Coach Creative Cosmopolitan
Software Architect Java Godfather JCP Executive Committee Member
Eclipse UOMo Project Lead Agorava Cofounder ETCS Guy @wernerkeil
#SMWCPH
4. Proliferation #SMWCPH
5. Proliferation of Social Media #SMWCPH
6. Social Gaga Image 2012 Lady Gaga. All Rights Reserved.
#SMWCPH
7. Before Java Social (JSR 357) #SMWCPH
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. Its 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 its Spring a only module.... #SMWCPH
12. In Memoriam PHILIP SEYMOUR HOFFMAN July 23, 1967 February
2, 2014 Image 2003 Universal Pictures. All Rights Reserved.
#SMWCPH
13. Along came JSR 357 In march 2012 on Werner Keils
initiative, Java Social was submitted to the JCP to become a JSR It
proposed to standardize high level access to Social Media for the
Java Platform It was voted down by 8 votes against 5 Image 2003
Universal Pictures. All Rights Reserved. #SMWCPH
14. What went Wrong? (Feedback from vote) #SMWCPH
15. Too Broad? Maybe... #SMWCPH
16. Too Soon? Lack of real POC... 16 #SMWCPH
17. It cant be standardized? FALSE 17 #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 doesnt 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
23. OAuth has 3 steps Creating an application in an OAauth
service Initialization: right granting phase also called OAuth
Dance. At its end we obtain an access token (formed by public and
secret part) to use in next step Signature: each request is signed
with an access token identifying the OAuth application granted
rights to #SMWCPH Image 2003 Universal Pictures. All Rights
Reserved.
24. Standards that didnt make it Some Images 2003 Universal
Pictures. All Rights Reserved. #SMWCPH
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 Its 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, Googles OpenSocial
Ruby Gem moved there 4 years ago, and the code hasnt 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. Whats 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. Whats 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 wont 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 its 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 theres
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
41. Image 2003 Universal Pictures. All Rights Reserved. Lets
Dance... #SMWCPH emo...
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