2012-09-18 3 views
0

Ruby-java bridge JRuby를 사용하여 Java 클래스에서 Ruby 스크립트를 실행하기 위해 런타임을 사용하는 것이 장단점은 무엇입니까? 런타임 JRuby에서의Java에서 Ruby 스크립트를 실행하기위한 런타임과 JRuby

Process process = Runtime.getRuntime().exec("ruby start.rb blue_button_example_data.txt"); 
    try { 
     process.waitFor(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
     return; 
    } 

예를 들어

http://dior.ics.muni.cz/~makub/ruby/

나는 기존의 자바 시스템을 가지고 있기 때문에 내가 부탁하고 우리가 루비 스크립트가있는 시스템과의 통합을하고 우리가 다시하려고 그들 대신에 자바로 다시 작성하십시오. 어떤 접근 방식이 가장 적합한 지 알고 싶습니다.

감사합니다.

+1

Nutter가 작성한 jRuby로 이동하십시오. 단일 handedly 내가 아는 최고의 루비/자바 해커. http://blog.headius.com –

+1

jRuby를 호출하는 것이 더 빠르며 (프로세스 생성 없음), jRuby 자체가 Ruby보다 빠르다고합니다. –

+0

너무 빨리 답변 해 주셔서 감사합니다! 위의 jRuby 예제에 대한 링크는 jruby-engine.jar을 설치하는 방법을 알려주고 있지만 링크가 끊어진 경우 정확한 다운로드 링크를 찾을 수 있습니까? 감사! –

답변

1

사람들이 언급했듯이 JRuby이 더 빠를 것입니다.하지만 더 중요한 것은 JRuby에서 Java 코드를 호출 할 수 있으며 그 반대의 경우도 Java와 더 긴밀하게 통합 할 수 있습니다. 또한 인프라가 동일하게 유지 될 수 있으므로 (Java EE 애플리케이션 서버에 Rails 애플리케이션을 배치 할 수 있기 때문에) Java와 Ruby 간의 원활한 전환을 허용하며 개발자는 점진적으로 두 인터페이스를 전환 할 수 있습니다.

통합에 대한 자세한 내용은 JRuby wiki을 참조하십시오.

JRuby의 단점은 원시 코드를 사용하기 때문에 일부 MRI 보석을 사용할 수 없다는 것입니다.하지만 최근에 차단 된 것은 아닙니다.

+0

답변 해 주셔서 감사합니다. 제가 할 일은 너무 간단합니다. 텍스트 파일을 구문 분석하고 json 형식으로 데이터를 반환하는 루비 스크립트가 있습니다. 우리가 원하는 것은 런타임시 java에서 스크립트를 실행하고 이러한 데이터를 조작하는 것입니다. 이 정보가 주어지면 JRuby와 RunTime을 모두 설치하고 스크립트가 거의 실행되지 않는다는 것을 직접 고려하여 루비 스크립트를 직접 실행하는 것이 좋습니다. –

+2

@AhmadAlkhawaja 자바에서 루비 스크립트를 호출하는 "비용"은 Java 응용 프로그램, 즉 JRuby jar에 추가 jar를 추가하는 것입니다 (Maven을 사용하는 경우 추가 종속성을 추가하는 문제 일뿐입니다). 이 "비용"은 상당히 낮을뿐만 아니라 JVM에서 새 프로세스를 생성하는 것에 대해 걱정할 필요가 없기 때문에 상쇄됩니다. –

+0

대단히 감사합니다! –

관련 문제