43
#SMWCPH #SMWCPH ENTERPRISE 2.0 WITH OPEN SOURCE Frameworks like Agorava

Enterprise 2.0 using Social Frameworks like Agorava (SMWCPH 2014)

Embed Size (px)

DESCRIPTION

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
  • 43. Links Agorava Project: http://agorava.org #smwagorava @wernerkeil @AgoravaProj Github: https://github.com/agorava JBoss Developer Framework: http://www.jboss.org/jdf/about/roadmap/ #SMWCPH