SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




Polyglot	
  Programming	
  he	
  JVM	
  he	
  JVM	
  
Or	
  how	
  I	
  learned	
  to	
  stop	
  worrying	
  and	
  love	
  t
                                                                        in	
  t
About	
  t edit	
  Master	
  
Click	
  to	
  he	
  Speaker	
   /tle	
  style	
  


•    Java	
  developer	
  since	
  the	
  beginning	
  
•    True	
  believer	
  in	
  Open	
  Source	
  
•    Groovy	
  commiBer	
  since	
  2007	
  
•    Project	
  lead	
  of	
  the	
  Griffon	
  framework	
  
•    Currently	
  working	
  for	
  	
  
I	
  confess…	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  


<j:jelly	
  xmlns:j="jelly:core"	
  	
  
    	
  	
  	
  	
  	
  	
  	
  	
  xmlns:define="jelly:define"	
  	
  
    	
  	
  	
  	
  	
  	
  	
  	
  xmlns:my="myTagLib">	
  	
  
    <define:taglib	
  uri="myTagLib">	
  	
  
    	
  	
  	
  	
  <define:jellybean	
  name="foo"	
  className="MyTask"/>	
  	
  
    </define:taglib>	
  	
  
    Now	
  lets	
  use	
  the	
  new	
  tag	
  	
  
    <my:foo	
  x="2"	
  y="cheese"/>	
  	
  
</j:jelly>	
  
Some	
  o	
  edit	
  Master	
  /tle	
  style	
  
Click	
  t facts	
  about	
  Java	
  

     Previous	
  name	
  was	
  Oak	
  	
  
       –  Bonus	
  points	
  for	
  knowing	
  its	
  real	
  name	
  before	
  that	
  


     Made	
  its	
  public	
  appearance	
  in	
  1995	
  
     C/C++	
  were	
  king	
  at	
  the	
  /me	
  
     Networking,	
  mul/threading	
  were	
  baked	
  right	
  into	
  the	
  
      language	
  
     Developers	
  came	
  for	
  the	
  applets	
  and	
  stayed	
  for	
  the	
  
      components	
  (JEE	
  and	
  all	
  that	
  jazz)	
  
However...	
   Master	
  /tle	
  style	
  
Click	
  to	
  edit	
  

    It‘s	
  already	
  in	
  its	
  teens	
  

    It	
  has	
  not	
  seen	
  a	
  major	
  feature	
  upgrade	
  since	
  JDK5	
  was	
  
     released	
  back	
  in	
  2004	
  -­‐>	
  generics	
  	
  
      (and	
  we	
  do	
  know	
  how	
  that	
  turned	
  out	
  to	
  be,	
  don’t	
  we?)	
  

    JDK7	
  was	
  been	
  delayed	
  again	
  (scheduled	
  for	
  Q3	
  2011)	
  
                       Some	
  features	
  will	
  not	
  make	
  the	
  cut	
  	
  
                              (closures	
  are	
  in	
  apparently)	
  
More	
  o	
  edit	
  Master	
  /tle	
  style	
  
Click	
  tso...	
  

     It	
  is	
  rather	
  verbose	
  when	
  compared	
  to	
  how	
  other	
  languages	
  
      do	
  the	
  same	
  task	
  

     Its	
  threading	
  features	
  are	
  no	
  longer	
  enough.	
  	
  
            Concurrent	
  programs	
  desperately	
  cry	
  for	
  immutability	
  these	
  days	
  
Truth	
   o	
  edit	
  Master	
  /tle	
  style	
  
Click	
  tor	
  myth?	
  




       Is	
  Java	
  ofenly	
  referred	
  as	
  overengineered?	
  
Truth	
   o	
  edit	
  Master	
  /tle	
  style	
  
Click	
  tor	
  myth?	
  




       Can	
  you	
  build	
  a	
  Java	
  based	
  web	
  applica/on	
  
       (for	
  argument	
  sake	
  a	
  basic	
  TwiBer	
  clone)	
  in	
  
         less	
  than	
  a	
  day‘s	
  work	
  WITHOUT	
  an	
  IDE?	
  
Truth	
   o	
  edit	
  Master	
  /tle	
  style	
  
Click	
  tor	
  myth?	
  




           Did	
  James	
  Gosling	
  ever	
  say	
  he	
  was	
  
    threatened	
  with	
  bodily	
  harm	
  should	
  operator	
  
          overloading	
  find	
  its	
  way	
  into	
  Java?	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




 	
  The	
  JVM	
  is	
  a	
  great	
  place	
  to	
  
      work	
  however	
  Java	
  makes	
  
      it	
  painful	
  some/mes...	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




    What	
  can	
  we	
  do	
  about	
  it?!	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




                                    Disclaimer	
  
               (this	
  is	
  not	
  a	
  bash-­‐the-­‐other-­‐languages	
  talk)	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




