4 Punkte von xguru 2024-12-26 | 1 Kommentare | Auf WhatsApp teilen
  • JRuby kombiniert die Produktivität von Ruby mit der Performance der JVM, und JBang bietet eine unkomplizierte Verwaltung von Abhängigkeiten sowie eine einfache Ausführungsumgebung.
    • Beide Werkzeuge lassen sich kombinieren, um Ruby- und Java-Bibliotheken gemeinsam zu nutzen.
    • JBang: Ein Werkzeug zum einfachen Ausführen von Java/Kotlin/Groovy-Programmen und zur Verwaltung von Abhängigkeiten
    • JRuby: Eine auf der JVM laufende Ruby-Implementierung, die Rubys Produktivität mit JVM-Performance verbindet
  • Die für die Nutzung von Java-Bibliotheken in JRuby nötige Abhängigkeitsverwaltung (z. B. Gradle/Maven) ist komplex und aufwendig.
    • Wir haben JBang genutzt, um die Abhängigkeiten einfach zu verwalten, und ausprobiert, wie sich JRuby-Skripte ausführen lassen.
  • Einrichtung der Docker-basierten Umgebung
    • Ein Docker-Image auf Basis von Amazon Corretto (JDK) wurde verwendet.
    • JRuby und JBang wurden heruntergeladen, installiert und dem PATH hinzugefügt.
    • Sowohl Ruby-Gems als auch Java-Bibliotheken werden über ein Dockerfile eingebunden.
  • Eine einfache RunJRuby.java wurde erstellt: Java-Abhängigkeiten per JBang verwalten und JRuby-Skripte ausführen
    • Die JRuby-Ausführungsumgebung mit ProcessBuilder eingerichtet
    • Die Java-Abhängigkeiten wurden per CLASSPATH an JRuby übergeben.
  • Einsatz von Javalin (Java-Webframework) zusammen mit JRuby zum Aufbau einer REST-API
    • JWT-Authentifizierung hinzugefügt und eine CRUD-API mit SQLite-Integration implementiert.
    • In Java wurden Hochleistungsbibliotheken für HTTP- und Datenbankoperationen genutzt, in Ruby die Geschäftslogik umgesetzt.
  • Ergebnis des Performancetests
    • Durchführung eines Antwortzeittests mit 1.500 Anfragen und 25 parallelen Verbindungen mithilfe von Apache Benchmark (ab).
    • Ergebnis: 95 % der Anfragen wurden innerhalb von 10 ms verarbeitet.
    • Durch aktuelle Javalin-Versionen und Virtual Threads wird eine hohe Leistung erreicht.
  • Die Vorteile von Ruby und Java werden kombiniert, sodass sowohl Produktivität als auch Performance erfüllt sind.
  • GitHub-Repo: jbang-jruby-javalin als Referenz

1 Kommentare

 
clickin 2024-12-26

Java+Groovy: Der tödliche Memory Leak
Ich habe bereits gesehen, dass beim Ausführen von Skripten auf der JVM unter bestimmten Bedingungen Memory-Leaks auftreten können; ich frage mich, wie es bei JRuby aussieht.