Primeiramente, vamos usar o IDE Eclipse Helios (versão 3.6) com o suporte a Python instalado. Criamos um Projeto Java com o nome de "JavaScriptEmbedded" como mostram as figuras a seguir:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEil-pUbXlWHulr6n1bduEjQuinAsJfhzX585JKEJovcbEOvvF1NduUhkrIPGMRqkiDhTIF_3b0xQJKAK-l7LakGrOGFiy-4A0Trqp7bw9MnkSHccJM6Xwzn_EXbNujETURdEiM6-cDdcK6N/s400/Configurar_distribuicao_Java_01.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQu5D5IzXiYkEt793tdJQhFUbNtPYHz-H6rEUu9Z7LHBao054uKH0Tq_QG0FwPW7h8vvXjQAwGAk0d6UXvNX50rYs0xtlQ175OcQg7DyymR2aayq5KWQ2TFj_VYVGG_Z-BXHKArLM2ImEL/s400/Configurar_distribuicao_Java_02.png)
Agora criaremos o arquivo Test.java para poder acessar os scripts das linguagens de scripts como mostra abaixo:
Arquivo Test.java
----------------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Test {
/**
* @param args
*/
public static void main(String... args) {
if(args.length < 2) {
throw new IllegalArgumentException("Precisa fornecer a linguagem de script usada e o arquivo do script!");
}
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine scriptEngine = scriptEngineManager.getEngineByName(args[0]);
if(scriptEngine == null) {
throw new IllegalArgumentException("Suporte para a linguagem de script " + args[0] + " inexistente");
}
String script = buildScript(args[1]);
List
for (int i = 2; i < args.length; i++) {
doubleList.add(Double.parseDouble(args[i]));
}
scriptEngine.put("doubleList", doubleList);
try {
scriptEngine.eval(script);
} catch (ScriptException e) {
e.printStackTrace();
}
}
public static String buildScript(String file) {
try {
Reader reader = new BufferedReader(new FileReader(file));
return getString(reader);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
public static String getString(Reader reader) throws IOException {
int read = reader.read();
Collection
while (read != -1) {
charList.add((char) read);
read = reader.read();
}
StringBuffer strBuffer = new StringBuffer(charList.size());
for (Character character : charList) {
strBuffer.append(character);
}
return strBuffer.toString();
}
}
----------------------------------------------------------------------------
A idéia principal desse arquivo ".java" é o usuário fornecer dois parâmetros na linha de comando, um indica o nome da engine da linguagem de script usada e o arquivo da linguagem de script usado.
Esse nome é obtido pelo método "getEngineName()" do objeto da classe ScriptEngineFactory que por sua ver, é uma das fabricas de engines que são obtidas pelo método "getEngineFactories()" do objeto da classe ScriptEngineManager. Mais informações, veja no seguinte artigo desse mesmo blog:
http://josepojr.blogspot.com/2010/01/introducao-java-scripting-api-jsr-223.html
Por exemplo, para a linguagem Python teriamos os seguintes argumentos:
Argumento 1 - "python"
Argumento 2 - "scripts/Script.py"
No projeto Java criado, vamos criar um diretório chamado "scripts" aonde estarão os scripts a serem executados pela JSR-223. Nesse artigo, vamos trabalhar com a linguagem Python, portanto, criamos o arquivo "script.py" para a linguagem Python. Para mais detalhes veja a figura a seguir:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiArew-kd1W66BztsFvo3wcTtw-N2HfVGMkH3OZBfqqXF9F3IsIp5WV3mwdhvSn4JFJl4S4KuT4p7Chy7EXuc7w1R5P0gkqJEVdmhFyOnlDTKorxxVaJIyv4xjd8s-3vSgfiizgdq-xXcUr/s400/Configurar_distribuicao_Java_03.png)
Além dos dois parâmetros fornecidos ao programa Java em linha de comando, os demais parâmetros que devem ser númericos, serão usados para o cálculo da média pelo script.
Arquivo - Script.py
----------------------------------------------------------------------------
auxList = list(doubleList)
sum = 0
for num in auxList:
sum += num
if(len(auxList) > 0):
print u'A média: ' + str(sum/len(auxList))
----------------------------------------------------------------------------
Configuração da Execução de Aplicação Java
O objetivo dessa etapa é construir uma configuração que será usada dentro do Eclipse para executar o programa Java criado e também, para numa outra etapa ser usado na exportação do programa Java em arquivo Jar. Nas figuras a seguir, veremos como construir a configuração de execução de programas Java no Eclipse.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjFK7nJH592yxEmm1tDXxcz5jlwxdS14sRx8CHP1bKF1v-4mqZE8Qae3Crebh7kLnp6htqA00kBOCXfwQJm80CA2thZe2RLX08gFdO84-HdAnOxGE_nV6grRY3bYKW4CvwanbC7y3T4UhsK/s400/Configurar_distribuicao_Java_04.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtBvvVoTIlu9EvisdiTIZCQxbpdZ9QOCQL-shvC1ldg1fKgUBEm6qD2ekMFRE5K4aqKTezmI8Q9x1pP-VNL7MuQUhzeSKrzeDUzjpEQpbwlYVioxOlERpX5WIdE8HVdh1cOiTz-jAVQxF_/s400/Configurar_distribuicao_Java_05.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEino5MBSUOxXwuyymZc2-IyQotFJc-fb6euPqiVKjleVvdnhBzAfbzVEeY1XEXLUrSJQuLt-F514z0WGFveIkA-7YSbA8NhLLZvFPt6kT5Vsn15cdoD1_rzBbDHGI0YdMrh77_6rjdzoOrg/s400/Configurar_distribuicao_Java_06.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixU8YyBi0EgLxtb99W1S2BlXUWhSGoDuStMH8Owis__RvhM_NMBBVVE-VZ9svkkLS5kVLPit0qYyw6d-29QkzHWhsRrTJa_awzqz3VMMA0uTjdydA3jgYJDxMxwXDDUIx04WozGVY9gePt/s400/Configurar_distribuicao_Java_07.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoQTYyAFEQQqTMwtOY9pUsPxkR5bo9EYzmDEsc6nnFwMXZnH6tnSE42FvShnl6dFZxS__9F8YNsVVSPI7uJdvCf6UiAUrEMRv08pe5xqDLVUPnxpeS0dzZ-7-6r-vUbQNqKXbhoSbF2zKY/s400/Configurar_distribuicao_Java_08.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihnBxwfdMx6xdQxu_QWz7eNvAtVShngkYW9iBNWa9ZJgFaKH1f1kcVlMvZH-dpdMbAms2JgB_Hquk3_GZfCX4Etkahqh_NC0llPnxj8fygJLHy6d7e4gtGeTBccLhfuj_vt5Wvt6fIz_gn/s400/Configurar_distribuicao_Java_09.png)
Exportando aplicação Java em arquivo Jar
Nessa etapa, vamos configurar e exportar o projeto Java para um arquivo Jar, como mostram as figuras a seguir:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1PeeDzvEhUfH_3-Nf2JoslBC7dxw1l4NvWzGnhcJcweW5U9K-qKHRSF9tC-4a3cKxAr2HrfLjpxA3TGxv3B_swjBnSBfcOY-7gJhKp9aU1AD-J3oNr8__pk3eswtRCX-6AVhDqUswXuNN/s400/Configurar_distribuicao_Java_14.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi08CrIg9wa-TeVKRNaJPPS9XQPadhqlSRrJrbQB8X_SFSor0lXGoF7ZBcCxlc6-Mojs9SmtYAOkhQFjxvoOtHhyphenhyphenp1-X0B2EQmhq0WpULnCRRft4KWSYcSVCn4wC9IWf3FyDswFvtOT0-AV/s400/Configurar_distribuicao_Java_11.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfqx4vWTBv8GCcyTOcfQjPQ3PHofleXT0B9FFYyiivC6tT3JlNX5V3oZpFloJAZrnqwv79-EhF-3QAS8X5bH6_jy-fNLRc1vTpy9pTBnp5DuP3bK7KAqSCaNd_I9Fq-9j9qTLP6xM2n3JC/s400/Configurar_distribuicao_Java_12.png)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyF1lFfD2VewGb11Mfs-6OGd2LWg7otqFvfBZkhQd9E6OIOI6O9rL7FdP7pcier3B6hQ8_bfXyQi_rO1rVfyXhIAZ300jSSB7_UE7bi5mwieGCXE5KPquLGy1OFBgrxL8CnBp420QzhKR-/s400/Configurar_distribuicao_Java_13.png)
Agora que temos o arquivo Test.jar gerado e armazenado no diretório /home/user/JavaExport conforme foi descrito nas figuras anteriores, precisamos copiar os seguintes diretórios dentro do diretório raiz da instalação Jython para o diretório /home/user/JavaExport
- Lib
- extlibs
A pasta scripts também deve ser copiada para /home/user/JavaExport, lembrando que dentro dessa pasta de scripts deve estar o arquivo Script.py.
Agora, vamos criar o arquivo run.sh (para Linux) ou run.bat (para Windows). O conteúdo do arquivo run.sh (ou run.bat) será o seguinte comando:
java -jar Test.jar python scripts/Script.py 10 20 30 40 50
Também, o arquivo run.sh deve possuir permissão para ser executado, para isso, execute o seguinte comando:
chmod a+x run.sh
Esse comando diz que todos (proprietário, membro do grupo e outros) terão permissão para executar run.sh.
Para executar o arquivo run.sh digite o seguinte comando:
./run.sh
Se ocorrer algum erro, pode usar a opção -verbose para listar todas as classes carregadas, como mostra abaixo:
java -verbose -jar Test.jar python scripts/Script.py 10 20 30 40 50
Com as pastas Lib, extlibs, scripts e arquivos Test.jar, run.sh e run.bat dentro do diretório /home/user/JavaExport, podemos distribuir a aplicação Java sempre transportando todo o conteúdo da pasta JavaExport.
Referências:
Linguagem Python:
http://www.python.org/
Plugin Python para Eclipse:
http://pydev.org/
Nenhum comentário:
Postar um comentário