$30 off During Our Annual Pro Sale. View Details »

Golo - A simple post-invokedynamic language for the JVM

Julien Ponge
November 12, 2013

Golo - A simple post-invokedynamic language for the JVM

Tools in Action at Devoxx 2013.

Julien Ponge

November 12, 2013
Tweet

More Decks by Julien Ponge

Other Decks in Programming

Transcript

  1. @jponge
    #DV13 #gololang
    A simple post-invokedynamic
    language for the JVM
    - Julien Ponge

    View Slide

  2. @jponge
    #DV13 #gololang
    Julien Ponge
    !
    Associate Professor
    Computer Scientist
    !
    IzPack, Mojo, GlassFish, …
    Oracle Java Magazine, …

    View Slide

  3. @jponge
    #DV13 #gololang
    Simple language
    Simple to use & hack

    View Slide

  4. @jponge
    #DV13 #gololang
    JooFlux
    Dynamic AOP using invokedynamic
    April 2012

    View Slide

  5. @jponge
    #DV13 #gololang
    July 2012
    Summer hack for fun…

    View Slide

  6. @jponge
    #DV13 #gololang
    August 2012
    Fibonacci… no way back!

    View Slide

  7. Demo
    @jponge
    #DV13 #gololang

    View Slide

  8. @jponge
    #DV13 #gololang
    Micro-benchmarks
    (not a shootout…)

    View Slide

  9. @jponge
    #DV13 #gololang

    View Slide

  10. @jponge
    #DV13 #gololang
    Golo
    Java
    Java (boxed)
    Groovy (indy)
    Groovy
    JRuby
    Clojure
    Nashorn
    0,1 1 10 100
    (logarithmic, less is better)

    View Slide

  11. @jponge
    #DV13 #gololang
    Monomorphic dispatch
    Golo
    Java
    Java (boxed)
    Groovy (indy)
    Groovy
    JRuby
    Clojure
    Nashorn
    0,1 1 10 100
    A A A
    A
    A
    obj: toString()
    (…)

    View Slide

  12. @jponge
    #DV13 #gololang
    Trimorphic dispatch
    Golo
    Java
    Java (boxed)
    Groovy (indy)
    Groovy
    JRuby
    Clojure
    Nashorn
    0,1 1 10 100
    A C
    B
    A
    A
    obj: toString()
    (…)

    View Slide

  13. @jponge
    #DV13 #gololang
    Megamorphic dispatch
    Golo
    Java
    Java (boxed)
    Groovy (indy)
    Groovy
    JRuby
    Clojure
    Nashorn
    0,1 1 10 100
    C D E
    B
    A
    obj: toString()
    (…)

    View Slide

  14. @jponge
    #DV13 #gololang
    Fibonacci(40)
    Golo
    Java
    Java (boxed)
    Groovy (indy)
    Groovy
    JRuby
    Clojure
    Nashorn
    0,1 1 10 100

    View Slide

  15. @jponge
    #DV13 #gololang
    Filter-Map-Reduce
    Golo
    Java
    Java (boxed)
    Groovy (indy)
    Groovy
    JRuby
    Clojure
    Nashorn
    0,1 1 10 100
    1 2 3 4
    1 3
    40
    10 30
    odd?
    x10
    sum

    View Slide

  16. @jponge
    #DV13 #gololang
    Dynamic object dispatch
    Golo
    Java
    Java (boxed)
    Groovy (indy)
    Groovy
    JRuby
    Clojure
    Nashorn
    0,1 1 10 100

    View Slide

  17. @jponge
    #DV13 #gololang

    View Slide

  18. @jponge
    #DV13 #gololang
    (…)

    View Slide

  19. @jponge
    #DV13 #gololang
    @golo_lang
    http://golo-lang.org/
    @jponge
    http://julien.ponge.org/

    View Slide