4 คะแนน โดย xguru 2024-12-26 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • JRuby เป็นเทคโนโลยีที่รวมความได้เปรียบด้านความคล่องตัวของ Ruby เข้ากับประสิทธิภาพของ JVM ขณะที่ JBang ให้การจัดการ dependency และสภาพแวดล้อมการรันที่เรียบง่าย
    • การผสานเครื่องมือทั้งสองเข้าด้วยกันทำให้สามารถใช้ไลบรารี Ruby และ Java ร่วมกันได้
    • JBang: เครื่องมือสำหรับรันโปรแกรม Java/Kotlin/Groovy และจัดการ dependency ได้อย่างง่ายดาย
    • JRuby: การใช้งาน Ruby ที่ทำงานบน JVM ซึ่งผสานความคล่องตัวของ Ruby เข้ากับประสิทธิภาพของ JVM
  • การจัดการ dependency ที่จำเป็นในการใช้ไลบรารี Java กับ JRuby (เช่น Gradle/Maven ฯลฯ) นั้นค่อนข้างซับซ้อนและยุ่งยาก
    • จึงทดลองใช้ JBang เพื่อจัดการ dependency อย่างง่าย และตรวจสอบวิธีรันสคริปต์ JRuby
  • การตั้งค่าสภาพแวดล้อมบน Docker
    • ใช้ Docker image ที่อิงตาม Amazon Corretto (JDK)
    • ดาวน์โหลดและติดตั้ง JRuby กับ JBang แล้วเพิ่มลงใน PATH
    • รวม Ruby Gem และไลบรารี Java ทั้งหมดผ่าน Dockerfile
  • สร้าง RunJRuby.java อย่างง่าย: จัดการ dependency ของ Java ผ่าน JBang และรันสคริปต์ JRuby
    • กำหนดสภาพแวดล้อมการรัน JRuby ด้วย ProcessBuilder
    • ส่ง dependency ของ Java ให้กับ JRuby ผ่านการตั้งค่า CLASSPATH
  • ใช้ Javalin (เว็บเฟรมเวิร์กบน Java) ร่วมกับ JRuby เพื่อสร้าง REST API
    • เพิ่มการยืนยันตัวตนด้วย JWT และสร้าง CRUD API โดยรวมกับ SQLite DB
    • ใน Java ใช้ไลบรารีประสิทธิภาพสูงสำหรับงาน HTTP และฐานข้อมูล ส่วน Ruby ใช้ประมวลผลตรรกะทางธุรกิจ
  • ผลการทดสอบประสิทธิภาพ
    • รันการวัดเวลาตอบสนองของคำขอ 1,500 รายการ (พร้อมกัน 25 รายการ) ด้วยเครื่องมือ Apache Benchmark (ab)
    • ผลลัพธ์: คำขอ 95% ถูกประมวลผลภายใน 10ms
    • ใช้ Javalin เวอร์ชันล่าสุดและ Virtual Threads เพื่อให้ได้ประสิทธิภาพสูง
  • ผสานข้อดีของ Ruby และ Java เข้าด้วยกันเพื่อให้ได้ทั้งความคล่องตัวและประสิทธิภาพ
  • GitHub Repo : jbang-jruby-javalin เพื่อการอ้างอิง

1 ความคิดเห็น

 
clickin 2024-12-26

Java+Groovy ความรั่วไหลของหน่วยความจำที่ร้ายแรง
เคยเห็นกรณีที่เกิดการรั่วไหลของหน่วยความจำเมื่อรันสคริปต์บน JVM ในบางเงื่อนไขมาก่อน จึงสงสัยว่า jruby จะเป็นอย่างไร