Your SlideShare is downloading. ×
0
Alternative Languages on JVM Java User Group Latvia www.jug.lv
Agenda <ul><ul><li>Why alternative languages? </li></ul></ul><ul><ul><li>What are the options? </li></ul></ul><ul><ul><li>...
Why Go Alternative? <ul><ul><li>Java is stagnating  </li></ul></ul><ul><ul><li>Syntax </li></ul></ul><ul><ul><li>Complex l...
Why Go Alternative? <ul><ul><li>Generics </li></ul></ul><ul><ul><li>Primitives </li></ul></ul><ul><ul><li>Arrays </li></ul...
Why Go Alternative? <ul><ul><li>Cool frameworks and libraries </li></ul></ul><ul><ul><li>Embedded scripting </li></ul></ul...
Where To Go? <ul><ul><li>Dynamic Languages </li></ul></ul><ul><ul><ul><li>JRuby </li></ul></ul></ul><ul><ul><ul><li>Jython...
Groovy <ul><ul><li>Easiest to learn  </li></ul></ul><ul><ul><li>Direct invocation of Java methods </li></ul></ul><ul><ul><...
JRuby <ul><ul><li>Different from Java </li></ul></ul><ul><ul><li>Intuitive syntax </li></ul></ul><ul><ul><li>Several imple...
Scala <ul><ul><li>Functional and object-oriented  </li></ul></ul><ul><ul><li>Concurrency </li></ul></ul><ul><ul><li>Academ...
How it works? <ul><ul><li>Interpreted  </li></ul></ul><ul><ul><ul><li>JDK 6 JSR 223 (javax.script) (Example) </li></ul></u...
What about existing code? <ul><ul><li>Calls to Java </li></ul></ul><ul><ul><li>Calls from Java </li></ul></ul><ul><ul><li>...
JVM and Java Language <ul><ul><li>JVM and Java are not the same thing </li></ul></ul><ul><ul><li>Java used with no JVM (An...
Summary <ul><ul><li>One language is not enough  </li></ul></ul><ul><ul><li>No changes to infrastructure </li></ul></ul><ul...
Where to Start? <ul><ul><li>Try Groovy </li></ul></ul><ul><ul><li>Easiest Java integration </li></ul></ul><ul><ul><li>Comp...
Time for discussion <ul><ul><li>Tell us what do you think </li></ul></ul>
References <ul><li>http://jruby.org/ </li></ul><ul><li>http://groovy.codehaus.org/  </li></ul><ul><li>http://www.scala-lan...
Who am I? <ul><li>Dmitry Buzdin  </li></ul><ul><li>  </li></ul><ul><li>Agile software developer working with Java since 20...
Upcoming SlideShare
Loading in...5
×

Jug dynamic languages_in_jvm

708

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
708
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Jug dynamic languages_in_jvm"

  1. 1. Alternative Languages on JVM Java User Group Latvia www.jug.lv
  2. 2. Agenda <ul><ul><li>Why alternative languages? </li></ul></ul><ul><ul><li>What are the options? </li></ul></ul><ul><ul><li>How to use them? </li></ul></ul><ul><ul><li>Meet today's leaders </li></ul></ul><ul><ul><ul><li>JRuby </li></ul></ul></ul><ul><ul><ul><li>Groovy </li></ul></ul></ul><ul><ul><ul><li>Scala </li></ul></ul></ul><ul><ul><li>Summary </li></ul></ul>
  3. 3. Why Go Alternative? <ul><ul><li>Java is stagnating </li></ul></ul><ul><ul><li>Syntax </li></ul></ul><ul><ul><li>Complex language - generics example? </li></ul></ul><ul><ul><li>Technical limitations </li></ul></ul><ul><ul><li>Ugly API </li></ul></ul><ul><ul><li>JDK 7/8 is being delayed </li></ul></ul><ul><ul><li>We want power now!!! </li></ul></ul>
  4. 4. Why Go Alternative? <ul><ul><li>Generics </li></ul></ul><ul><ul><li>Primitives </li></ul></ul><ul><ul><li>Arrays </li></ul></ul><ul><ul><li>Date API </li></ul></ul><ul><ul><li>I/O API </li></ul></ul><ul><ul><li>No closures </li></ul></ul>
  5. 5. Why Go Alternative? <ul><ul><li>Cool frameworks and libraries </li></ul></ul><ul><ul><li>Embedded scripting </li></ul></ul><ul><ul><li>Less code </li></ul></ul><ul><ul><li>Simple code </li></ul></ul>
  6. 6. Where To Go? <ul><ul><li>Dynamic Languages </li></ul></ul><ul><ul><ul><li>JRuby </li></ul></ul></ul><ul><ul><ul><li>Jython </li></ul></ul></ul><ul><ul><ul><li>Groovy </li></ul></ul></ul><ul><ul><ul><li>Rhino (JavaScript) </li></ul></ul></ul><ul><ul><li>Functional Languages </li></ul></ul><ul><ul><ul><li>Clojure </li></ul></ul></ul><ul><ul><ul><li>Scala </li></ul></ul></ul>
  7. 7. Groovy <ul><ul><li>Easiest to learn </li></ul></ul><ul><ul><li>Direct invocation of Java methods </li></ul></ul><ul><ul><li>Compilable </li></ul></ul><ul><ul><li>Java only </li></ul></ul><ul><ul><li>Grails, Gradle, Gant, Griffon, GPars, ... </li></ul></ul><ul><ul><li>Markup builder example...    </li></ul></ul>
  8. 8. JRuby <ul><ul><li>Different from Java </li></ul></ul><ul><ul><li>Intuitive syntax </li></ul></ul><ul><ul><li>Several implementations (Native, IronRuby, ...) </li></ul></ul><ul><ul><li>Compilable </li></ul></ul><ul><ul><li>Rails, Rake, Ruby Gems, ... </li></ul></ul><ul><ul><li>Active Record example </li></ul></ul>
  9. 9. Scala <ul><ul><li>Functional and object-oriented </li></ul></ul><ul><ul><li>Concurrency </li></ul></ul><ul><ul><li>Academic </li></ul></ul><ul><ul><li>Java only </li></ul></ul><ul><ul><li>Lift </li></ul></ul><ul><ul><li>Prime numbers example ... </li></ul></ul>
  10. 10. How it works? <ul><ul><li>Interpreted </li></ul></ul><ul><ul><ul><li>JDK 6 JSR 223 (javax.script) (Example) </li></ul></ul></ul><ul><ul><ul><li>Apache Bean Scripting Framework (BSF) </li></ul></ul></ul><ul><ul><ul><li>Custom script runners </li></ul></ul></ul><ul><ul><li>Compilation into bytecode </li></ul></ul><ul><ul><ul><li>Best performance </li></ul></ul></ul>
  11. 11. What about existing code? <ul><ul><li>Calls to Java </li></ul></ul><ul><ul><li>Calls from Java </li></ul></ul><ul><ul><li>Class extensions (example) </li></ul></ul><ul><ul><li>Hybrid systems </li></ul></ul>
  12. 12. JVM and Java Language <ul><ul><li>JVM and Java are not the same thing </li></ul></ul><ul><ul><li>Java used with no JVM (Android, GWT) </li></ul></ul><ul><ul><li>JVM used with no Java (JVM languages) </li></ul></ul>
  13. 13. Summary <ul><ul><li>One language is not enough </li></ul></ul><ul><ul><li>No changes to infrastructure </li></ul></ul><ul><ul><li>Don't treat Java as a hammer </li></ul></ul><ul><ul><li>No need to drop Java </li></ul></ul><ul><ul><li>Simply try it ! </li></ul></ul>
  14. 14. Where to Start? <ul><ul><li>Try Groovy </li></ul></ul><ul><ul><li>Easiest Java integration </li></ul></ul><ul><ul><li>Compilation into bytecode </li></ul></ul><ul><ul><li>Lots of frameworks </li></ul></ul>
  15. 15. Time for discussion <ul><ul><li>Tell us what do you think </li></ul></ul>
  16. 16. References <ul><li>http://jruby.org/ </li></ul><ul><li>http://groovy.codehaus.org/ </li></ul><ul><li>http://www.scala-lang.org/ </li></ul><ul><li>http://jakarta.apache.org/bsf/ </li></ul><ul><li>http://jcp.org/en/jsr/detail?id=223 </li></ul>
  17. 17. Who am I? <ul><li>Dmitry Buzdin </li></ul><ul><li>  </li></ul><ul><li>Agile software developer working with Java since 2005 </li></ul><ul><li>Based in C.T.Co </li></ul><ul><li>Reach me at [email_address] </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×