java script everywhere
DESCRIPTION
"JavaScript Everywhere: Backend to Web and to Mobile Apps" Slide site on WSO2ConTRANSCRIPT
![Page 1: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/1.jpg)
JavaScript Everywhere: Backend to Web and to Mobile Apps
Ruchira Wageesha & Madhuka Udantha
WSO2 Inc.
![Page 2: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/2.jpg)
Path
• Why JavaScript• We will mainly discuss about
JaggeryJS • Jaggery APIs• Start with a high level discussion • Then Hands On
![Page 3: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/3.jpg)
Reaching Out the Last Mile
• Users no longer accept average user experience
• Users Interfaces (UIs) covers the last mile
• Often decides the success and how much it will integrate with the user’s lives.
JavaScript
![Page 4: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/4.jpg)
Evolution of Web Applications
![Page 5: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/5.jpg)
Evolution of Web Applications
![Page 6: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/6.jpg)
Web Apps
•Mobiles
•Internet /networks
•Desktops/PC
•Portal Devices
•Tabs/Tablets
![Page 7: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/7.jpg)
Types of Web Application
• Client side (Static HTML)• Client driven, blocking (old Forms based submit )• Client driven, non blocking (AJAX)• Client and server driven, non-blocking (web sockets)
![Page 8: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/8.jpg)
User Interface
Usability
![Page 9: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/9.jpg)
Revolution of UI in Web Apps
• Javascript has become the defacto technology• Variuos Javascript libaries• Supported by all browsers• Thanks goe to
•Web 2.0•HTML5
• No longer simplistic applications• Widely used
![Page 10: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/10.jpg)
Javascript end to end?
![Page 11: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/11.jpg)
Javascript end to end? (Contd.)
● No complexities in data binding (UI to Business logic thanks to JSON)
● No serialization / de-serialization● Rich space with many common javascript libraries● Rapid application development● Resourcful● No compiling, making & building
![Page 12: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/12.jpg)
What my options
• NodeJS - o Based on Google V8 JS engineo Event driven, non-blocking processing
• Jaggery o Provided traditional development experience like in
PHP/JSP o De-facto framework for all WSO2 user facing applications
![Page 14: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/14.jpg)
Introduction to Jaggery
• Like JSP/ PHP, but user writes code completely in javascript (Data access / Business Logic / UI)
• Runs as a Web app (e.g. tomcat)• Runs on top of Java • Provides very close integration with WSO2 Products (e.g.
Users, Web service calls, access to the registry, access OSGI services etc. )
![Page 15: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/15.jpg)
First Look {jaggery.js}
Nothing complexIf (you are familiar with WSO2){server runtimes, it’s the same thing}
Else {extract the zip, run sh /bin/server.sh/.bat
}http://dist.wso2.org/snapshots/maven2/org/jaggeryjs/jaggery/0.9.0-SNAPSHOT/jaggery-0.9.0-20140321.143805-240.zip
![Page 16: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/16.jpg)
Hello Jaggery!!
• Most straight forward Sample• Open up a text editor• Create {JAGGERY_HOME}/apps/carshop/hello.jag
• Browser to :http://localhost:9763/carshop/hello.jag
![Page 17: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/17.jpg)
![Page 18: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/18.jpg)
Out Put
Syntax
![Page 19: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/19.jpg)
Data Storage
• Create a DB connection (DB config)• Perform CRUD operations• Results sent as json
![Page 20: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/20.jpg)
Using Databases and Registry
• <jaggery-home>\carbon\repository\components\lib• Drivers for DB• MetadataStore
collection Resource
![Page 21: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/21.jpg)
Process APIs
• Server details
![Page 22: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/22.jpg)
RESTful Service
URIMatcher
"urlMappings": [{ "url": "/sample/uri-mapping", "path": "/index.jag“ }]
![Page 23: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/23.jpg)
RESTful Service (application.serve())
![Page 24: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/24.jpg)
RESTful Service - router
https://github.com/splinter/jaggery-pipe
![Page 25: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/25.jpg)
Demo
• Use-case?
![Page 26: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/26.jpg)
Demo
![Page 27: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/27.jpg)
Demo
REST service call
![Page 28: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/28.jpg)
Calling out a SOAP Service
![Page 29: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/29.jpg)
Demo
SOAP service invoke
![Page 30: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/30.jpg)
HTML5 and WebSockets
![Page 31: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/31.jpg)
Demo
Web Socket
![Page 32: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/32.jpg)
Including 3rd party js libraries
• {{ mustache }}• Handlebars.js• base64 js
![Page 33: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/33.jpg)
Java and Jaggery
• Writing HostObject for Jaggery• Java Class accessing
http://madhukaudantha.blogspot.com/2014/02/writing-hostobject-for-jaggery.html
![Page 34: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/34.jpg)
Configuration
![Page 35: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/35.jpg)
Configuration (Cont.)
![Page 36: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/36.jpg)
Visualization
![Page 37: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/37.jpg)
WSO2 and Jaggery
![Page 38: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/38.jpg)
WSO2 and Jaggery
![Page 39: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/39.jpg)
Develop RESTful Service & Routering
• URL MappingUsing inbuilt jaggery.conf
• Front End Controller ConceptApplication.serve()var pipe=require('pipe');var router=require('router');pipe.plug(router);
![Page 41: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/41.jpg)
If not test?
https://github.com/Madhuka/jaggery-test-framewrok
![Page 42: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/42.jpg)
Some utilities• Carbon module• File API• Email API• Feed API• oauth• uuid
https://github.com/wso2/jaggery-extensions
![Page 43: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/43.jpg)
Summary
• Why js• Jaggery.js• Jaggery API• Router• Jaggery-test• Finally….
![Page 44: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/44.jpg)
References
• jaggeryjs.org• wso2.com• https://github.com/wso2/caramel• https://github.com/splinter/jaggery-pipe• https://github.com/Madhuka/jaggery-test-framewrok• http://ruchirawageesha.blogspot.com/• http://madhukaudantha.blogspot.com/
![Page 45: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/45.jpg)
QA
![Page 46: Java script everywhere](https://reader038.vdocuments.mx/reader038/viewer/2022103110/54b6c70a4a7959e5268b473b/html5/thumbnails/46.jpg)
Thank you