Build content centric apps with eclipse and nuxeo - ny java-sig november 2011

1,769 views

Published on

Nuxeo's Olivier Grisel (R&D Software Engineer) and Roland Benedetti (VP of Products & Marketing) provide an Introduction to the Eclipse Apricot Project and the Nuxeo Platform at the NYC Java User Group in November 2011.

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,769
On SlideShare
0
From Embeds
0
Number of Embeds
282
Actions
Shares
0
Downloads
32
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • Middleware: Defines domain model and services - used by the application - persisted in the storage\nPersistence Service: Is to semi-structured content what Hibernate is to objects with properties\nHigh-Level Abstraction: Abstract operations, Let the Content Repository do its job\n
  • Not a Filesystem: A Content Repository offers much richer semantics\nMetadata, Versioning, Relationships, Non-path-based access\nNot an ORM: Content comes before relations and optimizations; Don’t limit yourself to SQL\n
  • \n
  • \n
  • Full-featured services: Queries (NXQL, CMISQL, pluggable), Versioning (pluggable), Locking (synchronous, cluster-aware), Access Control (groups, grant/deny, inheritance), Proxies (shortcuts), Events & Listeners (sync, async, async post-commit), Audit Trail\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Build content centric apps with eclipse and nuxeo - ny java-sig november 2011

    1. 1. NYJavaSIGIntroducing Apricotand Nuxeo IDEBuild Content-centric applications withEclipse and NuxeoOlivier Grisel, R&D Engineer, Nuxeo,ogrisel@nuxeo.com https://twitter.com/ogrisel2011-11-16
    2. 2. Agenda • What Is a Content Repository? • Eclipse Apricot: Features & Benefits • Apricot Modularity • The Future of Apricot • Developing with Nuxeo/Apricot • DemoNYJavaSIG 2
    3. 3. What Is a Content Repository?NYJavaSIG 3
    4. 4. What Is Content? • Everything is content! • Unstructured • Files, Images, Assets, XML, Binary streams • Structured • Schema, Metadata, Business Data, Tables • Semi-Structured • Files + Metadata, Web pages (assemblies, relations), Emails (attachments), Record ManagementNYJavaSIG 4
    5. 5. A Content Repository is Middleware • Between Application and Storage Subsystem • Does not replace either • Persistence Service • Stores structured and unstructured content • High-Level Abstraction • Stop caring about storage details • Focus on your domain model and its objectsNYJavaSIG 5
    6. 6. What a Content Repository Is Not • Not a CMS (WCM, ECM, ...) • A CMS is one application on top of a Content Repository • Not a filesystem • If all you have is a filesystem, everything looks like a file • Not an ORM • Not that granular, don’t think in SQL terms • Not just for storage • Provides Services, Domain Model / Business ModelNYJavaSIG 6
    7. 7. Eclipse ApricotNYJavaSIG 7
    8. 8. Eclipse Apricot • OSGi framework • Under the Eclipse Runtime project • Currently in the Incubation phase • Mentored by Gary Xue (Actuate) and Cédric Brun (Obeo) • Contributed by Nuxeo, from Nuxeo Core • http://www.eclipse.org/apricotNYJavaSIG 8
    9. 9. What Is Apricot? • Content Repository • Lightweight Web Framework • Content Automation • CMISNYJavaSIG 9
    10. 10. Content Repository • Content Model (Types and Schema definition) • Queries (NXQL, CMISQL, pluggable) • Versioning (pluggable) • Locking (synchronous, cluster-aware) • Access Control (groups, grant/deny, inheritance) • Proxies (shortcuts) • Events & Listeners (sync, async, async post-commit) • Audit TrailNYJavaSIG 10
    11. 11. Lightweight Web Framework • Build content-centric Web Applications • Expose content on the web • Fast framework based on JAX-RS • Provides FreeMarker templating (pluggable)NYJavaSIG 11
    12. 12. Content Automation • Based on Commands/Operations • Build reusable business logic • Accessible from UI frameworks and HTTP/JSON • 120+ operations, extendable • Chainable: reduce RPC roundtripsNYJavaSIG 12
    13. 13. CMIS • OASIS Content Management Interoperability Services • HTTP APIs (SOAP, AtomPub, Browser Bindings) • Java APIs (OpenCMIS) • http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis- spec-v1.0.html • http://www.slideshare.net/efge/cmis-and-apache- chemistry-apachecon-2010NYJavaSIG 13
    14. 14. HTTP (CMIS) HTTP OpenCMIS Java OpenCMIS Automation API Native Java API Core Services VCS Binary Store SQL Backend Other Backend Filesystem SQL Database CloudNYJavaSIG 14
    15. 15. Batt le T este When to Use Apricot? d • Need to store Objects with Properties • And also Files • Don’t want to write SQL • But be able to fall back to SQL if really needed • Need Access Control • Need Versioning, Queries, ... • Don’t want to reinvent the wheelNYJavaSIG 15
    16. 16. Battle Tested? • Originates from Nuxeo Core • Used in all the Nuxeo Platform • (Document Management, Digital Asset Management, Case Management & other content-centric apps) • In production for 4 years • Thousands of deploymentsNYJavaSIG 16
    17. 17. Why Is Apricot Good? • Modular: OSGi & Extension Points • Fast: Caching, Optimized ACL with Stored Procs • Safe: Transactional + Hot backups • Scales: Leverage SQL clusters, Lockless pluggable binary store (FS, SQL, S3...)NYJavaSIG 17
    18. 18. Apricot and ModularityNYJavaSIG 18
    19. 19. Choosing a Modularity Framework • Java SE • No bundle life cycle, no modularity, no extension system • Java EE • All is packaged as one big application (EAR or WAR), cannot update or add a feature without recompiling the entire application • OSGi — yes, but...NYJavaSIG 19
    20. 20. Additions Needed to OSGi • To achieve a plugin model • Eclipse already had the answer: extension points • To provide enterprise features • No real OSGi Enterprise Framework implementations yetNYJavaSIG 20
    21. 21. Integrating with Java EE • Apricot should be able to run in an Application Server (as a WAR) • Java EE configuration is monolithic • To declare servlets (web.xml) one must know in advance the servlets provided by all the different bundles, same for application.xml • Apricot is dynamic: bundles may be installed at runtime • Java EE components declared by bundles must be installed at runtimeNYJavaSIG 21
    22. 22. Java EE Features • Full OSGi integration of JAAS (authentication system) • Full JTA support through Apache Geronimo (transactions) • Full JCA support through Apache Geronimo (resource adapters and pooling) • In-memory JNDI server • Future plans to integrate the work done in the Gemini project (and also support Virgo)NYJavaSIG 22
    23. 23. The Future of ApricotNYJavaSIG 23
    24. 24. Where Are We Going? • Finish Apricot first release • Cleanup, testing framework • Replace Nuxeo Core with Apricot • Nuxeo Core running under a full OSGi container • Bridge for non-OSGi application servers • Leverage Declarative ServicesNYJavaSIG 24
    25. 25. Developing Content- Centric Apps with NuxeoNYJavaSIG 25
    26. 26. What Is Nuxeo Studio? A Customization Environment as a Service, Studio manages for developers: • custom metadata,  • custom document types and templates,  • content lifecycle and workflows, • content views, • content automation, • application branding • and much more.NYJavaSIG 26
    27. 27. What Is Nuxeo IDE? An Eclipse-based Integrated Development Environment (IDE) for developers using the Nuxeo Platform / Apricot. • Hot Reload • Automated dependency management • Templates and Wizards  • Integration of Nuxeo Shell  • Automated dependency management • Deployment profiles • Code/Resource completion • Sync. with Nuxeo StudioNYJavaSIG 27
    28. 28. DemoNYJavaSIG 28
    29. 29. Thank You! • http://www.eclipse.org/apricot • http://github.com/nuxeo/org.eclipse.ecr • http://www.slideshare.net/efge/cmis-and-apache- chemistry-apachecon-2010 • http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis- spec-v1.0.html Contact:ogrisel@nuxeo.com https://twitter.com/ogriselNYJavaSIG 29
    30. 30. Additional Information & Links • http://www.eclipse.org/apricot • http://github.com/nuxeo/org.eclipse.ecr • http://www.slideshare.net/efge/cmis-and-apache- chemistry-apachecon-2010 • http://docs.oasis-open.org/cmis/CMIS/v1.0/cmis- spec-v1.0.htmlNYJavaSIG 30

    ×