Eu não entendo completamente o que estou perguntando (risos!), Bem, no sentido de se isso é possível, é isso. Se não for, desculpe.
Suponha que eu tenha um programa Java. Tem uma Main
e uma JavaCalculator
classe. JavaCalculator
tem algumas funções básicas como
public int sum(int a,int b) {
return a + b
}
Agora, suponha que eu tenha um arquivo ruby. Chamado MyProgram.rb
.
MyProgram.rb
pode conter qualquer coisa que você poderia esperar de um programa ruby. Vamos supor que ele contenha o seguinte:
class RubyMain
def initialize
print "The sum of 5 with 3 is #{sum(5,3)}"
end
def sum(a,b)
# <---------- Something will happen here
end
end
rubyMain = RubyMain.new
Boa. Agora, então, você já deve suspeitar do que eu quero fazer:
- Eu quero executar meu programa Java
- Eu quero que ele execute o arquivo Ruby
MyProgram.rb
- Quando o programa Ruby é executado, ele cria uma instância de
JavaCalculator
, executa asum
função que possui, obtém o valor e depois imprime. - O arquivo ruby foi executado com sucesso.
- Eu quero que ele execute o arquivo Ruby
- O programa Java fecha.
Nota : O "criar uma instância de JavaCalculator
" não é totalmente necessário. Eu ficaria satisfeito em apenas executar uma sum
função, digamos, da Main
classe.
Minha pergunta: isso é possível? Posso executar um programa Java que execute internamente um arquivo Ruby capaz de comandar o programa Java para fazer certas coisas e obter resultados? No exemplo acima, o arquivo Ruby pede ao programa Java que faça uma soma e forneça o resultado.
Isso pode parecer ridículo. Eu sou novo nesse tipo de coisa (se é possível, é isso).
Por que estou perguntando isso?
Eu tenho um programa Java, que é algum tipo de mecanismo de jogo. No entanto, meu público-alvo é um monte de codificadores Ruby. Eu não quero que eles aprendam Java. Então imaginei que talvez o programa Java pudesse simplesmente oferecer a funcionalidade (capacidade de criar janelas, exibir sprites, reproduzir sons ...) e então, meu público-alvo pode simplesmente codificar com Ruby a lógica, que basicamente pede ao meu mecanismo Java que faça coisas como exibir sprites ou tocar sons.
Foi quando pensei em perguntar isso.
fonte
Respostas:
O que você provavelmente está procurando é o JRuby -> http://jruby.org/
O JRuby é uma implementação Ruby compatível com todos os recursos na Java Virtual Machine. De acordo com alguns rubiístas, também é o mais rápido (supondo que você esteja executando em uma VM compatível com Java 7). O JRuby pode chamar as bibliotecas Java e receber valores de retorno dessas chamadas. Em resumo, você pode ter o melhor dos dois mundos.
fonte
Desde que você parece não acreditar em nós.
Veja como executar o código ruby a partir do Java, usando o JRuby. O JRuby não é “uma ferramenta diferente”, é apenas o arquivo JAR que você precisa para executar o Ruby sobre o Java. É tão simples quanto
Como você pode ver, é muito inteligente traduzir da convenção de nomenclatura de Ruby
hello_world
para JavagetHelloWorld
.fonte
"JRuby 1.7.2 Complete.jar"
arquivo em jruby.org/download (você também encontrará instalações de idiomas na mesma página, que são úteis para o desenvolvimento, mas seu sistema final exigirá apenas o complete.jar!)