2008-09-30 8 views

답변

149

JRuby는 JVM에서 실행되는 루비 구현이지만 Matz의 루비는 C 구현입니다.

  1. JRuby를 자바 VM의 실행과 컴파일이나 자바 바이트 코드로 아래로 해석 것 중 하나주의해야 할

    주요 기능은 다음과 같습니다.

  2. JRuby는 Java 코드와 통합 할 수 있습니다. java 클래스 라이브러리 (.jar)가 있다면 JRuby에서 루비 코드 내에서이를 참조하고 사용할 수 있습니다. 다른 방향에서 자바 내에서 Jruby 코드를 호출 할 수도 있습니다. JRuby는 JVM 및 애플리케이션 서버 기능을 사용할 수도 있습니다.
  3. JRuby는 보통 Sun의 glassfish 또는 Tomcat 웹 서버와 같은 Java 응용 프로그램 서버에서 호스트됩니다.
  4. JRuby에서 네이티브 루비 보석을 사용할 수는 없지만 대부분의 유명한 루비 라이브러리에는 jruby 구현이 있습니다.

거기 JRuby를 위키에 나와있는 다른 차이점은 다음과 같습니다

+0

고마워요, 제가 찾고있는 모든 것에 대한 답변입니다.:) – epochwolf

+4

아, 그리고 1.9보다 약간 느리게 실행됩니다. – rogerdpack

+3

또한 JRuby에는 실제 네이티브 OS 스레드가 있어야합니다. 내가 말한대로 ... –

3

대부분 동일해야합니다. jRoR에서는 RoR에없는 물건에 액세스 할 수 있습니다. 일반적으로 주로 배포 문제입니다.

그러나 RoR 앱이 JVM에서 실행되는 동등 라이브러리가없는 기본 라이브러리를 사용하면 고통이 될 수 있습니다. 그러나 대부분의 libs는 비 네이티브 버전을 사용할 수 있습니다 (적어도 내가 만났던 인기있는 것들).

7

내가 잘못 될 수있다,하지만 난 당신이 레일에 JRuby를 패키지 할 수 있다고 생각 당신이 일반 RoR로 할 수없는 방식으로 응용 프로그램 - 어울려 또는 비슷한보세요. 바지를 떨어 뜨리지 않고 판매하거나 코모노를 여는 것이 가능합니다. 말했다

, 나는 나를 잡아 :

+1

당신은이 문제에 대해 절대적으로 맞습니다. , 당신이 Rawr이나 Roir 젬과 같은 것을 필요로 할지라도 (Mingle을 사용한 마지막 시간에는 Ruby 파일을 모호하게 만들었습니다 ...). –

47

을 내가 GIL관련이 질문에 대한 모든 대답에서 누락 중요한 것은, 거기에 놀랐어요 RoR에 포장 충분히 익숙하지 않은, 그래서 그나마 .

esp에 대해주의해야 할 주요 차이점은 무엇입니까? Rails로 빌드 된 것과 같은 웹 응용 프로그램에서는 실제 동시성 ("Global Interpreter Lock"무료)입니다. JRuby에서 두 개의 스레드가 실행 중일 때 (예 : 2 개의 사용자 요청을 처리하는 경우) 단일 프로세스 내에서 동시에 실행할 수 있지만 MRI에는 Ruby 코드를 병렬로 실행하지 못하게하는 GIL (1.9의 원시 스레드 포함)이 있습니다.

응용 프로그램 개발자는 JRuby를 고려할 때 제일 먼저 염두에 두어야 할 것이 있습니다. 실제로는 config.threadsafe!으로 빛나기 때문에 코드 (및 gems 코드)가 "진정한"스레드 안전성을 유지해야합니다.