3. Nuxeo Platform vs JavaScript
Nuxeo is not really a JavaScript Shop
●
we used to be a Python Shop
●
we are now 100% Java Platform
●
●
Strong typing
●
●
OSGi deployment and plugin model
Contribute and extend with Java Classes
Server side MVC model
●
Seam (pre-CDI) / JSF
3
4. Nuxeo Platform vs JavaScript
●
However this is changing, because
●
You (probably) want to write JavaScript
–
Coding in Sublime Text is so much cooler than in Eclipse
●
●
●
Html5 and Browser are actually a nice UI Platform
–
●
Light dev environment
Quick coding/deploy/test cycles
Back to the Client/Server days !
Some Html5 / JavaScript MVC frameworks rocks
–
–
AngularJS is a good example
A lot of nice Html5/JS Widgets
4
5. Nuxeo Platform vs JavaScript
●
Bonus
●
JavaScript makes coding easy ?!
–
–
●
People are scared to write Java code
(they should not)
People are not scared to write JavaScript code
(sometimes, they should, at least for the maintenance)
Use JavaScript without writing actual JavaScript
–
–
CoffeeScript
Dart
5
6. Adapting Nuxeo Platform to JS
●
Make room for JavaScript widgets
●
●
Extend JSF framework with simple JS Widgets
Expose JavaScript API
●
●
●
REST API/Client lib
Allow JS developers to leverage Nuxeo Services
Build client SDK for Html5/JS framework
●
AngularJS, Dart/Polymer…
●
Use Nuxeo Platform as a PaaS
6
7. Nuxeo Widgets and JavaScript
●
JSF/Facelet has a nice MVC Model
●
●
We added an abstract Widget Model
●
●
●
Actually pretty close to what AngularJS proposes
But most people have a hard time building custom widgets
(remember Java is scary !)
But most people are happy to add custom JavaScript widgets
We built an hybrid model
●
JSF handles server side validation and state management
●
JS handles client side display and Ajax refresh
●
We use REST API to interact with the server
7
9. Nuxeo Platform API
●
Nuxeo Platform exposes 2 sets of http API
●
Resource API
–
●
Command (RPC) API
–
●
●
CRUD on Document, Tasks, Workflows, Users ...
Execute command on an object
JSON-RPC Marshaling
nuxeo.js
●
Wrap Nuxeo http API in a JavaScript client
●
Associated with
–
JavaScript shell
–
Node.js shell
–
Unit tests
9
11. Buidling JS Apps with Nuxeo Platform
●
Nuxeo.io
●
Hosting the content repository
–
●
Hosting the Back Office : Nuxeo CAP
–
●
Provide configurable management UI
Hosting the configuration IDE : Nuxeo Studio
–
●
Provide Storage, Services and API
Define business model, workflows, custom API
Hosting JavaScript IDE
–
Build client side using Nuxeo AngularJS SDK
11