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をちょっと試してみて、何ができるのかを確かめてみるのがいいだろう。