JRuby - Sự kết hợp của java và ruby
JRuby là gì? nó có liên quan gì đến Ruby không? JRuby là một trình thông dịch Ruby đầy đủ được viết bằng ngôn ngữ Java và có thể chạy trong một máy ảo Java (JVM). Không giống như Ruby chính thức, JRuby cho phép bạn gọi các kịch bản lệnh Ruby từ bên trong mã Java, cũng như gọi các API Java từ bên ...
JRuby là gì? nó có liên quan gì đến Ruby không?
JRuby là một trình thông dịch Ruby đầy đủ được viết bằng ngôn ngữ Java và có thể chạy trong một máy ảo Java (JVM). Không giống như Ruby chính thức, JRuby cho phép bạn gọi các kịch bản lệnh Ruby từ bên trong mã Java, cũng như gọi các API Java từ bên trong các kịch bản lệnh Ruby của bạn.
Cài đặt java 8
Trước khi cài đặt JRuby thì chúng ta cần phải tích hợp máy ảo Java. Các bước cài đặt java như sau:
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer
Chú ý: bạn sẽ nhận được lời đề nghị chấp nhận giấy phép trước khi việc cài đặt thật sự bắt đầu
Lựa chọn OK và nhấn Enter, sau đấy lựa chọn Yes và nhấn Enter Quá trình cài đặt này sẽ mất rất khá nhiều thời gian. Sau khi cài đặt ta có thể kiểm tra bằng câu lệnh
java -version
Và kết quả sẽ xuất hiện trên màn hình đồng nghĩa với việc bạn đã cài thành công java 8
java version "1.8.0_45" Java(TM) SE Runtime Environment (build 1.8.0_45-b14) Java HotSpot(TM) Server VM (build 25.45-b02, mixed mode)
Cài đặt JRuby
Một cách để cài đặt là download từ website: http://jruby.org/download về máy mã nguồn mở của jruby và tiến hành giải nén để cài đặt hoặc có thể cài đặt thông qua môi trường quản lý ruby như rvm hoặc rbenv. Còn tôi sử dụng rvm để cài đặt phiên bản mới nhất
$rvm install jruby
Sau khi cài đặt xong chúng ta sẽ phải mặc định sẽ chỉ sử dụng jruby bằng dòng lệnh
rvm use jruby
Để kiểm tra việc cài đặt hoàn tất ta chạy lệnh
jruby -v
Kết quả khi chạy thành công là
jruby 1.7.19 (1.9.3p551) 2015-01-29 20786bd on Java HotSpot(TM) Server VM 1.8.0_45-b14 +jit [linux-i386]
Demo chương trình chạy bằng JRuby
Và bây giờ chúng ta có thể chạy demo với ngôn ngữ JRuby Bạn vào truy cập vào thư mục đã có sẵn project rails và mở console bằng lệnh
rails console
Khi console đã mở thì ta chạy các câu lệnh kiểm tra sau:
>> require "java" => true >> h = java.util.HashMap.new => {} >> h.put(:foo, "bar") => nil >> h.get(:foo) => "bar"
Một điều khác thú vị khác khi chúng ta sử dụng là Swing của java trong JRuby, công cụ dùng để tạo ra GUI trong java
>> javax.swing.JOptionPane.showMessageDialog(nil, "Hello world!") => nil
Ngoài ra chúng ta có thể viết các câu lệnh jruby vào vào một file có đuôi .rb
swing.rb require "java" java_import javax.swing.JFrame java_import javax.swing.JButton java_import javax.swing.JOptionPane class HelloWorld < JFrame def initialize super "Example" setSize(150, 100) setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE) setLocationRelativeTo(nil) button = JButton.new("Say Hello") add(button) button.addActionListener do |e| JOptionPane.showMessageDialog(nil, "Hello World") end setVisible(true) end end HelloWorld.new
Chúng ta tiếp tục chạy lệnh trên console
jruby swing.rb
Kết quả thu được là
Cuối cùng là chương trình tính dãy số fibonacci và đưa ra thời gian tính toán
fib.rb def fib n n < 2 ? n : fib(n-1) + fib(n-2) end start = Time.now 1.upto(5).map do |n| Thread.new { puts "Thread #{n}: #{sleep(0.5)}" } end.each(&:join) puts "Time: #{Time.now - start}"