SlideShare a Scribd company logo
1 of 16
RingoJS
FinJUG talk by
Oleg Podsechin
15.01.2013
Overview
 started by Hannes Wallnöfer
 successor to Helma, HelmaNG
  o been in development for 13+ years
 runs on the JVM
 uses Mozilla Rhino
 conforms to CommonJS
CommonJS
 Modules/1.0, Modules/1.1
 JSGI
 Binary
 Filesystem
 System
 Unit Testing
Features

    hot reloading of modules
    profiler
    debugger
    sandboxing
    runs anywhere Java runs
        within a webapp container
        standalone process
Install & Run
git clone git://github.com/ringo/ringojs.git
ant update jar
bin/ringo
Hello World
>> 'Hello World'
Hello World
Hello World, Take Two
new require('ringo/httpserver').Server({
    app: function() {
    return {status: 200,
              headers: {},
              body: ['Hello World']}; }
  }).start();
Multithreaded JS
// run "test" in "threads" parallel threads a total of "count" times
function parallel(test, count, threads) {  var pool = new 
    
   java.util.concurrent.Executors.newFixedThreadPool(threads);  functio
   n runnable(f) {  
     return new java.lang.Runnable({ run: function() {    
     try { f(); } catch(e) { }  
     }});  }  for(var i = 0; i < count; i ++)    
   pool.execute(runnable(test));}
RingoJS libraries
 search GitHub for ringo-

ringo-admin install 
  user/repo

 use rp and packages.ringojs.org
rp install name
Examples of RingoJS libraries

 stick
 ringo-modulr
 ringo-storable
   ringo-filestore, ringo-hibernate
 ringo-mongodb
 ringo-mail
Stick Example
var {Application} = require("stick");    

 var app = Application();    

 app.configure("error", "notfound", 
 "route");
 var response = 
 require('ringo/jsgi/response');    

 app.get("/", function(req) {
    return response.html("Hello");
 });   
Community
 #ringojs on Freenode IRC
 #ringojs & @ringojs on Twitter
 http://github.com/ringo
Use Cases & Benefits
 standalone
 to extend an existing Java webapp
 plugin architecture for existing application
 code reuse between server and browser

 less context switching
 more compact code, faster prototyping
Extras
 Common Node
 Nashorn
 Node.jar
 Vert.x
@olegpodsechin
github.com/olegp

More Related Content

What's hot

20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2 20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2 TSE-JU LIN(Louis)
 
DrupalCafe Vol.35 - Dockerで始めるDrupal
DrupalCafe Vol.35 - Dockerで始めるDrupalDrupalCafe Vol.35 - Dockerで始めるDrupal
DrupalCafe Vol.35 - Dockerで始めるDrupalYoshikazu Aoyama
 
Deploying Rails applications with Moonshine
Deploying Rails applications with MoonshineDeploying Rails applications with Moonshine
Deploying Rails applications with MoonshineRobot Mode
 
Container sig#1 ansible-container
Container sig#1 ansible-containerContainer sig#1 ansible-container
Container sig#1 ansible-containerNaoya Hashimoto
 
