JRuby 팀은 최신 버전인 JRuby 10을 발표하며 사용자들에게 중요한 개선 사항을 제공합니다. 이번 릴리스의 핵심은 Java 21 지원을 통합하고, JRuby 사용자들이 가장 큰 불만으로 꼽았던 느린 애플리케이션 시작 시간을 해결하는 데 있습니다. JRuby 10은 최신 JVM(Java Virtual Machine) 기술을 적극적으로 활용하여 이러한 문제를 개선하고, 동시에 Ruby 언어와의 호환성을 높여 개발 생산성과 실행 성능을 극대화하고자 합니다.
JRuby 10은 Java 21, 즉 최신 장기 지원(LTS) Java 버전을 지원함으로써 기존 Java 8 지원에서 벗어나 Java 21의 다양한 기능을 통합하기 시작했습니다. 이는 Ruby 사용자들에게 지난 10년간 축적된 JVM의 발전된 기술들을 제공함을 의미합니다. 특히, JRuby의 가장 큰 문제점이었던 시작 시간 개선을 위해 여러 새로운 JVM 기능들이 도입되었습니다. 첫째, OpenJDK 기능인 Application Class Data Store(AppCDS)를 활용하여 시작 시 코드와 메타데이터를 미리 캐싱함으로써 향후 명령어 실행 비용을 절감합니다. 둘째, 실험적 기능인 Project CRaC(Coordinated Restore at Checkpoint)을 통해 실행 중인 프로세스의 체크포인트를 생성하고 이를 복원하여 여러 프로세스를 더 빠르게 시작할 수 있게 합니다. 셋째, Java 프로그램의 시작 시간, 최대 성능 도달 시간 및 메모리 점유율 개선을 목표로 하는 OpenJDK 프로젝트인 Project Leyden의 기능(Leyden 플래그)을 사용 가능해지는 대로 JRuby 런처에 통합할 계획입니다. 이러한 기능들은 –dev 플래그 사용 시 오버헤드 감소와 결합되어 JRuby 역사상 가장 빠른 시작 시간을 제공한다고 개발팀은 밝혔습니다.
성능 향상 측면에서, JRuby 10은 Ruby 3.4와의 호환성을 확보함으로써 Ruby 3.2, Ruby 3.3, Ruby 3.4의 새로운 기능들을 JRuby 10에 구현할 수 있었습니다. 또한, 이전 버전에서는 단순한 Ruby 작업에만 invokedynamic 최적화를 적용했던 ‘중간 단계’의 최적화가 기본값이었던 반면, JRuby 10은 기본적으로 전체 invokedynamic 최적화를 실행합니다. 이는 추가적인 플래그 설정 없이도 JRuby 스크립트 및 애플리케이션에서 최고의 성능을 발휘할 수 있도록 합니다.
결론적으로 JRuby 10은 Java 21 지원과 최신 JVM 기술 도입을 통해 시작 시간과 전반적인 실행 성능을 크게 개선한 중요한 릴리스입니다. AppCDS, CRaC, Leyden과 같은 기능 활용은 JRuby의 고질적인 약점을 보완하며 사용자 경험을 향상시킬 것으로 기대됩니다. 또한, 최신 Ruby 버전과의 높은 호환성과 기본값으로 적용된 전체 invokedynamic 최적화는 JRuby를 사용하는 개발자들에게 더욱 효율적이고 빠른 실행 환경을 제공할 것입니다. 이러한 발전은 JRuby가 Java 플랫폼에서 Ruby 애플리케이션을 실행하는 강력한 대안으로서의 입지를 더욱 강화할 것입니다.