JRubyクィックスタート
文:Chris Duckett(Builder AU) 翻訳校正:原井彰弘
2007-12-13 10:05:00
RubyとJavaを結びつけてJRubyができあがった。よいものとよいものを組みあわせれば2倍よいものができあがるという良い例だ。
require 'java'
include_class(['javax.swing.JFrame','javax.swing.JLabel','javax.swing.JComboBox','javax.swing.JButton','javax.swing.JPanel','javax.swing.JTable','javax.swing.JTextField', 'java.awt.GridBagLayout', 'java.awt.GridBagConstraints'])
window= JFrame.new
contentPane = window.getContentPane
gridbag = GridBagLayout.new
contentPane.setLayout gridbag
c = GridBagConstraints.new
#setting a default constraint value
c.fill = GridBagConstraints::HORIZONTAL
tagLbl = JLabel.new("Tags")
c.gridx = 0
c.gridy = 0
gridbag.setConstraints tagLbl, c
contentPane.add(tagLbl)
tagModeLbl = JLabel.new("Tag Mode")
c.gridx = 0
c.gridy = 1
gridbag.setConstraints(tagModeLbl, c)
contentPane.add(tagModeLbl)
tagTxt = JTextField.new("plinth")
c.gridx = 1
c.gridy = 0
c.gridwidth = 2
gridbag.setConstraints(tagTxt, c)
contentPane.add(tagTxt)
modeCombo = JComboBox.new
modeCombo.addItem "all"
modeCombo.addItem "any"
c.gridx = 1
c.gridy = 1
c.gridwidth = 1
gridbag.setConstraints(modeCombo, c)
contentPane.add(modeCombo)
searchBtn = JButton.new("Search")
c.gridx = 1
c.gridy = 2
gridbag.setConstraints(searchBtn, c)
contentPane.add(searchBtn)
resTable = JTable.new(5,3)
c.gridx = 0
c.gridy = 3
c.gridwidth = 3
gridbag.setConstraints(resTable, c)
contentPane.add(resTable)
previewLbl = JLabel.new("Preview goes here")
c.gridx = 0
c.gridy = 4
gridbag.setConstraints(previewLbl, c)
contentPane.add(previewLbl)
window.defaultCloseOperation = JFrame::EXIT_ON_CLOSE
window.pack()
window.setVisible(true)
このリストをファイルに保存した場合は、JRubyでは以下のようにして呼び出すことができる。
jruby testwin.rb
表面的に見ると、JRubyとJavaのコードには違いはない。JRubyを用いることによって起こるパフォーマンス上の明らかな大打撃の一方で、同様の機能を持つコードを記述するのに掛かる時間は、JRubyを用いると大幅に短くなる。
JRubyがJITコンパイラになったとき、どの程度実行速度が向上するのかは興味深い。しかし今のところは、パフォーマンスについて気にしないならばJRubyをちょっと試してみて、何ができるのかを確かめてみるのがいいだろう。
- ホワイトペーパー