Reduced	
  Verbosity	
  
Standard	
  Beans	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  

public class Bean {
  private String name;

    public String getName() {
      return name;
    }

    public void setName(String name) {
      this.name = name;
    }
}
Standard	
  Beans	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  

public class Bean {
  private String name;

    public String getName() {
      return name;
    }

    public void setName(String name) {
      this.name = name;
    }
}
Standard	
  Beans	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  

public class Bean {
  private String name;

    public String getName() {
      return name;
    }

    public void setName(String name) {
      this.name = name;
    }
}
Standard	
  Beans	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




class Bean {
  String name
}
Standard	
  Beans	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




class Bean(var name:String)



class Bean {
  @scala.reflect.BeanProperty
    var name: String
}
Standard	
  Beans	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




(defstruct Bean :name)
Closures	
  dit	
   Func/ons)	
  
Click	
  to	
  e(or	
  Master	
  /tle	
  style	
  

public interface Adder {
    int add(int a, int b);
}

public class MyAdder implements Adder {
    public int add(int a, int b) {
      return a + b;
    }
}
Closures	
  dit	
   Func/ons)	
  
Click	
  to	
  e(or	
  Master	
  /tle	
  style	
  

// JDK7 Lambdas proposal

#(int a, int b)(a + b)

#(int a, int b) { return a + b; }
Closures	
  dit	
   Func/ons)	
  
Click	
  to	
  e(or	
  Master	
  /tle	
  style	
  




def adder = { a , b -> a + b }
Closures	
  dit	
   Func/ons)	
  
Click	
  to	
  e(or	
  Master	
  /tle	
  style	
  




val adder = (a:Int, b:Int) => a + b
Closures	
  dit	
   Func/ons)	
  
