- JRuby combina a produtividade do Ruby com o desempenho da JVM, enquanto o JBang oferece um ambiente de execução e gerenciamento de dependências simplificado
- Ao combinar as duas ferramentas, é possível aproveitar de forma integrada bibliotecas Ruby e Java
- JBang: ferramenta para executar programas Java/Kotlin/Groovy e gerenciar dependências com simplicidade
- JRuby: implementação do Ruby que roda sobre a JVM, unindo produtividade do Ruby e desempenho da JVM
- O gerenciamento de dependências necessário para usar bibliotecas Java no JRuby (como Gradle/Maven) é complexo e difícil
- Vamos experimentar uma forma de gerenciar dependências com JBang de maneira simples e executar scripts JRuby
- Configuração de ambiente baseada em Docker
- Usar uma imagem Docker baseada no Amazon Corretto (JDK)
- Baixar e instalar JRuby e JBang e adicioná-los ao PATH
- Incluir tanto gems Ruby quanto bibliotecas Java no Dockerfile
- Criar um RunJRuby.java simples: gerenciar dependências Java via JBang e executar scripts JRuby
- Configurar o ambiente de execução do JRuby com
ProcessBuilder
- Enviar dependências Java ao JRuby por meio da configuração do
CLASSPATH
- Usar Javalin (framework web baseado em Java) junto com JRuby para criar uma API REST
- Adicionar autenticação JWT e integrar com SQLite para implementar uma API CRUD
- Em Java, usar bibliotecas de alto desempenho para operações HTTP e banco de dados, enquanto no Ruby tratar da lógica de negócio
- Resultados de testes de desempenho
- Executar testes de tempo de resposta com Apache Benchmark (ab) em 1500 requisições (25 simultâneas)
- Resultado: 95% das requisições foram processadas em até 10 ms
- Uso de Javalin atualizado e Virtual Threads para oferecer alto desempenho
- Unir os pontos fortes de Ruby e Java para atender tanto à produtividade quanto ao desempenho
- Consulte o repositório no GitHub: jbang-jruby-javalin
1 comentários
Java+Groovy: aquele memory leak fatal
Já vi casos em que ocorre memory leak em determinadas condições ao executar scripts na JVM, então fiquei curioso sobre como é com o JRuby.