답변:
JRuby는 JVM에서 실행되는 Ruby 구현이고 Matz의 Ruby는 C 구현입니다.
주목해야 할 주요 기능은 다음과 같습니다.
JRuby 위키에 나열된 다른 차이점이 있습니다.
나는 GIL 과 관련 하여이 질문에 대한 모든 답변에서 중요한 것이 빠져 있다는 사실에 놀랐습니다 .
esp에 관심을 가져야 할 주요 차이점입니다. Rails로 구축 된 것과 같은 웹 애플리케이션에서는 진정한 동시성 ( "글로벌 통역사 잠금"무료)이 있습니다. JRuby로 두 개의 스레드가 실행 중이면 (예 : 사용자 요청 2 개 제공) 단일 프로세스 내에서 동시에 실행될 수 있지만 MRI에는 Ruby 코드를 병렬로 실행하지 않는 GIL (1.9의 기본 스레드 포함)이 있습니다.
응용 프로그램 개발자에게는 JRuby를 고려할 때 가장 먼저 염두에 두어야 할 것이 있습니다. JRuby는 config.threadsafe!
코드와 보석 코드가 "정확하게"스레드로부터 안전해야합니다.
틀릴 수도 있지만 일반적인 RoR로는 할 수없는 방식으로 JRuby on Rails 앱을 패키징 할 수 있다고 생각합니다 .Mingle 또는 이와 유사한 것을보십시오. 바지를 떨어 뜨리거나 코 모노를 열지 않고도 판매 할 수 있습니다.
즉, 나는 RoR 패키징에 익숙하지 않으므로 나를 붙잡아 두지 마십시오. :)
여기에 이미 훌륭한 답변이 있습니다.
eebbesen은 이미 기본 사항을 다루었 고 kares (자신!)는 JRuby에 GIL이 없다고 말했습니다.
좀 더 실용적인 관점에서 추가하고 Ruby on Rails에서 앱을 시작한 다음 성능상의 이유로 JRuby로 마이그레이션했습니다.
두 가지 주요 성능 이점이있었습니다. JRuby는 일부 상황에서 Ruby보다 단순히 더 빠르거나 빠릅니다. 그리고 두 번째, 글로벌 통역사 잠금 장치가 없기 때문에 멀티 스레딩을 수행 할 수있었습니다. .
매우 큰 Ruby on Rails 앱은 한 시간, 보석 등으로 포팅되어 실행되었습니다. 유일한 실제 결함은 Java의 정규 표현식이 Ruby의 정규 표현식과 약간 다르다는 것입니다. 그것은 JRuby 측의 놀라운 업적입니다.