Click	
  to	
  e(or	
  Master	
  /tle	
  style	
  




(defn adder [a b] (+ a b))
Enhanced	
  switch	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  

char letterGrade(int grade) {
    if(grade >= 0 && grade <= 60) return ‘F‘;
    if(grade > 60 && grade <= 70) return ‘D‘;
    if(grade > 70 && grade <= 80) return ‘C‘;
    if(grade > 80 && grade <= 90) return ‘B‘;
    if(grade > 90 && grade <= 100) return ‘A‘;
  throw new IllegalArgumentException("invalid
grade "+grade);
}
Enhanced	
  Switch	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  

def letterGrade(grade) {
  switch(grade) {
     case 90..100: return ‘A‘
     case 80..<90: return ‘B‘
     case 70..<80: return ‘C‘
     case 60..<70: return ‘D‘
     case 0..<60: return ‘F‘
     case ~"[ABCDFabcdf]":
          return grade.toUpperCase()
  }
  throw new IllegalArgumentException('invalid
grade ‘+grade)
}
Enhanced	
  Switch	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  


val VALID_GRADES = Set("A", "B", "C", "D", "F")
def letterGrade(value: Any):String = value match {
    case x:Int if (90 to 100).contains(x) => "A"
    case x:Int if (80 to 90).contains(x) => "B"
    case x:Int if (70 to 80).contains(x) => "C"
    case x:Int if (60 to 70).contains(x) => "D"
    case x:Int if (0 to 60).contains(x) => "F"
  case x:String if VALID_GRADES(x.toUpperCase) =>
x.toUpperCase()
}
Enhanced	
  Switch	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  


(defn letter-grade [grade]
    (cond
     (in grade 90 100) "A"
     (in grade 80 90) "B"
      (in grade 70 80) "C"
      (in grade 60 70) "D"
      (in grade 0 60) "F"
   (re-find #"[ABCDFabcdf]" grade)
(.toUpperCase grade)))
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




Java	
  Interoperability	
  
All	
  of	
  these	
  are	
  true	
  /tle	
  style	
  
Click	
  to	
  edit	
  Master	
  

     Java	
  can	
  call	
  Groovy,	
  Scala	
  and	
  Clojure	
  classes	
  as	
  if	
  they	
  were	
  
      Java	
  classes	
  

     Groovy,	
  Scala	
  and	
  Clojure	
  can	
  call	
  Java	
  code	
  without	
  breaking	
  
      a	
  sweat!	
  

      In	
  other	
  words,	
  interoperability	
  with	
  Java	
  is	
  a	
  given.	
  
      	
  	
  No	
  need	
  for	
  complicated	
  bridges	
  between	
  languages	
  (i.e.	
  JSR	
  223)	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




                        OK,	
  so...	
  
      What	
  else	
  can	
  these	
  languages	
  do?	
  
All	
  of	
  them	
  	
   Master	
  /tle	
  style	
  
Click	
  to	
  edit	
  

     Na/ve	
  syntax	
  for	
  collec/on	
  classes	
  
     Everything	
  is	
  an	
  object	
  
     Closures!	
  
     Regular	
  expressions	
  as	
  first	
  class	
  ci/zens	
  
     Operator	
  overloading	
  
Groovy	
  edit	
  Master	
  /tle	
  style	
  
Click	
  to	
  

     Metaprogramming	
  (HOT!)	
  both	
  at	
  build/me	
  and	
  run/me	
  
     Builders	
  
     Healthy	
  ecosystem:	
  Grails,	
  Griffon,	
  Gant,	
  Gradle,	
  Spock,	
  
      Gaelyk,	
  Gpars,	
  CodeNarc,	
  etc...	
  

     Not	
  an	
  exhaus/ve	
  list	
  of	
  features!	
  
Scala	
  to	
  edit	
  Master	
  /tle	
  style	
  
Click	
  

     Richer	
  type	
  system	
  
     Type	
  inference	
  
     PaBern	
  matching	
  (case	
  classes)	
  
     Actor	
  model	
  
     Traits	
  



     Not	
  an	
  exhaus/ve	
  list	
  of	
  features!	
  
Clojure	
   edit	
  Master	
  /tle	
  style	
  
Click	
  to	
  

     Data	
  as	
  code	
  and	
  viceversa	
  
     Immutable	
  structures	
  
     STM	
  



     Not	
  an	
  exhaus/ve	
  list	
  of	
  features!	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




Demo	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




Other	
  places	
  where	
  you‘ll	
  find	
  
Polyglot	
  Programming	
  
Web	
  to	
  edit	
  Master	
  /tle	
  style	
  
Click	
  app	
  development	
  

     XML	
  
     SQL	
  
     JavaScript	
  
     JSON	
  
     CSS	
  
     Flash/Flex/Ac/onScript	
  
Next-­‐Gen	
  datastores	
  (tle	
  style	
  
Click	
  to	
  edit	
  Master	
  / NoSQL)	
  

     FleetDB	
  -­‐>	
  Clojure	
  

     FlockDB	
  -­‐>	
  Scala	
  

     CouchDB,	
  Riak	
  -­‐>	
  Erlang	
  



     By	
  the	
  way,	
  watch	
  out	
  for	
  Polyglot	
  Persistence	
  ;-­‐)	
  
Build	
  tsystems	
   aster	
  /tle	
  style	
  
Click	
   o	
  edit	
  M

     Gradle,	
  Gant	
  -­‐>	
  Groovy	
  

     Rake	
  -­‐>	
  Ruby/JRuby	
  

     Maven3	
  -­‐>	
  XML,	
  Groovy,	
  Ruby	
  
Par/ng	
  thoughts	
   /tle	
  style	
  
Click	
  to	
  edit	
  Master	
  

    Java	
  (the	
  language)	
  may	
  have	
  reached	
  its	
  maturity	
  feature	
  
     wise	
  (it’s	
  not	
  dead	
  though!)	
  

    Other	
  JVM	
  languages	
  have	
  evolved	
  faster	
  

    Polyglot	
  Programming	
  is	
  not	
  a	
  new	
  concept	
  

    Download	
  and	
  play	
  with	
  each	
  of	
  the	
  demoed	
  languages,	
  
     maybe	
  one	
  of	
  them	
  strikes	
  your	
  fancy	
  
Resources	
   Master	
  /tle	
  style	
  
Click	
  to	
  edit	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




Q	
  &	
  A	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




        hBp://people.canoo.com/share	
  
Click	
  to	
  edit	
  Master	
  /tle	
  style	
  




Thank	
  you!	
  

Weitere ähnliche Inhalte

Andere mochten auch

Responsive design lunch and learn
Responsive design lunch and learnResponsive design lunch and learn
Responsive design lunch and learnRicardo Queiroz
 
Online Video In China Is Big!
Online Video In China Is Big!Online Video In China Is Big!
Online Video In China Is Big!Richard Matsumoto
 
Chương 2 phương tiện thanh toán quốc tế
Chương 2 phương tiện thanh toán quốc tếChương 2 phương tiện thanh toán quốc tế
Chương 2 phương tiện thanh toán quốc tếNguyễn Ngọc Phan Văn
 
Bio-Processing of Green Bamboo Textile Part 2
Bio-Processing of Green Bamboo Textile Part 2Bio-Processing of Green Bamboo Textile Part 2
Bio-Processing of Green Bamboo Textile Part 2Javed Hathisingwala
 
Tech Backpack pitch for academic faculty - Get 3 months free
Tech Backpack pitch for academic faculty - Get 3 months freeTech Backpack pitch for academic faculty - Get 3 months free
Tech Backpack pitch for academic faculty - Get 3 months freeTech Backpack
 

Andere mochten auch (6)

Bibat museoan
Bibat museoan Bibat museoan
Bibat museoan
 
Responsive design lunch and learn
Responsive design lunch and learnResponsive design lunch and learn
Responsive design lunch and learn
 
Online Video In China Is Big!
Online Video In China Is Big!Online Video In China Is Big!
Online Video In China Is Big!
 
Chương 2 phương tiện thanh toán quốc tế
Chương 2 phương tiện thanh toán quốc tếChương 2 phương tiện thanh toán quốc tế
Chương 2 phương tiện thanh toán quốc tế
 
Bio-Processing of Green Bamboo Textile Part 2
Bio-Processing of Green Bamboo Textile Part 2Bio-Processing of Green Bamboo Textile Part 2
Bio-Processing of Green Bamboo Textile Part 2
 
Tech Backpack pitch for academic faculty - Get 3 months free
Tech Backpack pitch for academic faculty - Get 3 months freeTech Backpack pitch for academic faculty - Get 3 months free
Tech Backpack pitch for academic faculty - Get 3 months free
 

Ähnlich wie Polyglot Programming @ CONFESS

Polyglot Programming in the JVM
Polyglot Programming in the JVMPolyglot Programming in the JVM
Polyglot Programming in the JVMAndres Almiray
 
Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Andres Almiray
 
Polyglot Programming in the JVM - Øredev
Polyglot Programming in the JVM - ØredevPolyglot Programming in the JVM - Øredev
Polyglot Programming in the JVM - ØredevAndres Almiray
 
Polyglot Programming in the JVM - 33rd Degree
Polyglot Programming in the JVM - 33rd DegreePolyglot Programming in the JVM - 33rd Degree
Polyglot Programming in the JVM - 33rd DegreeAndres Almiray
 
Famo.us - New generation of HTML5 Web Application Framework
Famo.us - New generation of HTML5 Web Application FrameworkFamo.us - New generation of HTML5 Web Application Framework
Famo.us - New generation of HTML5 Web Application FrameworkHina Chen
 
Flying with Griffon @ CONFESS
Flying with Griffon @ CONFESSFlying with Griffon @ CONFESS
Flying with Griffon @ CONFESSAndres Almiray
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleySven Haiges
 
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...Guillaume Laforge
 
Introduction To Groovy
Introduction To GroovyIntroduction To Groovy
Introduction To Groovymanishkp84
 
Evolving The Java Language
Evolving The Java LanguageEvolving The Java Language
Evolving The Java LanguageQConLondon2008
 
Write your Ruby in Style
Write your Ruby in StyleWrite your Ruby in Style
Write your Ruby in StyleBhavin Javia
 
Javaone2008 Bof 5101 Groovytesting
Javaone2008 Bof 5101 GroovytestingJavaone2008 Bof 5101 Groovytesting
Javaone2008 Bof 5101 GroovytestingAndres Almiray
 
Boosting Your Testing Productivity with Groovy
Boosting Your Testing Productivity with GroovyBoosting Your Testing Productivity with Groovy
Boosting Your Testing Productivity with GroovyJames Williams
 
Advanced EPUB creation for iPad with Adobe InDesign CC - Digital Book World 2014
Advanced EPUB creation for iPad with Adobe InDesign CC - Digital Book World 2014Advanced EPUB creation for iPad with Adobe InDesign CC - Digital Book World 2014
Advanced EPUB creation for iPad with Adobe InDesign CC - Digital Book World 2014DouglasWaterfall
 
Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101Ted Kulp
 
Building and Distributing PostgreSQL Extensions Without Learning C
Building and Distributing PostgreSQL Extensions Without Learning CBuilding and Distributing PostgreSQL Extensions Without Learning C
Building and Distributing PostgreSQL Extensions Without Learning CDavid Wheeler
 

Ähnlich wie Polyglot Programming @ CONFESS (20)

Polyglot Programming in the JVM
Polyglot Programming in the JVMPolyglot Programming in the JVM
Polyglot Programming in the JVM
 
Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010Polyglot Programming @ Jax.de 2010
Polyglot Programming @ Jax.de 2010
 
Polyglot Programming in the JVM - Øredev
Polyglot Programming in the JVM - ØredevPolyglot Programming in the JVM - Øredev
Polyglot Programming in the JVM - Øredev
 
Polyglot Programming in the JVM - 33rd Degree
Polyglot Programming in the JVM - 33rd DegreePolyglot Programming in the JVM - 33rd Degree
Polyglot Programming in the JVM - 33rd Degree
 
Os Secoske
Os SecoskeOs Secoske
Os Secoske
 
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?
 
Famo.us - New generation of HTML5 Web Application Framework
Famo.us - New generation of HTML5 Web Application FrameworkFamo.us - New generation of HTML5 Web Application Framework
Famo.us - New generation of HTML5 Web Application Framework
 
Flying with Griffon @ CONFESS
Flying with Griffon @ CONFESSFlying with Griffon @ CONFESS
Flying with Griffon @ CONFESS
 
Grails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon ValleyGrails @ Java User Group Silicon Valley
Grails @ Java User Group Silicon Valley
 
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
JavaOne 2008 - TS-5793 - Groovy and Grails, changing the landscape of Java EE...
 
Introduction To Groovy
Introduction To GroovyIntroduction To Groovy
Introduction To Groovy
 
Evolving The Java Language
Evolving The Java LanguageEvolving The Java Language
Evolving The Java Language
 
Write your Ruby in Style
Write your Ruby in StyleWrite your Ruby in Style
Write your Ruby in Style
 
Java & J2EE Coding Conventions
Java & J2EE Coding ConventionsJava & J2EE Coding Conventions
Java & J2EE Coding Conventions
 
Javaone2008 Bof 5101 Groovytesting
Javaone2008 Bof 5101 GroovytestingJavaone2008 Bof 5101 Groovytesting
Javaone2008 Bof 5101 Groovytesting
 
Boosting Your Testing Productivity with Groovy
Boosting Your Testing Productivity with GroovyBoosting Your Testing Productivity with Groovy
Boosting Your Testing Productivity with Groovy
 
Advanced EPUB creation for iPad with Adobe InDesign CC - Digital Book World 2014
Advanced EPUB creation for iPad with Adobe InDesign CC - Digital Book World 2014Advanced EPUB creation for iPad with Adobe InDesign CC - Digital Book World 2014
Advanced EPUB creation for iPad with Adobe InDesign CC - Digital Book World 2014
 
Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101Geek Moot '09 -- Smarty 101
Geek Moot '09 -- Smarty 101
 
Dependency injectionpreso
Dependency injectionpresoDependency injectionpreso
Dependency injectionpreso
 
Building and Distributing PostgreSQL Extensions Without Learning C
Building and Distributing PostgreSQL Extensions Without Learning CBuilding and Distributing PostgreSQL Extensions Without Learning C
Building and Distributing PostgreSQL Extensions Without Learning C
 

Mehr von Andres Almiray

Creando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abiertoCreando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abiertoAndres Almiray
 
Liberando a produccion con confianza
Liberando a produccion con confianzaLiberando a produccion con confianza
Liberando a produccion con confianzaAndres Almiray
 
Liberando a produccion con confidencia
Liberando a produccion con confidenciaLiberando a produccion con confidencia
Liberando a produccion con confidenciaAndres Almiray
 
OracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java DevelopersOracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java DevelopersAndres Almiray
 
Softcon.ph - Maven Puzzlers
Softcon.ph - Maven PuzzlersSoftcon.ph - Maven Puzzlers
Softcon.ph - Maven PuzzlersAndres Almiray
 
Oracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java DevelopersOracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java DevelopersAndres Almiray
 
JReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of lightJReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of lightAndres Almiray
 
Building modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and LayrryBuilding modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and LayrryAndres Almiray
 
Going Reactive with g rpc
Going Reactive with g rpcGoing Reactive with g rpc
Going Reactive with g rpcAndres Almiray
 
Building modular applications with JPMS and Layrry
Building modular applications with JPMS and LayrryBuilding modular applications with JPMS and Layrry
Building modular applications with JPMS and LayrryAndres Almiray
 
Taking Micronaut out for a spin
Taking Micronaut out for a spinTaking Micronaut out for a spin
Taking Micronaut out for a spinAndres Almiray
 
Apache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and YouApache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and YouAndres Almiray
 
What I wish I knew about Maven years ago
What I wish I knew about Maven years agoWhat I wish I knew about Maven years ago
What I wish I knew about Maven years agoAndres Almiray
 
What I wish I knew about maven years ago
What I wish I knew about maven years agoWhat I wish I knew about maven years ago
What I wish I knew about maven years agoAndres Almiray
 
The impact of sci fi in tech
The impact of sci fi in techThe impact of sci fi in tech
The impact of sci fi in techAndres Almiray
 
Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019Andres Almiray
 
Creating Better Builds with Gradle
Creating Better Builds with GradleCreating Better Builds with Gradle
Creating Better Builds with GradleAndres Almiray
 
Interacting with the Oracle Cloud Java SDK with Gradle
Interacting with the Oracle Cloud Java SDK with GradleInteracting with the Oracle Cloud Java SDK with Gradle
Interacting with the Oracle Cloud Java SDK with GradleAndres Almiray
 

Mehr von Andres Almiray (20)

Creando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abiertoCreando, creciendo, y manteniendo una comunidad de codigo abierto
Creando, creciendo, y manteniendo una comunidad de codigo abierto
 
Liberando a produccion con confianza
Liberando a produccion con confianzaLiberando a produccion con confianza
Liberando a produccion con confianza
 
Liberando a produccion con confidencia
Liberando a produccion con confidenciaLiberando a produccion con confidencia
Liberando a produccion con confidencia
 
OracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java DevelopersOracleDB Ecosystem for Java Developers
OracleDB Ecosystem for Java Developers
 
Softcon.ph - Maven Puzzlers
Softcon.ph - Maven PuzzlersSoftcon.ph - Maven Puzzlers
Softcon.ph - Maven Puzzlers
 
Maven Puzzlers
Maven PuzzlersMaven Puzzlers
Maven Puzzlers
 
Oracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java DevelopersOracle Database Ecosystem for Java Developers
Oracle Database Ecosystem for Java Developers
 
JReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of lightJReleaser - Releasing at the speed of light
JReleaser - Releasing at the speed of light
 
Building modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and LayrryBuilding modular applications with the Java Platform Module System and Layrry
Building modular applications with the Java Platform Module System and Layrry
 
Going Reactive with g rpc
Going Reactive with g rpcGoing Reactive with g rpc
Going Reactive with g rpc
 
Building modular applications with JPMS and Layrry
Building modular applications with JPMS and LayrryBuilding modular applications with JPMS and Layrry
Building modular applications with JPMS and Layrry
 
Taking Micronaut out for a spin
Taking Micronaut out for a spinTaking Micronaut out for a spin
Taking Micronaut out for a spin
 
Apache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and YouApache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and You
 
What I wish I knew about Maven years ago
What I wish I knew about Maven years agoWhat I wish I knew about Maven years ago
What I wish I knew about Maven years ago
 
What I wish I knew about maven years ago
What I wish I knew about maven years agoWhat I wish I knew about maven years ago
What I wish I knew about maven years ago
 
The impact of sci fi in tech
The impact of sci fi in techThe impact of sci fi in tech
The impact of sci fi in tech
 
Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019Gradle Ex Machina - Devoxx 2019
Gradle Ex Machina - Devoxx 2019
 
Creating Better Builds with Gradle
Creating Better Builds with GradleCreating Better Builds with Gradle
Creating Better Builds with Gradle
 
Interacting with the Oracle Cloud Java SDK with Gradle
Interacting with the Oracle Cloud Java SDK with GradleInteracting with the Oracle Cloud Java SDK with Gradle
Interacting with the Oracle Cloud Java SDK with Gradle
 
Gradle ex-machina
Gradle ex-machinaGradle ex-machina
Gradle ex-machina
 

Kürzlich hochgeladen

Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 

Kürzlich hochgeladen (20)

Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 

Polyglot Programming @ CONFESS

  • 1. Click  to  edit  Master  /tle  style   Polyglot  Programming  he  JVM  he  JVM   Or  how  I  learned  to  stop  worrying  and  love  t in  t
  • 2. About  t edit  Master   Click  to  he  Speaker   /tle  style   •  Java  developer  since  the  beginning   •  True  believer  in  Open  Source   •  Groovy  commiBer  since  2007   •  Project  lead  of  the  Griffon  framework   •  Currently  working  for    
  • 3. I  confess…   Click  to  edit  Master  /tle  style   <j:jelly  xmlns:j="jelly:core"                    xmlns:define="jelly:define"                    xmlns:my="myTagLib">     <define:taglib  uri="myTagLib">            <define:jellybean  name="foo"  className="MyTask"/>     </define:taglib>     Now  lets  use  the  new  tag     <my:foo  x="2"  y="cheese"/>     </j:jelly>  
  • 4. Some  o  edit  Master  /tle  style   Click  t facts  about  Java     Previous  name  was  Oak     –  Bonus  points  for  knowing  its  real  name  before  that     Made  its  public  appearance  in  1995     C/C++  were  king  at  the  /me     Networking,  mul/threading  were  baked  right  into  the   language     Developers  came  for  the  applets  and  stayed  for  the   components  (JEE  and  all  that  jazz)  
  • 5. However...   Master  /tle  style   Click  to  edit     It‘s  already  in  its  teens     It  has  not  seen  a  major  feature  upgrade  since  JDK5  was   released  back  in  2004  -­‐>  generics     (and  we  do  know  how  that  turned  out  to  be,  don’t  we?)     JDK7  was  been  delayed  again  (scheduled  for  Q3  2011)   Some  features  will  not  make  the  cut     (closures  are  in  apparently)  
  • 6. More  o  edit  Master  /tle  style   Click  tso...     It  is  rather  verbose  when  compared  to  how  other  languages   do  the  same  task     Its  threading  features  are  no  longer  enough.     Concurrent  programs  desperately  cry  for  immutability  these  days  
  • 7. Truth   o  edit  Master  /tle  style   Click  tor  myth?   Is  Java  ofenly  referred  as  overengineered?  
  • 8. Truth   o  edit  Master  /tle  style   Click  tor  myth?   Can  you  build  a  Java  based  web  applica/on   (for  argument  sake  a  basic  TwiBer  clone)  in   less  than  a  day‘s  work  WITHOUT  an  IDE?  
  • 9. Truth   o  edit  Master  /tle  style   Click  tor  myth?   Did  James  Gosling  ever  say  he  was   threatened  with  bodily  harm  should  operator   overloading  find  its  way  into  Java?  
  • 10. Click  to  edit  Master  /tle  style    The  JVM  is  a  great  place  to   work  however  Java  makes   it  painful  some/mes...  
  • 11. Click  to  edit  Master  /tle  style   What  can  we  do  about  it?!  
  • 12. Click  to  edit  Master  /tle  style  
  • 13. Click  to  edit  Master  /tle  style   Disclaimer   (this  is  not  a  bash-­‐the-­‐other-­‐languages  talk)  
  • 14. Click  to  edit  Master  /tle  style   Reduced  Verbosity  
  • 15. Standard  Beans   Click  to  edit  Master  /tle  style   public class Bean { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
  • 16. Standard  Beans   Click  to  edit  Master  /tle  style   public class Bean { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
  • 17. Standard  Beans   Click  to  edit  Master  /tle  style   public class Bean { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
  • 18. Standard  Beans   Click  to  edit  Master  /tle  style   class Bean { String name }
  • 19. Standard  Beans   Click  to  edit  Master  /tle  style   class Bean(var name:String) class Bean { @scala.reflect.BeanProperty var name: String }
  • 20. Standard  Beans   Click  to  edit  Master  /tle  style   (defstruct Bean :name)
  • 21. Closures  dit   Func/ons)   Click  to  e(or  Master  /tle  style   public interface Adder { int add(int a, int b); } public class MyAdder implements Adder { public int add(int a, int b) { return a + b; } }
  • 22. Closures  dit   Func/ons)   Click  to  e(or  Master  /tle  style   // JDK7 Lambdas proposal #(int a, int b)(a + b) #(int a, int b) { return a + b; }
  • 23. Closures  dit   Func/ons)   Click  to  e(or  Master  /tle  style   def adder = { a , b -> a + b }
  • 24. Closures  dit   Func/ons)   Click  to  e(or  Master  /tle  style   val adder = (a:Int, b:Int) => a + b
  • 25. Closures  dit   Func/ons)   Click  to  e(or  Master  /tle  style   (defn adder [a b] (+ a b))
  • 26. Enhanced  switch   Click  to  edit  Master  /tle  style   char letterGrade(int grade) { if(grade >= 0 && grade <= 60) return ‘F‘; if(grade > 60 && grade <= 70) return ‘D‘; if(grade > 70 && grade <= 80) return ‘C‘; if(grade > 80 && grade <= 90) return ‘B‘; if(grade > 90 && grade <= 100) return ‘A‘; throw new IllegalArgumentException("invalid grade "+grade); }
  • 27. Enhanced  Switch   Click  to  edit  Master  /tle  style   def letterGrade(grade) { switch(grade) { case 90..100: return ‘A‘ case 80..<90: return ‘B‘ case 70..<80: return ‘C‘ case 60..<70: return ‘D‘ case 0..<60: return ‘F‘ case ~"[ABCDFabcdf]": return grade.toUpperCase() } throw new IllegalArgumentException('invalid grade ‘+grade) }
  • 28. Enhanced  Switch   Click  to  edit  Master  /tle  style   val VALID_GRADES = Set("A", "B", "C", "D", "F") def letterGrade(value: Any):String = value match { case x:Int if (90 to 100).contains(x) => "A" case x:Int if (80 to 90).contains(x) => "B" case x:Int if (70 to 80).contains(x) => "C" case x:Int if (60 to 70).contains(x) => "D" case x:Int if (0 to 60).contains(x) => "F" case x:String if VALID_GRADES(x.toUpperCase) => x.toUpperCase() }
  • 29. Enhanced  Switch   Click  to  edit  Master  /tle  style   (defn letter-grade [grade] (cond (in grade 90 100) "A" (in grade 80 90) "B" (in grade 70 80) "C" (in grade 60 70) "D" (in grade 0 60) "F" (re-find #"[ABCDFabcdf]" grade) (.toUpperCase grade)))
  • 30. Click  to  edit  Master  /tle  style   Java  Interoperability  
  • 31. All  of  these  are  true  /tle  style   Click  to  edit  Master     Java  can  call  Groovy,  Scala  and  Clojure  classes  as  if  they  were   Java  classes     Groovy,  Scala  and  Clojure  can  call  Java  code  without  breaking   a  sweat!     In  other  words,  interoperability  with  Java  is  a  given.      No  need  for  complicated  bridges  between  languages  (i.e.  JSR  223)  
  • 32. Click  to  edit  Master  /tle  style   OK,  so...   What  else  can  these  languages  do?  
  • 33. All  of  them     Master  /tle  style   Click  to  edit     Na/ve  syntax  for  collec/on  classes     Everything  is  an  object     Closures!     Regular  expressions  as  first  class  ci/zens     Operator  overloading  
  • 34. Groovy  edit  Master  /tle  style   Click  to     Metaprogramming  (HOT!)  both  at  build/me  and  run/me     Builders     Healthy  ecosystem:  Grails,  Griffon,  Gant,  Gradle,  Spock,   Gaelyk,  Gpars,  CodeNarc,  etc...     Not  an  exhaus/ve  list  of  features!  
  • 35. Scala  to  edit  Master  /tle  style   Click     Richer  type  system     Type  inference     PaBern  matching  (case  classes)     Actor  model     Traits     Not  an  exhaus/ve  list  of  features!  
  • 36. Clojure   edit  Master  /tle  style   Click  to     Data  as  code  and  viceversa     Immutable  structures     STM     Not  an  exhaus/ve  list  of  features!  
  • 37. Click  to  edit  Master  /tle  style   Demo  
  • 38. Click  to  edit  Master  /tle  style   Other  places  where  you‘ll  find   Polyglot  Programming  
  • 39. Web  to  edit  Master  /tle  style   Click  app  development     XML     SQL     JavaScript     JSON     CSS     Flash/Flex/Ac/onScript  
  • 40. Next-­‐Gen  datastores  (tle  style   Click  to  edit  Master  / NoSQL)     FleetDB  -­‐>  Clojure     FlockDB  -­‐>  Scala     CouchDB,  Riak  -­‐>  Erlang     By  the  way,  watch  out  for  Polyglot  Persistence  ;-­‐)  
  • 41. Build  tsystems   aster  /tle  style   Click   o  edit  M   Gradle,  Gant  -­‐>  Groovy     Rake  -­‐>  Ruby/JRuby     Maven3  -­‐>  XML,  Groovy,  Ruby  
  • 42. Par/ng  thoughts   /tle  style   Click  to  edit  Master     Java  (the  language)  may  have  reached  its  maturity  feature   wise  (it’s  not  dead  though!)     Other  JVM  languages  have  evolved  faster     Polyglot  Programming  is  not  a  new  concept     Download  and  play  with  each  of  the  demoed  languages,   maybe  one  of  them  strikes  your  fancy  
  • 43. Resources   Master  /tle  style   Click  to  edit  
  • 44. Click  to  edit  Master  /tle  style   Q  &  A  
  • 45. Click  to  edit  Master  /tle  style   hBp://people.canoo.com/share  
  • 46. Click  to  edit  Master  /tle  style   Thank  you!