Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introducing Liferay Standalone Applications
Search
Eduardo Lundgren
November 06, 2014
560
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introducing Liferay Standalone Applications
Eduardo Lundgren
November 06, 2014
More Decks by Eduardo Lundgren
See All by Eduardo Lundgren
WeDeploy
eduardolundgren
0
86
Single Page Applications in Liferay
eduardolundgren
5
2.6k
Single Page Applications done right
eduardolundgren
10
810
tracking.js with Maira Bello
eduardolundgren
0
140
Single Page Application
eduardolundgren
0
450
Getting Started with YUI3 and AlloyUI
eduardolundgren
0
110
Getting started with AlloyUI
eduardolundgren
0
120
Augmented Reality.js
eduardolundgren
0
180
Liferay UI revolution
eduardolundgren
0
210
Featured
See All Featured
Mind Mapping
helmedeiros
1
360
Large-scale JavaScript Application Architecture
addyosmani
515
110k
エンジニアに許された特別な時間の終わり
watany
109
250k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
320
Building Adaptive Systems
keathley
44
3.2k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.7k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Visualization
eitanlees
152
17k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.5k
Transcript
Standalone Applications in Liferay @eduardolundgren
“Liferay isn't sexy...”
None
One of the most efficient animal in the kingdom
None
None
They have 360-degree view
360-degree view
They are immortal
None
None
The most deadly creature on earth
None
None
None
None
None
What is the secret behind the jellyfish ? ? ?
? ? ? ? ? ? ? ? ?
None
“Teams with a better distribution of skills, not segmented by
roles, produce better results” Jared Spool User Interface Engineering
None
@rotty3000 (he also loves cars)
Standalone app is our Jellyfish
2013
None
None
None
None
None
None
!
None
Datastore
Datastore " Liferay A B Schemaless NoSQL Robust Scalable
A B " Datastore Liferay
Datastore ( your code goes here ) A B Deploy
Liferay
Datastore ( your code goes here ) A B Deploy
Liferay
Datastore API Clients A B Cross domain requests Promises Error
handling Batch Real time Liferay HTTP JavaScript Java ObjectiveC
Datastore RESTful Web Services API Clients A B Restful Liferay
HTTP JavaScript Java ObjectiveC
<script src="//apis.liferay.com/client.js" /> 8KB
lfr.request('http://api.example.com/v1/users') .then(function(response) { // success }) .catch(function(reason) { // failure
});
Your clients can talk directly to the back end services
without needing to go through your server side code
Autogenerated RESTful apis
The secret to machines talking to machines is to speak
human first
None
None
Users
Users https://api.example.com/v1/users Version Entity
Users /v1/users/ec557f-b045-0bad-5130-1347
Users /v1/users/559743231794
App id = 1, 2, 3... Normal DB
App id = 7 Sharded id = 46 id =
wat? DB DB DB
App id = 7 Sharded id = 46 id =
wat? DB 1) Random 2) Ordered 3) Unique 4) Distributed 5) Human Readable DB DB
64 bits IDs 0000000000000000000000000000000000000000000 0 00000000000000000000 |------------------------------------------| |---| |------------------| timestamp
sequence random bits safety bit bits Liferay's Simpleflake IDs /v1/users/559743231794
64 bits IDs 0000000000000000000000000000000000000000000 0 00000000000000000000 |------------------------------------------| |---| |------------------| timestamp
sequence random bits safety bit bits Chances of collision Liferay's Simpleflake IDs
Places for data: method and url, headers and body
POST https://api.example.com/v1/users PUT https://api.example.com/v1/users ! { "about": "Start simple. Dream
big. Do good. Be well.", "city": "Recife", "country": "BR" } ! HTTP 1.1/201 Created HTTP 1.1/202 Accepted (pending) Create
PUT https://api.example.com/v1/users/1 PATCH https://api.example.com/v1/users/1 ! { "about": "Updated", "city": "Recife",
"country": "BR" } ! HTTP 1.1/200 OK HTTP 1.1/202 Accepted (pending) Update
DELETE https://api.example.com/v1/users/1 ! HTTP 1.1/204 No content Delete
GET https://api.example.com/v1/users ! HTTP/1.1 200 OK Content-Type: application/json ! {
"users": [ { "about": "Start simple. Dream big. Do good. Be well.", "city": "Recife", "country": "BR" } ]} GET
GET https://api.example.com/v1/users.json ! HTTP/1.1 200 OK Content-Type: application/json ! {
"users": [ { "about": "Start simple. Dream big. Do good. Be well.", "city": "Recife", "country": "BR" } ]} GET JSON output
GET https://api.example.com/v1/users.xml ! HTTP/1.1 200 OK Content-Type: text/xml ! <?xml
version="1.0" encoding="UTF-8" ?> <users> <about>Start simple. Dream big. Do good. Be well.</aboutMe> <city>Recife</city> <country>BR</country> </users> GET XML output
POST https://api.example.com/v1/users/1/publish POST https://api.example.com/v1/users/1/star ! HTTP 1.1/200 OK HTTP 1.1/202
Accepted (pending) ! Custom verbs
Real-time
RESTful Web Services API Clients Restful HTTP JavaScript Java ObjectiveC
None
lfr.subscribe('http://api.example.com/v1/users') .on('data', function(response) { // data has arrived... });
Push notifications for all your services for free
Routing !
http://example.com/special/women
http://example.com/special/men
routes.txt
None
Automated tools
None
None
None
None
Management
Quota, Billing, Security policies, Reports, available at one click
Architecture
Database Service Builder Portlet Portlet Portlet JSON Web Services
RESTful Web Services Real-time Datastore MongoDB Elasticsearch RID Generator Auth
Permissions
Service Builder RESTful Web Services JSON Web Services Database Real-time
Datastore MongoDB Elasticsearch RID Generator Auth Permissions Portlet Portlet Portlet
None
Concrete Abstract "
" Concrete Abstract
Concrete Abstract "
None
" Concrete Abstract
DATASTORE RESTFUL REAL TIME ROUTING MANAGEMENT AUTHENTICATION TOOLS
We wanna be more than sexy.
Thank you! @eduardolundgren