jruby a pi and a database

62
JRuby, a Pi and a Database

Upload: philipp-fehre

Post on 04-Jul-2015

82 views

Category:

Technology


0 download

DESCRIPTION

JRuby is a great way to use native Java libraries and get around the project overhead of Java, but how do you actually use Java from JRuby? This talk explores building a JRuby application, backed by the portable Java version of Couchbase Mobile. While JRuby is build to interface with Java, when calling out to JVM land there are all those little hurdles to overcome. Handling Strings correctly, using native Collection types, and interfacing with libraries which expect those native types instead of the ones provided by JRuby, and last but not least Implementing native interfaces to pass around. Oh and by the way all of this runs on a little Raspberry Pi!

TRANSCRIPT

Page 1: Jruby a Pi and a database

JRuby,  a  Pi  and  a  Database  

Page 2: Jruby a Pi and a database

PHILIPP  FEHRE  

Twi3er:  @ischi    Github:  @sideshowcoder  Developer  Advocate,  Couchbase  

Page 3: Jruby a Pi and a database

It’s  just  ruby!  

Page 4: Jruby a Pi and a database
Page 5: Jruby a Pi and a database
Page 6: Jruby a Pi and a database
Page 7: Jruby a Pi and a database

NaEve  threads  

Page 8: Jruby a Pi and a database

99%  vs  125%  |  17  sec  vs  11  sec  Yes  jruby  startup  Eme  is  slow  …  

Page 9: Jruby a Pi and a database

And  more  

GC,  Java  Debugging  tools,  Java  Servers…  

Page 10: Jruby a Pi and a database

-­‐-­‐dev  tradeoff  performance  for  startup  @me  

Page 11: Jruby a Pi and a database

Lets  see  it  in  pracEce  

Page 12: Jruby a Pi and a database

Couchbase  Lite  

Page 13: Jruby a Pi and a database

Couchbase  Mobil  

Couchbase  Lite  +  Sync  Gateway  

Page 14: Jruby a Pi and a database

Couchbase  Mobil  Couchbase  Lite  +  Sync  Gateway  

Page 15: Jruby a Pi and a database

Channels  

Tags…  

Page 16: Jruby a Pi and a database

AuthenEcaEon  

Facebook,  Mozilla  Persona,  User  +  Password,  OAuth    

Page 17: Jruby a Pi and a database

Sync  FuncEon  

Page 18: Jruby a Pi and a database

Channels  

Page 19: Jruby a Pi and a database

AuthenEcaEon  

Page 20: Jruby a Pi and a database

Why  JRuby?  

Page 21: Jruby a Pi and a database
Page 22: Jruby a Pi and a database
Page 23: Jruby a Pi and a database

NEED  TO  CALL  TO  JAVA  Java  has  loads  of  libraries  (like  Couchbase  Lite)  which  are  only  on  Java  

Page 24: Jruby a Pi and a database

Pi  on  Couch  

Page 25: Jruby a Pi and a database
Page 26: Jruby a Pi and a database
Page 27: Jruby a Pi and a database

Using  JRuby  

Page 28: Jruby a Pi and a database

Loading  JARs  

Page 29: Jruby a Pi and a database

Loading  naEve  JARs  

Page 30: Jruby a Pi and a database

Just  for  reference…  ;)  

Page 31: Jruby a Pi and a database

Calling  Java  Methods  

Page 32: Jruby a Pi and a database

Calling  Java  Methods  

Page 33: Jruby a Pi and a database

CreaEng  Items  in  the  database  

Page 34: Jruby a Pi and a database

Some  Java  Idioms  

in  Ruby  

Page 35: Jruby a Pi and a database

Naming  

Page 36: Jruby a Pi and a database

Se3er  and  Ge3er  

Page 37: Jruby a Pi and a database

Se3er  and  Ge3er  

Page 38: Jruby a Pi and a database

Se3er  and  Ge3er  

Page 39: Jruby a Pi and a database

Method  names  

Page 40: Jruby a Pi and a database

Anonymous  Classes  

Page 41: Jruby a Pi and a database

Java  

Page 42: Jruby a Pi and a database

Ruby  way  number  1  

Page 43: Jruby a Pi and a database

Ruby  way  number  2  

Page 44: Jruby a Pi and a database

GENERICS  They  don’t  auto  convert  types  

Page 45: Jruby a Pi and a database
Page 46: Jruby a Pi and a database
Page 47: Jruby a Pi and a database
Page 48: Jruby a Pi and a database

Se[ng  up  sync  

Page 49: Jruby a Pi and a database
Page 50: Jruby a Pi and a database

Querying  Couchbase  Lite  

Page 51: Jruby a Pi and a database

Querying  Couchbase  Lite  

Page 52: Jruby a Pi and a database

Querying  Couchbase  Lite  

Page 53: Jruby a Pi and a database

Querying  Couchbase  Lite  

Page 54: Jruby a Pi and a database

LOOKING  UNDER  THE  HOOD  How  JRuby  is  implemented  

Page 55: Jruby a Pi and a database

HACKING  JRUBY  CreaEng  a  method  from  Scratch  

Page 56: Jruby a Pi and a database

git  clone  h3ps://github.com/jruby/jruby    

mvn  -­‐pBoostrap  

Page 57: Jruby a Pi and a database

Running  the  tests    

Page 58: Jruby a Pi and a database

1.to_froscon  #  =>  “froscon”  

Page 59: Jruby a Pi and a database

Adding  to  RubyFixnum  

Page 60: Jruby a Pi and a database

Couchbase  Server  3.0  Beta  Bug  Bash    Download,  Find,  Report,  Win  

•  DOWNLOAD  Couchbase  Server  3.0  Beta  

•  Run  some  workload,  play  with  it,  FIND  a  bug  

•  If  you  find  a  bug,  REPORT  it!    ­  All  bugs  count  –  anything  from  correctness,  to  performance,  to  

usability,  to  docs  

•  WIN  Prizes!!  

 h`p://www.couchbase.com/bugbash      Contest  ends  Aug  31st  2014  

Page 61: Jruby a Pi and a database

QuesEons?  

Page 62: Jruby a Pi and a database

Links  

•  h3p://github.com/couchbaselabs/pi-­‐on-­‐couch  •  h3p://www.couchbase.com/communiEes  •  h3p://jruby.org