Escolar Documentos
Profissional Documentos
Cultura Documentos
br : :
Java + Máxima
Alternativa para Desenvolvimento Científico
Integrando Java à ferramenta algébrica “Maxima”.
xistem algumas informações equivocadas em algumas Assim o maior “preconceito” com o desenvolvimento Java (por
mídias de comunicação deixando a entender que Java parte de desenvolvedores da área científica) é essa disparidade no
não pode ser útil a cientistas que trabalham com uma desempenho entre Java x Linguagens de Baixo Nível se tratando de
“massa” muito grande de dados e que precisem de várias operações operações aritméticas.
aritméticas.
Este artigo vem propor uma forma alternativa de solução de ex-
De fato, Java não tem a mesma performance que linguagens de bai- pressões aritméticas para softwares desenvolvidos na linguagem de
xo nível como C [7][8] ou a facilidade de programação de Fortran programação Java, utilizando um driver de conexão com o pacote
se tratando de operações aritméticas[1]. Talvez seja por causa destes algébrico Maxima de forma a diminuir o tempo de desenvolvimen-
motivos que existam várias ferramentas algébricas desenvolvidas to, e podendo até diminuir o tempo de execução na solução de
em Fortran, C ou Lisp, e pouquíssimas em Java. expressões aritméticas com altíssima confiabilidade nos resultados
das expressões aritméticas.
62
Ciência e Java Segundo Thomas Wang (2000)[3], o padrão IEEE 754 prevê a
definição de ponto flutuante infinitos, infinitos negativo, zero
Quem acha que Java não é presente no mundo científico precisa negativo, e NaN (não um número). Para entender melhor esse
se informar melhor, pois existem várias ferramentas científicas que padrão, verifique a referência [12]
possuem módulos em Java ou que auxiliam a comunidade de de-
senvolvimento científico Java, como, por exemplo:
- Maple[6]: pacote algébrico proprietário que tem interface gráfica Mas, para não haver problemas de execução de softwares Java em
em Java; JVMs anteriores à 1.2, existe o modificador strictfp que atua na
- Oculus[5]: a representação gráfica interativa de dados financeiros compilação Java (geração de byte codes) obrigando que durante
e eventos, também tem uma implementação Java; sua execução, seja adotada grande parte das regras do padrão IEEE
- JScience[2]: pacote Java científico com suporte para várias áreas 754 para pontos flutuantes, mesmo que a aplicação seja executada
do conhecimento: matemática, física, sociologia, biologia, astro- em JVMs anteriores a 1.2. Abaixo é demonstrado um exemplo de
nomia, economia etc.; utilização do modificador em um método:
- Joone[14]: pacote com ferramentas para se trabalhar com redes
neurais escrito em Java;
- jFuzzyLogic[15]: pacote de ferramentas para se trabalhar com public strictfp void teste() {
Lógica Fuzzy escrito em Java; //...
-JEP Java: Math Expression Parser[19]: pacote Java para analisar e }
avaliar expressões matemáticas.
Além destes exemplos, existem vários indícios de que a utilização Também podemos utilizar este modificador para toda uma classe:
de Java no meio científico vem aumentando, como, por exemplo,
a disponibilização de temas para dissertações em programas de
mestrado[4]. public strictfp class Teste{
//...
Recursos aritméticos da linguagem Java }
63
: : www.mundoj.com.br : :
Segundo GAT, E. (2000)[17], Lisp é muito mais indicada para Utilizando a conexão com a classe ConnectionMaximaGenerica não
operações aritméticas em termos de desempenho que as Lingua- é aberto um canal de streams na instância do objeto da classe, esse
gens C++ e Java. canal é aberto junto com o envio do comando (função aritmética) e
fechado logo após o recebimento da resposta do Maxima.
Para utilizar o Maxima, basta baixar o software no site do
fabricante [16], instalá-lo, executar seu console e digitar a Obs.: com a classe ConnectionMaximaGenerica foram realizados testes
expressão aritmética que quiser dentro de uma função float(); com sucesso em ambientes Windows e Linux.
e pressionar a tecla enter que será retornado o resultado
em números reais e, se for o caso, em números imaginários. Forma prática
Veja o exemplo abaixo, ele retorna o resultado da operação
“sen(45)+cos(45)”: Abaixo segue a forma de utilização da classe ConnectionMaxima,
analogamente à ConnectionMaximaGenerica.Primeiramente se
adiciona o driver às bibliotecas do seu software. Se sua IDE for o
NetBeans, basta você selecionar o projeto de seu software na aba
projetos, clicar com o botão direito em cima no nome do seu pro-
jeto, clicar na opção propriedades, selecionar a opção bibliotecas,
a partir daí adicionar o arquivo maximadriver.jar às bibliotecas do
seu projeto.
64
Software exemplo Nota-se que:
- para a fórmula da densidade populacional, todas as tecnologias
No site da revista, existe para download, um exemplo prático retornaram o mesmo resultado (correto), sendo que a ordem
de utilização do driver proposto neste artigo. Em execução, sua das tecnologias para a velocidade de processamento é a se-
primeira tela (JOptionPane) simplesmente pede que seja digitada guinte: Java + Classe Math, Java + JEP e Java + Máxima;
a URL do arquivo “maxima.bat” em seu diretório raiz. - para a fórmula da energia livre, a tecnologia Java + JEP retornou
o resultado errado e a ordem de velocidade de processamento
continua a mesma;
- para a fórmula da entropia, somente Java + Maxima retornou o
resultado de forma correta, pois a tecnologia Java + JEP retor-
nou um resultado errado, e Java + Classe Math retornou NaN
(provavelmente houve underflow ou overflow).
Figura 4. Software Exemplo – tela 1. Obs1: os resultados obtidos em um computador com o processa-
dor Intel Core 2 Duo T65000 2.1GHz, e memória RAM de 3GB,
Caso o usuário clique em OK, em seguida irá aparecer uma tela no sistema operacional Windows Vista Home Premium 32 bis
em que o usuário deve digitar qualquer expressão aritmética. Service Pack 2.
Considerações finais
Figura 4. Software exemplo – tela 2. Assim como algumas linguagens de alto nível, Java possui limi-
tações quanto a desempenho a respeito de operações aritméticas,
E finalmente, após o usuário clicar em no botão OK, irá aparecer o mas isso não inviabiliza a utilização de Java na ciência, basta esco-
resultado da operação aritmética calculado pelo pacote algébrico lher a melhor forma de se trabalhar com a linguagem. Utilizando
Máxima. o driver proposto, de fato pode haver certa perda de performance
por causa da troca de informações entre as duas aplicações, mas
há um ganho em confiabilidade de resultados, pois, o Maxima
é uma ferramenta matemática de alta confiabilidade usada no
mundo inteiro por cientistas das mais diversificadas áreas do
conhecimento (engenharias, física etc.) e também há um ganho
muito grande no tempo de desenvolvimento, pois o programador
Software exemplo – tela 3. não precisa fazer módulos (sintáticos, semânticos e aritméticos)
necessários para solução de expressões aritméticas•
Comparações entre Java+Maxima, Java+JEP
e Java+Classe Math
Referências
Java+Maxima Java+JEP Java+Math
[1] http://www.developer.com/java/ent/article.php/631201/Java-as-a-Scientific-
Resultado: Resultado: Resultado:
Programming-Language-Part-1-More-Issues-for-Scientific-Programming-in-Java.
Densidade 7.328457504199093, 7.328457504199093, 7.328457504199093,
htm, Acessado em 02/07/2010
Populacional Duração: Duração: Duração:
[2] http://jscience.org/, Acessado em 02/07/2010
2 milissegundos 0 milissegundos 0 milissegundos
[3] http://www.concentric.net/~Ttwang/tech/javafloat.htm, Acessado em
Resultado: Resultado: Resultado: 02/07/2010
7.389237985167935, 2.3835706919459616, 7.389237985167935, [4] http://www.peb.ufrj.br/noticias/2010-05-26-RelacaoTemas2010.pdf, Acessado
Energia Livre
Duração: Duração: Duração: em 02/07/2010
5 milissegundos 2 milissegundos 0 milissegundos [5] http://www.oculusinfo.com, Acessado em 02/07/2010
Resultado: Resultado: Resultado: [6] http://www.maplesoft.com/, Acessado em 02/07/2010
1.091432967835645 0.9992561797106484, NaN, [7] http://www.sbmac.org.br/eventos/cnmac/xxxi_cnmac/PDF/114.pdf, Acessado
Entropia em 02/07/2010
Duração: Duração: Duração:
24 milissegundos 33 milissegundos 0 milissegundos [8] http://www.ukhec.ac.uk/publications/tw/hpcjava.pdf, Acessado em 02/07/2010
[9] http://www.roseindia.net/help/java/s/strictfp.shtml, Acessado em 02/07/2010
[10] http://www.developer.com/java/article.php/3856906/Java-vs-C-The-Perfor-
Junto ao exemplo de utilização do drivermaxima.jar, no site da mance-Showdown.htm, Acessado em 02/07/2010
[11] http://java.sun.com/docs/books/jvms/second_edition/html/Concepts.doc.
revista existe uma classe que realiza testes simples da tecnologia html#24465, Acessado em 02/07/2010
apresentada neste trabalho: Java+Maxima e de outras tecnologias: [12] IEEE, "ANSI/IEEE Std 754-1985, An American National Standard IEEE Standard for
Java + JEP e Java com a classe Math. Tais testes foram realizados Binary Floating-Point Arithmetic", (1985)
de forma a verificar a confiabilidade das tecnologias visando os [13] LINDHOLM, T., YELLIN, F., The Java Virtual Machine Specification, Second Edition,
Sun Microsystems, 1999.
resultados das expressões aritméticas e o tempo de duração que [14] http://sourceforge.net/projects/joone/, Acessado em 02/07/2010
cada tecnologia executou tal processamento. [15] http://jfuzzylogic.sourceforge.net/html/index.html, Acessado em 02/07/2010
[16] http://maxima.sourceforge.net/, Acessado em 02/07/2010
[17] GAT, E. Lisp as an alternative to Java. Intelligence 11(4), pag. 21-24, 2000.
[18] http://www.cs.berkeley.edu/~wkahan/JAVAhurt.pdf, Acessado 07/10/2010
[19] http://sourceforge.net/projects/jep/
65