Sun Campus Ambassador at UFBA
Descobrindo JRuby
Acredito que muitas pessoas nunca ouviram falar sobre Ruby ou Ruby on Rails, imagina JRuby. Tomando tal desconhecimento como motivação, além de meu gosto por Java e Ruby, resolvi fazer um pequeno post sobre como brincar com JRuby.
Acredito que seja desnecessário fazer um longa introdução sobre Ruby e JRuby, portanto recomendo a leitura de um pequeno post aqui
Vamos ao que interessa! Hoje, pensei em construir uma pequena aplicação que reunisse características fortes de ambas as linguagens:
Java: Construção de interfaces gráficas, utilizando o Matisse é claro!
Ruby: Manipulação de arquivos e simplicidade da sintaxe.
Nossa pequena aplicação simplesmente abrirá um arquivo texto, localizado na pasta do projeto, e exibirá o conteúdo no jTextArea da nossa aplicação Swing. Ao final do artigo, deixarei os links para download.
O primeiro passo é criar um projeto Java, em seguida elaborar um belo JPanel e um jTextArea. Nesta etapa, a parte mais complexa é criar um método que irá receber uma string e adicionará ao textArea, pois o Matisse já facilita boa parte do trabalho.
Com o JRuby nós podemos utilizar bibliotecas Java, logo temos disponíveis todo o poder do nosso bom Java. Vamos entender linha-linha nosso extenoso código (comentários em Ruby é com o caracter #):
#Diretiva abaixo nos dará acesso às bibliotecas Java, como se estivéssemos dizendo: Não vou usar apenas código Ruby!
require "java"
#RubyDesktop.jar contém nosso fragmento Swing da aplicação, logo estamos 'carregando' suas classes
require "RubyDesktop.jar"
#Mesma função do import em Java, caso contrário deveríamos sempre usar o caminho completo
import 'javax.swing.JFrame'
#A classe Painel pertence ao RubyDesktop.jar, sendo a classe que contém os widgets
import 'Painel'
#Variavel em Ruby que diferentemente de Java é dinamicamente tipada.
s = ""
#Abrimos o arquivo teste.txt para leitura
arquivo = File.open("teste.txt","r")
#Intuitivo, não? Para cada linha do arquivo, associo a variável l e concateno com a variável s. Ruby é demais!!
arquivo.each_line do |l|
s.concat(l)
end
arquivo.close
#Começamos agora de fato a brincar com JRuby
#Em Ruby instanciamos um classe da seguinte forma: NomeClasse.new
painel = Painel.new
#O nosso objeto painel e uma instancia de uma classe java, que por sua vez possui métodos. A linha abaixo acessa
#o metodo insertText(String s) da classe Painel. Fiz questao de usar _ (underline) a fim de demonstrar a conveção Ruby
#para declaração de métodos, contudo o método na classe Painel foi declarado seguindo as convenções JavaBeans Fantástico!
painel.insert_text(s)
#Aqui em diante é puramente Java!
frame = JFrame.new("Java + Ruby = JRuby")
frame.getContentPane.add(painel)
#O operador :: serve para acessarmos campos estáticos da classe
frame.setDefaultCloseOperation(javax.swing.JFrame::EXIT_ON_CLOSE)
frame.pack
frame.setSize(300,300)
frame.setVisible(true)
Acredito que podemos concluir o quão simples Ruby é e aliada aos recursos do Java... torna-se fantástico.
JRuby é apenas uma das 'linguagens' que estão sendo incorporadas ao Java tais como: Python (Jython), maiores informações aqui
Como prometido, os links para download:
Aplicação JRuby link1
Aplicação Swing link2
Até o próximo post!!
Posted at 12:11PM Jul 10, 2008 by Ramon Lopes in Personal | Comments[0]
Today's Page Hits: 19