4 điểm bởi xguru 2024-12-26 | 1 bình luận | Chia sẻ qua WhatsApp
  • JRuby là công nghệ kết hợp năng suất của Ruby với hiệu năng của JVM, còn JBang cung cấp quản lý dependency đơn giản và môi trường chạy
    • Hai công cụ này được kết hợp để có thể tận dụng tích hợp Ruby và Java library
    • JBang: Công cụ giúp chạy nhanh các chương trình Java/Kotlin/Groovy và quản lý dependency
    • JRuby: Phiên bản Ruby chạy trên JVM, kết hợp năng suất của Ruby và hiệu năng của JVM
  • Việc quản lý dependency cần thiết để sử dụng Java library trong JRuby (như Gradle/Maven, v.v.) là phức tạp và khó khăn
    • Quyết định thử nghiệm cách dùng JBang để quản lý dependency một cách đơn giản và chạy script JRuby
  • Thiết lập môi trường dựa trên Docker
    • Sử dụng Docker image dựa trên Amazon Corretto (JDK)
    • Tải và cài đặt JRuby cùng JBang, sau đó thêm vào PATH
    • Bao gồm cả Ruby Gem và Java library thông qua Dockerfile
  • Viết một file RunJRuby.java đơn giản: dùng JBang để quản lý dependency Java và chạy script JRuby
    • Cấu hình môi trường chạy JRuby với ProcessBuilder
    • Truyền dependency Java vào JRuby thông qua cài đặt CLASSPATH
  • Sử dụng Javalin (framework web dựa trên Java) cùng JRuby để xây dựng REST API
    • Thêm xác thực JWT và tích hợp SQLite DB để hiện thực API CRUD
    • Java xử lý các công việc HTTP, DB với các thư viện hiệu năng cao, Ruby xử lý logic nghiệp vụ
  • Kết quả đo hiệu năng
    • Thực hiện benchmark bằng công cụ Apache Benchmark(ab) cho 1500 yêu cầu (đồng thời 25) để đo thời gian phản hồi
    • Kết quả: 95% yêu cầu được xử lý trong vòng 10ms
    • Sử dụng phiên bản Javalin mới nhất và Virtual Threads để mang lại hiệu năng cao
  • Kết hợp ưu điểm của Ruby và Java để đáp ứng cả năng suất lẫn hiệu năng
  • GitHub Repo : jbang-jruby-javalin tham khảo

1 bình luận

 
clickin 2024-12-26

Java+Groovy có rò rỉ bộ nhớ nghiêm trọng như vậy
Mình từng thấy các trường hợp khi chạy script trên JVM, trong một số điều kiện cụ thể, lại xảy ra rò rỉ bộ nhớ; không biết với JRuby thì thế nào?