Jruby: 자바 와 루비 를 한 가족 으로 만 들 기
여기 JRUBY 의 최신 버 전 으로 압축 을 풀 고 환경 변 수 를 추가 합 니 다.
%jruby%/bin->path
%jruby% ->JRUBY_HOME
다음은 명령 행 에서 "jruby - version"을 실행 하면 Jruby 가 올 바 르 게 작 동 하 는 지 테스트 할 수 있 습 니 다.
D:\software\jruby>jruby -version
ruby 1.8.5 (0) [java]
jruby 의 samples 디 렉 터 리 에서 Jruby 기능 을 보 여 주 는 예제 Ruby 프로그램 을 찾 을 수 있 습 니 다.첫 번 째 예제 로 서 아래 의 자바 2. rb 예제 를 볼 수 있 습 니 다.이 예제 에는 다음 루비 코드 가 포함 되 어 있 습 니 다.
require "java"
filename = "./samples/java2.rb"
fr = java.io.FileReader.new filename
br = java.io.BufferedReader.new fr
s = br.readLine
print "------ ", filename, "------
"
while s
puts s.to_s
s = br.readLine
end
print "------ ", filename, " end ------
";
br.close
첫 번 째 줄 코드 는 Jruby 의 자바 지원 을 시작 하고 Ruby 프로그램 이 자바 류 를 사용 할 수 있 도록 합 니 다.
이 프로그램 은 파일 './samples/java2. rb' 를 가리 키 는 java. io. FileReader 를 정의 합 니 다.그리고 자바. io. BufferedReader 가 FileReader 를 통 해 읽 은 데 이 터 를 버퍼 링 하 는 데 사 용 됩 니 다.이 프로그램 은 이 파일 에서 모든 코드 를 읽 고 콘 솔 로 출력 합 니 다.다음은 이 Ruby 스 크 립 트 를 Jruby 로 실행 한 출력 결과 입 니 다.
D:\software\jruby>jruby samples/java2.rb
------ ./samples/java2.rb------
require "java"
filename = "./samples/java2.rb"
fr = java.io.FileReader.new filename
br = java.io.BufferedReader.new fr
s = br.readLine
print "------ ", filename, "------
"
while s
puts s.to_s
s = br.readLine
end
print "------ ", filename, " end ------
";
br.close
------ ./samples/java2.rb end ------
D:\software\jruby>
지금까지 Jruby 를 사용 하여 Ruby 스 크 립 트 를 실행 할 수 있 습 니 다.이 스 크 립 트 는 자바 클래스 를 사용 하여 파일 을 읽 고 내용 을 출력 할 수 있 습 니 다.이것 은 Jruby 가 루비 사용자 에 게 보 여 준 강력 한 개념 이다.
Jruby 에서 자바 클래스 사용 하기 (이름 충돌 문제 포함)
이제 예제 하 나 를 실행 할 수 있 으 니 Jruby 가 Ruby 프로그램 에서 자바 류 를 어떻게 사용 할 수 있 는 지 살 펴 보 자.Jruby 가 제공 하 는 가장 중요 한 방법 은 Kernel\# include 입 니 다.class 방법.이 방법 은 Ruby 가 자바 클래스 를 다음 과 같이 사용 할 수 있 도록 합 니 다.
require "java"
# Include Java's FileReader
include_class "java.io.FileReader"
filename = "./samples/java2.rb"
fr = FileReader.new filename
그러나 자바 류 와 Ruby 류 사이 에 이름 충돌 문제 가 있 을 수 있 습 니 다.그 중에서 문자열 의 사용 은 하나의 예 이다.자바 에 서 는 자바 util. String 을 제공 하고 Ruby 에 서 는 Kernel::String 을 제공 합 니 다.이 이름 충돌 문 제 를 해결 하기 위해 서 는 이 종 류 를 포함 할 때 이름 을 바 꿀 수 있 습 니 다. - 코드 블록 을 include 에 전달 합 니 다.class 방법 호출:
require "java"
# Include Java's String as JString
include_class("java.lang.String") { |package, name| "J" + name }
s = JString.new("Hello World from JRuby!")
puts s
자바 클래스 정 의 를 포함 하 는 Ruby 모듈 을 정의 함으로써 이 이름 충돌 을 피 할 수 있 습 니 다.
require "java"
module JavaLang
include_package "java.lang"
end
s = JavaLang::String.new("Hello World from JRuby!")
puts s
자바 Hello. rb 는 자바 의 HashMap 을 사용 하여 세 개의 문자열 을 저장 하고 인쇄 하 는 예제 프로그램 을 제공 합 니 다.이 프로그램의 재 미 있 는 점 은 Ruby 의 java. util. set (java. util. HashMap. keyset () 방법 으로 되 돌아 오 는 each 방법 을 호출 하 는 것 입 니 다.이 'each' 방법 을 통 해 되 돌아 온 결과 키 를 해당 코드 블록 에 전달 한 다음 이 코드 블록 은 이 키 를 사용 하여 해당 문자열 을 얻 고 출력 할 수 있 습 니 다.
require "java"
module JavaLang
include_package "java.lang"
end
include_class("java.util.HashMap") { |pkg, name| "J" + name }
s = JavaLang::StringBuffer.new("Hello Java World")
puts s.append(", I love JRuby")
m = JHashMap.new()
m.put("java", "Java")
m.put("ruby", "Ruby")
m.put("jruby", "JRuby")
puts m
m.keySet().each{|key|puts m.get(key)}
다음은 Jruby 를 사용 하여 실행 할 때의 출력 결과 입 니 다.
D:\software\jruby\samples>jruby javaHello.rb
Hello Java World, I love JRuby
{java=Java, ruby=Ruby, jruby=JRuby}
Java
Ruby
JRuby
D:\software\jruby\samples>
자바 로 작 성 된 위 와 같은 프로그램 은 다음 과 같 습 니 다.
StringBuffer s = new StringBuffer("Hello Java World");
s.append(", I love JRuby");
HashMap m = new HashMap();
m.put("java", "Java")
m.put("ruby", "Ruby")
m.put("jruby", "JRuby")
for (String key: m.keySet()) {
println(m.get(key));
}
Jruby 에서 스윙 을 사용 합 니 다.
Swing 은 개발 자가 자바 언어 로 그래 픽 프로그램 을 만 들 수 있 도록 하 는 GUI 프레임 워 크 입 니 다.다음은 예제 프로그램 입 니 다. 자바 스윙 Hello. rb 는 자바 스윙 을 사용 하여 메 시 지 를 인쇄 합 니 다.
require 'java'
include_class "javax.swing.JFrame"
include_class "javax.swing.JLabel"
frame = JFrame.new()
jlabel = JLabel.new("Hello from JRuby with Swing")
frame.getContentPane().add(jlabel)
# frame.content_pane.add(label)
frame.pack()
frame.setVisible(true)
frame.visible = true
명령 행 에서 이 프로그램 을 다음 과 같이 실행 합 니 다.
D:\software\jruby\samples>jruby javaSwingHello.rb
"Hello from Jruby with Swing"텍스트 가 있 는 새 창 이 나타 납 니 다.
본문 인용:http://news.e800.com.cn/articles/developer/java/200611/1163036429062.html
저자: 주선 충 옮 김 천극 개발
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.