Java script everywhere

46
JavaScript Everywhere: Backend to Web and to Mobile Apps Ruchira Wageesha & Madhuka Udantha WSO2 Inc.

description

"JavaScript Everywhere: Backend to Web and to Mobile Apps" Slide site on WSO2Con

Transcript of Java script everywhere

Page 1: Java script everywhere

JavaScript Everywhere: Backend to Web and to Mobile Apps

Ruchira Wageesha & Madhuka Udantha

WSO2 Inc.

Page 2: Java script everywhere

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

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

Evolution of Web Applications

Page 5: Java script everywhere

Evolution of Web Applications

Page 6: Java script everywhere

Web Apps

•Mobiles

•Internet /networks

•Desktops/PC

•Portal Devices

•Tabs/Tablets

Page 7: Java script everywhere

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

User Interface

Usability

Page 9: Java script everywhere

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

Javascript end to end?

Page 11: Java script everywhere

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

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 13: Java script everywhere

https://github.com/wso2/jaggery

Page 14: Java script everywhere

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

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

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
Page 18: Java script everywhere

Out Put

Syntax

Page 19: Java script everywhere

Data Storage

• Create a DB connection (DB config)• Perform CRUD operations• Results sent as json

Page 20: Java script everywhere

Using Databases and Registry

• <jaggery-home>\carbon\repository\components\lib• Drivers for DB• MetadataStore

collection Resource

Page 21: Java script everywhere

Process APIs

• Server details

Page 22: Java script everywhere

RESTful Service

URIMatcher

"urlMappings": [{ "url": "/sample/uri-mapping", "path": "/index.jag“ }]

Page 23: Java script everywhere

RESTful Service (application.serve())

Page 24: Java script everywhere

RESTful Service - router

https://github.com/splinter/jaggery-pipe

Page 25: Java script everywhere

Demo

• Use-case?

Page 26: Java script everywhere

Demo

Page 27: Java script everywhere

Demo

REST service call

Page 28: Java script everywhere

Calling out a SOAP Service

Page 29: Java script everywhere

Demo

SOAP service invoke

Page 30: Java script everywhere

HTML5 and WebSockets

Page 31: Java script everywhere

Demo

Web Socket

Page 32: Java script everywhere

Including 3rd party js libraries

• {{ mustache }}• Handlebars.js• base64 js

Page 33: Java script everywhere

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

Configuration

Page 35: Java script everywhere

Configuration (Cont.)

Page 36: Java script everywhere

Visualization

Page 37: Java script everywhere

WSO2 and Jaggery

Page 38: Java script everywhere

WSO2 and Jaggery

Page 39: Java script everywhere

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 40: Java script everywhere

Presentation

https://github.com/wso2/caramel

Page 41: Java script everywhere

If not test?

https://github.com/Madhuka/jaggery-test-framewrok

Page 42: Java script everywhere

Some utilities• Carbon module• File API• Email API• Feed API• oauth• uuid

https://github.com/wso2/jaggery-extensions

Page 43: Java script everywhere

Summary

• Why js• Jaggery.js• Jaggery API• Router• Jaggery-test• Finally….

Page 44: Java script everywhere

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

QA

Page 46: Java script everywhere

Thank you