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.
Build content centric apps with eclipse and nuxeo - ny java-sig november 2011
1. NYJavaSIG
Introducing Apricot
and Nuxeo IDE
Build Content-centric applications with
Eclipse and Nuxeo
Olivier Grisel, R&D Engineer, Nuxeo,
ogrisel@nuxeo.com https://twitter.com/ogrisel
2011-11-16
2. Agenda
• What Is a Content Repository?
• Eclipse Apricot: Features & Benefits
• Apricot Modularity
• The Future of Apricot
• Developing with Nuxeo/Apricot
• Demo
NYJavaSIG 2
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 Management
NYJavaSIG 4
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 objects
NYJavaSIG 5
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 Model
NYJavaSIG 6
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/apricot
NYJavaSIG 8
9. What Is Apricot?
• Content Repository
• Lightweight Web Framework
• Content Automation
• CMIS
NYJavaSIG 9
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. Content Automation
• Based on Commands/Operations
• Build reusable business logic
• Accessible from UI frameworks and HTTP/JSON
• 120+ operations, extendable
• Chainable: reduce RPC roundtrips
NYJavaSIG 12
14. HTTP (CMIS) HTTP
OpenCMIS Java
OpenCMIS Automation
API
Native Java API Core Services
VCS
Binary Store SQL Backend Other Backend
Filesystem SQL Database Cloud
NYJavaSIG 14
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 wheel
NYJavaSIG 15
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 deployments
NYJavaSIG 16
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
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. 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 yet
NYJavaSIG 20
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 runtime
NYJavaSIG 21
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
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. 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 Studio
NYJavaSIG 27
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