Câu trả lời:
JRuby là triển khai Ruby chạy trên JVM trong khi Ruby của Matz là triển khai C.
Các tính năng chính cần lưu ý là:
Có những khác biệt khác được liệt kê tại wiki JRuby:
Tôi ngạc nhiên có một điều quan trọng bị thiếu trong tất cả các câu trả lời cho câu hỏi này, liên quan đến GIL .
Sự khác biệt chính bạn nên quan tâm về đặc biệt. trong các ứng dụng web, chẳng hạn như các ứng dụng được xây dựng với Rails là đồng thời thực sự ("Khóa phiên dịch toàn cầu" miễn phí). Khi hai luồng đang chạy (ví dụ: phục vụ 2 yêu cầu người dùng) với JRuby, chúng có khả năng chạy đồng thời trong một quy trình, trong khi ở MRI có GIL (ngay cả với các luồng gốc 1.9) tránh thực thi mã Ruby song song.
Đối với một nhà phát triển ứng dụng, đây là điều đầu tiên cần lưu ý khi xem xét JRuby, vì nó thực sự tỏa sáng config.threadsafe!
nhưng yêu cầu bạn phải đảm bảo mã của bạn (và mã đá quý của bạn) phải an toàn theo luồng.
Tôi có thể sai, nhưng tôi nghĩ bạn có thể đóng gói ứng dụng JRuby trên Rails theo cách bạn không thể làm với RoR bình thường - nhìn vào Mingle hoặc tương tự. Làm cho nó có thể bán mà không làm rơi quần / mở komono.
Điều đó nói rằng, tôi không đủ quen thuộc với bao bì RoR, vì vậy đừng giữ tôi với nó :)
chủ yếu là nó nên hoạt động như nhau. trong jRoR, bạn có thể truy cập những thứ bạn không có trong RoR. Thông thường nó chủ yếu là một mối quan tâm triển khai.
Tuy nhiên, nếu ứng dụng RoR của bạn sử dụng các thư viện riêng không có tương đương chạy trên JVM, đó có thể là một nỗi đau. Tuy nhiên, hầu hết các lib đều có sẵn phiên bản không có sẵn (ít nhất là những phiên bản phổ biến mà tôi đã gặp).
Có một số câu trả lời tuyệt vời ở đây rồi.
eebbesen đã trình bày những điều cơ bản và kares (chính anh ta!) đã nói với chúng tôi rằng JRuby không có GIL.
Tôi sẽ thêm từ góc độ thực tế hơn, tôi đã khởi chạy các ứng dụng trên Ruby on Rails, sau đó di chuyển sang JRuby vì lý do hiệu suất.
Có hai lợi ích hiệu suất chính: JRuby đơn giản là (hoặc) nhanh hơn Ruby trong một số trường hợp, và hai, việc thiếu Phiên dịch toàn cầu khóa kares đề cập đến cho phép tôi thực hiện đa luồng, trong khi, khó khăn, mở khóa các đơn đặt hàng về lợi ích hiệu suất lớn .
Một ứng dụng Ruby on Rails rất lớn được chuyển và chạy trong một giờ, đá quý và tất cả. Điều trục trặc thực tế duy nhất là các biểu thức của Java hơi khác so với Ruby. Đó là một thành tích tuyệt vời về phía JRuby.