Your SlideShare is downloading. ×
0
Ruby vs Java
                                   Hubert Łępicki
                                Wojciech Piekutowski




Bi...
Ruby vs Java




Białystok, JTeam, 2010-04-15
Ruby and Java




Białystok, JTeam, 2010-04-15
Ruby and Java
    Historia Ruby
    Implementacje Ruby
    Elegancja Ruby
    Wydajność Javy
    Jak je ożenić? → JRu...
Historia Ruby
    1995 – Ruby (tylko Japonia)
    1999 – Zachód odkrywa Ruby (1.3)
    2005 – Ruby on Rails
    2006 -...
Implementacje Ruby
    Standard Ruby aka MRI
    JRuby (JVM)
    MacRuby
    Cardinal (Parrot VM)
    MagLev (GemSton...
Interpretacja czy kompilacja?

     >ruby my_program.rb       >javac MyProgram.java
                               >java M...
Dynamiczne, silne typowanie
                                         1. def len(list)
    Wartości mają typ, zmienne nie ...
Zwięzła składnia Ruby
    Pusty program
    Java
            Class Test {
              public static void main(String[]...
Zwięzła składnia Ruby
    Accessors (pl?)           Class Circle {
                                 private Coordinate ce...
Zwięzła składnia Ruby
    Lista
                   List<String> languages = new LinkedList<String>();
                   ...
Wszystko jest obiektem
 >3.times { puts "Hello JTeam!" }
 Hello JTeam!
 Hello JTeam!
 Hello JTeam!




 >self.class
 => Ob...
Klasy wbudowane...
    …można rozszerzać
    Jak zniszczyć wszechświat?




Białystok, JTeam, 2010-04-15
Klasy wbudowane...
    …można rozszerzać
    Jak zniszczyć wszechświat?
            class Fixnum
              def +(i)
...
require 'activesupport'
                    if (1 % 2 == 1) System.err.println("Odd!");
    Java           => Odd!




 ...
require 'activesupport'
                    if (1 % 2 == 1) System.err.println("Odd!");
    Java           => Odd!




 ...
Bloki

     >find_integer(["a",1, 4, 2,"9","c"]) {|e| e.odd?}
     => 1




Białystok, JTeam, 2010-04-15
Bloki

     >find_integer(["a",1, 4, 2,"9","c"]) {|e| e.odd?}
     => 1



     1. def find_integer(array)
     2.   for e...
Metaprogramowanie
    Wykonanie kodu
            >eval("puts 'Hi JTeam'")
            => Hi JTeam



    Rozszerzanie kl...
Metaprogramowanie
    Dodawanie metod
                  1.    people = ["michal", "wojtek"]
                  2.    speak...
Podsumowanie
    Ruby jest elegancki
    Pozwala wiele wyrazić
    Jest elastyczny
    Łatwo rozszerzyć wszystko
    ...
Podsumowanie
    Ruby jest elegancki
    Pozwala wiele wyrazić
    Jest elastyczny
    Łatwo rozszerzyć wszystko
    ...
Java == wydajność




                               http://shootout.alioth.debian.org

Białystok, JTeam, 2010-04-15
Rozwiązanie: współpraca!



                               JRuby DEMO




Białystok, JTeam, 2010-04-15
Dziękujemy! Pytania?




Białystok, JTeam, 2010-04-15
   http://jruby.org
    http://www.ruby-lang.org
    http://maglev.gemstone.com
    Jean-Baptiste Escoyez (inspiracja)...
AmberBit
    http://amberbit.com
    http://amberbit.pl



    Zasoby dotyczące prezentacji (kod, nagrania):
     http:...
Upcoming SlideShare
Loading in...5
×

Ruby And Java

961

Published on

Prezentacja ze spotkania sekcji JTeam, KWI PB oraz firmy AmberBit, poświęcona Ruby w kontekście Javy.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
961
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Ruby And Java"

  1. 1. Ruby vs Java Hubert Łępicki Wojciech Piekutowski Białystok, JTeam, 2010-04-15
  2. 2. Ruby vs Java Białystok, JTeam, 2010-04-15
  3. 3. Ruby and Java Białystok, JTeam, 2010-04-15
  4. 4. Ruby and Java  Historia Ruby  Implementacje Ruby  Elegancja Ruby  Wydajność Javy  Jak je ożenić? → JRuby demo Białystok, JTeam, 2010-04-15
  5. 5. Historia Ruby  1995 – Ruby (tylko Japonia)  1999 – Zachód odkrywa Ruby (1.3)  2005 – Ruby on Rails  2006 - JRuby  2009 – Ruby 1.9.1 Matz Białystok, JTeam, 2010-04-15
  6. 6. Implementacje Ruby  Standard Ruby aka MRI  JRuby (JVM)  MacRuby  Cardinal (Parrot VM)  MagLev (GemStone VM)  Rubinius  IronRuby (.net)  Ruby.NET  XRuby  HotRuby Białystok, JTeam, 2010-04-15
  7. 7. Interpretacja czy kompilacja? >ruby my_program.rb >javac MyProgram.java >java MyProgram  Kod ładowany w trakcie wykonania  Dostęp do kodu działającego programu  Kod źródłowy zawsze dostępny  Niższa wydajność Białystok, JTeam, 2010-04-15
  8. 8. Dynamiczne, silne typowanie 1. def len(list)  Wartości mają typ, zmienne nie 2. x = 0 3. list.each do |element|  Mniejsza złożoność języka 4. 5. x += 1 end 6. x  Brak deklaracji typów 7. end  Brak rzutowań  Większa elastyczność public static int len(List list) {  Błędy w czasie wykonania int x = 0; Iterator listIterator = list.iterator(); while(listIterator.hasNext()){ x += 1; } return x; } Białystok, JTeam, 2010-04-15
  9. 9. Zwięzła składnia Ruby  Pusty program  Java Class Test { public static void main(String[] args){} }  Ruby Białystok, JTeam, 2010-04-15
  10. 10. Zwięzła składnia Ruby  Accessors (pl?) Class Circle { private Coordinate center, float radius;  Java public void setCenter(Coordinate center){ this.center = center; } public Coordinate getCenter(){ return center; } public void setRadius(float radius){ this.radius = radius; } public Coordinate getRadius(){ return radius; } } class Circle attr_accessor :center, :radius  Ruby end Białystok, JTeam, 2010-04-15
  11. 11. Zwięzła składnia Ruby  Lista List<String> languages = new LinkedList<String>(); languages.add("Java");  Java languages.add("Ruby"); languages.add("Python"); languages.add("Perl"); 1. stuff = [] 2. stuff << "Java", "Ruby", "Python"  Ruby 3. stuff = ["Java", "Ruby", "Python"] 4. stuff = %w(Java Ruby Python) Białystok, JTeam, 2010-04-15
  12. 12. Wszystko jest obiektem >3.times { puts "Hello JTeam!" } Hello JTeam! Hello JTeam! Hello JTeam! >self.class => Object >1.class => Fixnum >true.class => TrueClass Białystok, JTeam, 2010-04-15
  13. 13. Klasy wbudowane...  …można rozszerzać  Jak zniszczyć wszechświat? Białystok, JTeam, 2010-04-15
  14. 14. Klasy wbudowane...  …można rozszerzać  Jak zniszczyć wszechświat? class Fixnum def +(i) self - i end end >3 + 1 => 2 Białystok, JTeam, 2010-04-15
  15. 15. require 'activesupport' if (1 % 2 == 1) System.err.println("Odd!");  Java => Odd!  Ruby if 11.odd?; puts "Odd!" => Odd! Białystok, JTeam, 2010-04-15
  16. 16. require 'activesupport' if (1 % 2 == 1) System.err.println("Odd!");  Java => Odd!  Ruby if 11.odd?; puts "Odd!" => Odd!  Java System.out.println("Running time: " + (3600 + 15 * 60 + 10) + "seconds");  Ruby puts "Running time: #{1.hour + 15.minutes + 10.seconds} seconds" Białystok, JTeam, 2010-04-15
  17. 17. Bloki >find_integer(["a",1, 4, 2,"9","c"]) {|e| e.odd?} => 1 Białystok, JTeam, 2010-04-15
  18. 18. Bloki >find_integer(["a",1, 4, 2,"9","c"]) {|e| e.odd?} => 1 1. def find_integer(array) 2. for element in array 3. if element.is_a?(Integer) && yield element 4. return element 5. end 6. end 7. end Białystok, JTeam, 2010-04-15
  19. 19. Metaprogramowanie  Wykonanie kodu >eval("puts 'Hi JTeam'") => Hi JTeam  Rozszerzanie klas 1. speaker = Class.new 2. speaker.class_eval do 3. def hello_jteam 4. puts "Hello JTeam!" 5. end 6. end 7. wojtek = speaker.new 8. wojtek.hello_jteam 9. => "Hello JTeam!" Białystok, JTeam, 2010-04-15
  20. 20. Metaprogramowanie  Dodawanie metod 1. people = ["michal", "wojtek"] 2. speaker = Class.new 3. speaker.class_eval do 4. people.each do |person| 5. define_method("hello_#{person}") { 6. puts "Hello #{person}" 7. } 8. end 9. end 10. hubert = speaker.new 11. hubert.methods - Object.methods 12. => ["hello_michal", "hello_wojtek"] 13. hubert.hello_michal 14. => "Hello michal" Białystok, JTeam, 2010-04-15
  21. 21. Podsumowanie  Ruby jest elegancki  Pozwala wiele wyrazić  Jest elastyczny  Łatwo rozszerzyć wszystko  Zwięzły Białystok, JTeam, 2010-04-15
  22. 22. Podsumowanie  Ruby jest elegancki  Pozwala wiele wyrazić  Jest elastyczny  Łatwo rozszerzyć wszystko  Zwięzły  A co z Javą? Białystok, JTeam, 2010-04-15
  23. 23. Java == wydajność http://shootout.alioth.debian.org Białystok, JTeam, 2010-04-15
  24. 24. Rozwiązanie: współpraca! JRuby DEMO Białystok, JTeam, 2010-04-15
  25. 25. Dziękujemy! Pytania? Białystok, JTeam, 2010-04-15
  26. 26.  http://jruby.org  http://www.ruby-lang.org  http://maglev.gemstone.com  Jean-Baptiste Escoyez (inspiracja)  Matz (Ruby) Białystok, JTeam, 2010-04-15
  27. 27. AmberBit  http://amberbit.com  http://amberbit.pl  Zasoby dotyczące prezentacji (kod, nagrania): http://amberbit.pl/blog-pl Białystok, JTeam, 2010-04-15
  1. A particular slide catching your eye?

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

×