Your SlideShare is downloading. ×
0
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Jug dynamic languages_in_jvm
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Jug dynamic languages_in_jvm

701

Published on

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

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Alternative Languages on JVM Java User Group Latvia www.jug.lv
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. Time for discussion <ul><ul><li>Tell us what do you think </li></ul></ul>
  • 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. 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>

×