JRubyでjavaのclassを呼び出す

javax.imageioで使える画像フォーマット - 橋本詳解JRubyで書いてみる


test.rb

#!/usr/bin/env jruby
# -*- coding: utf-8 -*-

puts 'jruby start'

require 'java'
import 'java.lang.System'
import 'javax.imageio.ImageIO'

System.out.println("javaのprintln");


puts '---read formats---'
ImageIO.readerFormatNames.each{|n|
  puts n
}

puts '---write formats---'
ImageIO.writer_format_names.map{|n| n.downcase}.uniq.each{|n|
  puts n
}


jruby test.rb

jruby start
javaのprintln
---read formats---
BMP
bmp
jpeg
wbmp
gif
png
JPG
jpg
WBMP
JPEG
---write formats---
bmp
jpeg
wbmp
png
jpg


sugeee!!!
javaのgetter/setterはrubyから使う時はget/setなしの関数名でアクセスできるようになってた(get/setありでもできる)
javaの関数名のキャメルケースで単語を区切るのも、アンダースコアでもアクセスできる。
javax.imageio.ImageIO.getReaderFormatsNames()はString配列を返すが、そのままRubyの配列になるのでmapやuniqやeachで処理できた。

参考:[Think IT] 第3回:RubyからJavaクラスを呼び出してみよう! (1/3)