[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginxNicolas Embleton
 
Newgenlib Installation on Ubuntu 12.04
Newgenlib Installation on Ubuntu 12.04Newgenlib Installation on Ubuntu 12.04
Newgenlib Installation on Ubuntu 12.04Rajendra Singh
 
2013 PyCon SG - Building your cloud infrastructure with Python
2013 PyCon SG - Building your cloud infrastructure with Python2013 PyCon SG - Building your cloud infrastructure with Python
2013 PyCon SG - Building your cloud infrastructure with PythonGeorge Goh
 
Demystifying Container Escapes
Demystifying Container EscapesDemystifying Container Escapes
Demystifying Container EscapesVaibhav Gupta
 
Austin - Container Days - Docker 101
Austin - Container Days - Docker 101Austin - Container Days - Docker 101
Austin - Container Days - Docker 101Bill Maxwell
 
Reusing your existing software on Android
Reusing your existing software on AndroidReusing your existing software on Android
Reusing your existing software on AndroidTetsuyuki Kobayashi
 
Very Early Review - Rocket(CoreOS)
Very Early Review - Rocket(CoreOS)Very Early Review - Rocket(CoreOS)
Very Early Review - Rocket(CoreOS)충섭 김
 
Docker e postgresql
Docker e postgresqlDocker e postgresql
Docker e postgresqlFernando Ike
 
CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지충섭 김
 
Sfd hanoi2012 nguyen nang thang sfd-2012_chroot_apache
Sfd hanoi2012 nguyen nang thang   sfd-2012_chroot_apacheSfd hanoi2012 nguyen nang thang   sfd-2012_chroot_apache
Sfd hanoi2012 nguyen nang thang sfd-2012_chroot_apacheVu Hung Nguyen
 

What's hot (20)

Nodejs Intro Part One
Nodejs Intro Part OneNodejs Intro Part One
Nodejs Intro Part One
 
20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2 20160929 android taipei Sonatype nexus on amazon ec2
20160929 android taipei Sonatype nexus on amazon ec2
 
DrupalCafe Vol.35 - Dockerで始めるDrupal
DrupalCafe Vol.35 - Dockerで始めるDrupalDrupalCafe Vol.35 - Dockerで始めるDrupal
DrupalCafe Vol.35 - Dockerで始めるDrupal
 
Git
GitGit
Git
 
Deploying Rails applications with Moonshine
Deploying Rails applications with MoonshineDeploying Rails applications with Moonshine
Deploying Rails applications with Moonshine
 
Deep dive-oz
Deep dive-ozDeep dive-oz
Deep dive-oz
 
Container sig#1 ansible-container
Container sig#1 ansible-containerContainer sig#1 ansible-container
Container sig#1 ansible-container
 
Introduction to Sumatra
Introduction to SumatraIntroduction to Sumatra
Introduction to Sumatra
 
[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx[Js hcm] Deploying node.js with Forever.js and nginx
[Js hcm] Deploying node.js with Forever.js and nginx
 
Newgenlib Installation on Ubuntu 12.04
Newgenlib Installation on Ubuntu 12.04Newgenlib Installation on Ubuntu 12.04
Newgenlib Installation on Ubuntu 12.04
 
2013 PyCon SG - Building your cloud infrastructure with Python
2013 PyCon SG - Building your cloud infrastructure with Python2013 PyCon SG - Building your cloud infrastructure with Python
2013 PyCon SG - Building your cloud infrastructure with Python
 
Demystifying Container Escapes
Demystifying Container EscapesDemystifying Container Escapes
Demystifying Container Escapes
 
Macruby intro
Macruby introMacruby intro
Macruby intro
 
Austin - Container Days - Docker 101
Austin - Container Days - Docker 101Austin - Container Days - Docker 101
Austin - Container Days - Docker 101
 
Reusing your existing software on Android
Reusing your existing software on AndroidReusing your existing software on Android
Reusing your existing software on Android
 
Very Early Review - Rocket(CoreOS)
Very Early Review - Rocket(CoreOS)Very Early Review - Rocket(CoreOS)
Very Early Review - Rocket(CoreOS)
 
Docker e postgresql
Docker e postgresqlDocker e postgresql
Docker e postgresql
 
CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지
 
Os geo live in virtual box
Os geo live in virtual boxOs geo live in virtual box
Os geo live in virtual box
 
Sfd hanoi2012 nguyen nang thang sfd-2012_chroot_apache
Sfd hanoi2012 nguyen nang thang   sfd-2012_chroot_apacheSfd hanoi2012 nguyen nang thang   sfd-2012_chroot_apache
Sfd hanoi2012 nguyen nang thang sfd-2012_chroot_apache
 

Similar to RingoJS

An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersKostas Saidis
 
Introduction to Vert.x
Introduction to Vert.xIntroduction to Vert.x
Introduction to Vert.xYiguang Hu
 
Groovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web ApplicationsGroovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web Applicationsrohitnayak
 
Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01Tino Isnich
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...Jesse Gallagher
 
Node Web Development 2nd Edition: Chapter1 About Node
Node Web Development 2nd Edition: Chapter1 About NodeNode Web Development 2nd Edition: Chapter1 About Node
Node Web Development 2nd Edition: Chapter1 About NodeRick Chang
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevFelix Geisendörfer
 
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ..."Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...Vadym Kazulkin
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Arun Gupta
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang YoonJesang Yoon
 
Helma / RingoJS – Vienna.js Minitalk
Helma / RingoJS – Vienna.js MinitalkHelma / RingoJS – Vienna.js Minitalk
Helma / RingoJS – Vienna.js MinitalkPhilipp Naderer
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010JUG Lausanne
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedInYevgeniy Brikman
 
The Play Framework at LinkedIn: productivity and performance at scale - Jim B...
The Play Framework at LinkedIn: productivity and performance at scale - Jim B...The Play Framework at LinkedIn: productivity and performance at scale - Jim B...
The Play Framework at LinkedIn: productivity and performance at scale - Jim B...jaxconf
 
Take control. write a plugin. part II
Take control. write a plugin. part IITake control. write a plugin. part II
Take control. write a plugin. part IIBaruch Sadogursky
 

Similar to RingoJS (20)

An Introduction to Gradle for Java Developers
An Introduction to Gradle for Java DevelopersAn Introduction to Gradle for Java Developers
An Introduction to Gradle for Java Developers
 
5.node js
5.node js5.node js
5.node js
 
Introduction to Vert.x
Introduction to Vert.xIntroduction to Vert.x
Introduction to Vert.x
 
Groovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web ApplicationsGroovy & Grails: Scripting for Modern Web Applications
Groovy & Grails: Scripting for Modern Web Applications
 
Gradle Introduction
Gradle IntroductionGradle Introduction
Gradle Introduction
 
Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01Gradleintroduction 111010130329-phpapp01
Gradleintroduction 111010130329-phpapp01
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
 
Node Web Development 2nd Edition: Chapter1 About Node
Node Web Development 2nd Edition: Chapter1 About NodeNode Web Development 2nd Edition: Chapter1 About Node
Node Web Development 2nd Edition: Chapter1 About Node
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredev
 
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ..."Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
"Highlights from Java 10&11 and Future of Java" at Java User Group Bonn 2018 ...
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
 
node.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoonnode.js 실무 - node js in practice by Jesang Yoon
node.js 실무 - node js in practice by Jesang Yoon
 
Griffon Presentation
Griffon PresentationGriffon Presentation
Griffon Presentation
 
Helma / RingoJS – Vienna.js Minitalk
Helma / RingoJS – Vienna.js MinitalkHelma / RingoJS – Vienna.js Minitalk
Helma / RingoJS – Vienna.js Minitalk
 
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
 
Docker meetup
Docker meetupDocker meetup
Docker meetup
 
What's New in Groovy 1.6?
What's New in Groovy 1.6?What's New in Groovy 1.6?
What's New in Groovy 1.6?
 
The Play Framework at LinkedIn
The Play Framework at LinkedInThe Play Framework at LinkedIn
The Play Framework at LinkedIn
 
The Play Framework at LinkedIn: productivity and performance at scale - Jim B...
The Play Framework at LinkedIn: productivity and performance at scale - Jim B...The Play Framework at LinkedIn: productivity and performance at scale - Jim B...
The Play Framework at LinkedIn: productivity and performance at scale - Jim B...
 
Take control. write a plugin. part II
Take control. write a plugin. part IITake control. write a plugin. part II
Take control. write a plugin. part II
 

More from Oleg Podsechin

Why SaaS (in Helsinki)?
Why SaaS (in Helsinki)?Why SaaS (in Helsinki)?
Why SaaS (in Helsinki)?Oleg Podsechin
 
Staying safe in the cloud
Staying safe in the cloudStaying safe in the cloud
Staying safe in the cloudOleg Podsechin
 
Tips from angular js users anonymous
Tips from angular js users anonymousTips from angular js users anonymous
Tips from angular js users anonymousOleg Podsechin
 
AngularJS - the folly of choice
AngularJS - the folly of choiceAngularJS - the folly of choice
AngularJS - the folly of choiceOleg Podsechin
 
What every developer can learn from startups
What every developer can learn from startupsWhat every developer can learn from startups
What every developer can learn from startupsOleg Podsechin
 
Server side JavaScript: going all the way
Server side JavaScript: going all the wayServer side JavaScript: going all the way
Server side JavaScript: going all the wayOleg Podsechin
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScriptOleg Podsechin
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScriptOleg Podsechin
 
Grid and Cloud Computing Intro
Grid and Cloud Computing IntroGrid and Cloud Computing Intro
Grid and Cloud Computing IntroOleg Podsechin
 

More from Oleg Podsechin (14)

Why SaaS (in Helsinki)?
Why SaaS (in Helsinki)?Why SaaS (in Helsinki)?
Why SaaS (in Helsinki)?
 
Staying safe in the cloud
Staying safe in the cloudStaying safe in the cloud
Staying safe in the cloud
 
Tips from angular js users anonymous
Tips from angular js users anonymousTips from angular js users anonymous
Tips from angular js users anonymous
 
AngularJS - the folly of choice
AngularJS - the folly of choiceAngularJS - the folly of choice
AngularJS - the folly of choice
 
Lean and mean MongoDB
Lean and mean MongoDBLean and mean MongoDB
Lean and mean MongoDB
 
JS everywhere 2011
JS everywhere 2011JS everywhere 2011
JS everywhere 2011
 
What every developer can learn from startups
What every developer can learn from startupsWhat every developer can learn from startups
What every developer can learn from startups
 
Server side JavaScript: going all the way
Server side JavaScript: going all the wayServer side JavaScript: going all the way
Server side JavaScript: going all the way
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScript
 
On Platforms
On PlatformsOn Platforms
On Platforms
 
Common Node
Common NodeCommon Node
Common Node
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
 
RingoJS
RingoJSRingoJS
RingoJS
 
Grid and Cloud Computing Intro
Grid and Cloud Computing IntroGrid and Cloud Computing Intro
Grid and Cloud Computing Intro
 

RingoJS

  • 1. RingoJS FinJUG talk by Oleg Podsechin 15.01.2013
  • 2.
  • 3. Overview  started by Hannes Wallnöfer  successor to Helma, HelmaNG o been in development for 13+ years  runs on the JVM  uses Mozilla Rhino  conforms to CommonJS
  • 4. CommonJS  Modules/1.0, Modules/1.1  JSGI  Binary  Filesystem  System  Unit Testing
  • 5. Features  hot reloading of modules  profiler  debugger  sandboxing  runs anywhere Java runs  within a webapp container  standalone process
  • 6. Install & Run git clone git://github.com/ringo/ringojs.git ant update jar bin/ringo
  • 7. Hello World >> 'Hello World' Hello World
  • 8. Hello World, Take Two new require('ringo/httpserver').Server({ app: function() { return {status: 200, headers: {}, body: ['Hello World']}; } }).start();
  • 9. Multithreaded JS // run "test" in "threads" parallel threads a total of "count" times function parallel(test, count, threads) {  var pool = new       java.util.concurrent.Executors.newFixedThreadPool(threads);  functio n runnable(f) {     return new java.lang.Runnable({ run: function() {       try { f(); } catch(e) { }     }});  }  for(var i = 0; i < count; i ++)     pool.execute(runnable(test));}
  • 10. RingoJS libraries  search GitHub for ringo- ringo-admin install  user/repo  use rp and packages.ringojs.org rp install name
  • 11. Examples of RingoJS libraries  stick  ringo-modulr  ringo-storable  ringo-filestore, ringo-hibernate  ringo-mongodb  ringo-mail
  • 12. Stick Example var {Application} = require("stick");     var app = Application();     app.configure("error", "notfound",  "route"); var response =  require('ringo/jsgi/response');     app.get("/", function(req) {    return response.html("Hello"); });   
  • 13. Community  #ringojs on Freenode IRC  #ringojs & @ringojs on Twitter  http://github.com/ringo
  • 14. Use Cases & Benefits  standalone  to extend an existing Java webapp  plugin architecture for existing application  code reuse between server and browser  less context switching  more compact code, faster prototyping
  • 15. Extras  Common Node  Nashorn  Node.jar  Vert.x