O uso de "applets" Java na Internet
para cálculos de Engenharia de Alimentos.

Enrique Ortega
Departamento de Engenharia de Alimentos DEA, FEA, Unicamp
Campinas, SP, maio de 2001

Introdução

Em diversas universidades do mundo os docentes responsáveis pelas disciplinas de introdução à programação de computadores ou de informática aplicada à engenharia estão se defrontando com a questão seguinte:

Convém adotar a linguagem Java na Universidade?

A linguagem de programação Java oferece grandes vantagens (custo mínimo e recursos modernos) mas por outro lado, também apresenta desvantagens consideráveis (dificuldade de uso e grande risco de perda do investimento em adaptação do sistema computacional local).

Decidimos preparar uma versão em Java do nosso material didático na Internet: http://www.unicamp.br/fea/ortega/info/curso/welcome.htm
para descobrir a razão custo/benefício relativa à adoção desta linguagem de programação.

Principais vantagens de Java:

  1. Uso gratuito para usuários não comerciais;
  2. Funciona em qualquer computador e em todos os sistemas operacionais, portanto pode ser considerada "multi-plataforma";
  3. Permite fazer programas para cálculos de engenharia com a capacidade de rodar diretamente na Internet com segurança e rapidez;
  4. Agrada aos alunos sem noções prévias de computação,
  5. Para as universidades que tem um quadro de computadores heterogêneo (PC, Sun, Apple-Mcintosh) e usam na sua rede muitos sistemas operacionais (Windows, DOS, Solaris, Linux, etc.) resulta muito conveniente usar esta linguagem.

Principais desvantagens de Java:

  1. Requer-se de grande rigor metodológico para elaborar programas;
  2. Resistência à inovação dos professores que terão que aprender uma nova linguagem;
  3. Esforço extra para tradução de programas em uso, escritos em outras linguagens;
  4. Há incerteza de que ela venha a ser a solução geral desejada, pois se, por algum tempo, foi considerada a única linguagem de programação para Internet, hoje ela tem concorrentes poderosos.

Material e Método

Fizemos três testes de programação em Java, cada um dos quais com grau crescente de dificuldade.

Aplicativo estudado:

Foi escolhido, para exercício de tradução, o programa de cálculo de uma bomba para água escrito em Pascal e apresentado no II Workshop de Ferramentas de Cálculo Computacional para Engenharia de Alimentos organizado pelo Programa de Ciência e Tecnologia para o Desenvolvimento de Ibero-América (CYTED) na cidade de Puebla, no México (Ortega e colaboradores, 1994).

A linguagem Java pode ser considerada uma evolução da linguagem C que usa alguns recursos da programação gráfica similares aos existentes em Delphi ou Visual Basic. Ela possibilita a elaboração de dois tipos de programas: aplicativos e "applets". Os primeiros rodam no sistema operacional, os segundos rodam nos "browsers" ou navegadores da Internet. Devido ao nosso interesse em educação à distância usando a Internet excluímos do trabalho os aplicativos e privilegiamos a elaboração de "applets" para Internet.

Figura 1. Vista da apresentação inicial do applet.

A linguagem Java exige uma mudança de paradigma na elaboração de programas. Ela disponibiliza 1500 classes ou recursos de programação prontos para serem usados. O trabalho do programador é aprender a usar esses recursos, de acordo com as regras de sintaxe e lógica da linguagem.

Fora isso é necessário aprender a técnica de preparação de applets que consiste de três etapas, sempre usando o Editor ConTEXT:

1.      Escrever o programa (o código fonte) e gravar como arquivo-texto com a extensão .java

2.      Compilar o programa (estando dentro de ConTEXT) para produzir um código binário que será gravado com a extensão  .class

  1. Visualizar o arquivo compilado usando o programa appletviewer (ainda dentro de ConTEXT). Outra alternativa é elaborar um programa HTML (podendo usar ConTEXT) para visualizar o arquivo binário com extensão .class usando um browser.

Quadro de componentes disponíveis indicando suas bibliotecas.

No programa usamos alguns desses objetos, os quais listamos a seguir.

Tabela1. Componentes do programa:

Caixas de texto

TextField tf28Hz = new TextField("",4); 
tf28Hz.setEditable(false);
tf28Hz.setBackground(Color.yellow);
add(tf28Hz);

Rótulos

add(new Label("Q m3/h",Label.RIGHT));

Botão de ação

Button button = new Button("Calculo"); add(button);

Formatação de texto (decimais)

NumberFormat.getNumberInstance();
nf2.setMaximumFractionDigits(2);

Diagramação tipo grade

setLayout(new GridLayout(14,2,4,4));

Variáveis

Double Q, Temp, Alt;

Método ou função

double Reynolds(double D, double V, double Dens, double Visc)

Entrada de valores

Q = Double.valueOf(tf01Q.getText()).doubleValue();

Cálculos

Re = Reynolds(Dr, ((Q/(3600*0.785*Dr*Dr))), 1000*Ro, 0.001*Mu);
Hz = (z2-z1);

Saída de valores

tf28Hz.setText(String.valueOf(nf2.format(Hz)));

Figura 2. Applet mostrando resultados.

Tabela 2. Estrutura do programa CalcBomba.java gerador de CalcBomba.class:

Pacotes ou Bibliotecas usadas

 

 

Início da classe CalcBomba derivada da classe Applet
 

Etapa de inicialização
 
 
 

Teste de evento realizado pelo usuário
 

Ações de programação decorrentes da intervenção do usuário
 
 

Finalização da classe
 

import java.applet.*;
import java.awt.*;
import java.text.*;

public class CalcBomba extends Applet 

   /* componentes utilizados */

   public void init()
   {
      /* construtores */
   }

   public boolean action(Event evt, Object arg) 
   {
     if (evt.target == button) 
     { 
         /* procedimentos*/
     }
   }

}

Tabela 4. Código da página web CalcBomba.htm:

Cabeçalho da página
 
 

Referência ao arquivo usado pelo applet e tamanho da janela

Fechamento da página

<HTML>
<HEAD><TITLE>Bomba para água</TITLE></HEAD>
<BODY>

<APPLET CODE="CalcBomba.class
WIDTH=400 HEIGHT=300>
</APPLET>

</BODY>
</HTML>

Variáveis fornecidas inicialmente

Vazão de água

m3/h

Temperatura da água

Celsius

Alt 

Altura sobre o nível do mar

m

Resultados e dados iniciais que dependem de Q, T e Alt.

Ro 

Densidade

kg/ m3

Mu

Viscosidade

CentiPoise

Pv

Pressão de vapor

atm

Pa 

Pressão atmosférica

atm

Ve 

Velocidade econômica

m/s

Dsug 

Diâmetro sugerido

m

Variáveis a ser fornecidas após primeiros cálculos

Dver

Diâmetro real

m

Rug

Rugosidade relativa da tubulação

m

Variáveis complementares

z1 

altura na boca de sucção

m

z2 

altura na boca de descarga

m

zb

altura na bomba

m

p1 

pressão na boca de sucção

atm

p2

pressão na boca de descarga

atm

Lsuc

comprimento total da linha de sucção

m

Vals 

válvulas na linha de sucção

número

Acss 

acessórios na linha de sucção

número

Lrec 

comprimento total da linha de recalque

m

Valr

válvulas na linha de recalque

número

Acsr 

acessórios na linha de recalque

número

DP

perda de carga adicional no recalque

atm

Ef 

eficiência

centesimal

Resultados parciais

Re 

Número de Reynolds

adimensional

fD 

Fator de fricção de Darcy

adimensional

Resultados finais

Hz

altura da bomba devida a desnível físico

m

Hp

altura da bomba devida a pressão

m

Has

altura da bomba pelo atrito na sucção

m

Har

altura da bomba pelo atrito no recalque

m

Hb

altura da bomba 

metros de coluna de água

pr

pressão na boca de recalque

atm

ps

pressão na boca de sucção

atm

NPSH

altura disponível na sucção

metros de coluna de água

CV

Cavalos necessários no motor

CV

US$/h

Custo de operação por hora

dolares/hora

k1

constante da equação do encanamento

m

k2

constante da equação do encanamento

m/(m3/hora)2

Resultados do trabalho:

Conseguimos preparar um programa que roda na Internet, mas somente depois de testar sem sucesso várias versões preliminares do programa, que foram implementadas seguindo as recomendações de diversos livros (1, 2, 3, 4). Todas as versões rodavam no visualizador do Java (appletviewer), porém nem todas funcionavam nos browsers (Internet Explorer e Netscape Navigator). Descobrimos que as soluções propostas nos livros nem sempre funcionam! As explicações são difíceis, entre elas podemos citar:

1.      Erros de lógica cometidos pelos programadores (solucionados por meio de estudo dos manuais da linguagem);

2.      Como usamos Java 1.3 a versão do compilador disponível no ano 2000, observamos muitos erros de sintaxe ao implementar em nos nossos programas alguns códigos obtidos de programas feitos com versões anteriores do compilador: Java 1,1 (1995) e Java 1.2 (1998). Alguns desses erros eram inócuos para fins de uso do appletviewer porém davam problema nos browsers, outros erros, mais graves, não permitiam a compilação do programa.

3.      Na maioria dos livros achamos códigos para as versões 1.1 do compilador que os principais browsers na época (1997-1999) deveriam reconhecer obrigatoriamente. Descobrimos nessa época que os applets preparados com a versões 1.2 e 1.3 ("Java2") não eram reconhecidos por todos os browsers e que tinha que ser instalado um "plug-in específico" no browser.

  1. As versões atuais dos browsers rodam os applets Java preparados com a versão mais recente do compilador se a instalação "default" do browser inclui a máquina virtual Java que pode estar como interpretador simples (JRE) ou com pacote completo que permite programar e compilar (JDK)

O applet CalcBomba.class funciona corretamente mais ainda pode receber melhoras, foi colocado na Internet, no endereço:
http://www.unicamp.br/fea/ortega/info/cursojava/CalcBomba.htm

O programa realizado pode ser considerado como um primeiro passo na elaboração da versão em Java do programa de cálculo de bombas para fluidos. Planejamos incorporar filtros para os valores fornecidos pelo usuário, aprimorar as correlações empregadas e incorporar uma rotina gráfica que mostre o gráfico da equação do encanamento.

Figura 3. Programa rodando na Internet

Conclusões:

a.      É possível preparar e colocar aplicativos de cálculo de Engenharia de Alimentos para rodar diretamente na Internet;

b.      O uso da versão gratuita da linguagem demanda um esforço adicional de treinamento para compilar no ambiente do sistema operacional. Este esforço foi facilitado quando passamos a usar o editor ConTEXT;

c.       Deve-se aprender a programar em HTML para inserir os aplicativos ("applets") em páginas web;

d.      Deve-se ter acesso a algum provedor de serviços da rede internet e aprender a usar a ferramenta FTP para transferir os arquivos;

e.      A linguagem é difícil e demanda bastante tempo de leitura e prática de programação para sua aprendizagem;

  1. O formato HTML permitirá colocar na página web as instruções de uso do programa de forma bastante conveniente.

Tarefas futuras:

Um esforço adicional de análise deve ser feito no futuro para:

 

Somente depois da realização destas tarefas poderemos nos posicionar sobre a conveniência de adotar esta linguagem, porém consideramos que as perspectivas são boas.

 

Bibliografia:

1.      Chan, M. C.; Griffith, S.W. & Iasi, A. F. "Java 1001 dicas de programação". Editora MAKRON Books, São Paulo, 1999.

2.      Lemay, L. & Cadenhead, R. "Aprenda Java em 21 dias". Editora Campus - Sams, Rio de Janeiro, 1999.

3.      Holzner, S. "La Biblia de Java 2", Ediciones Anaya Multimedia, Madrid, 2000.

4.      Niemayer, P. & Knudsen,, J. "Aprendendo Java". Editora Campus - O´Reilly, Rio de Janeiro, 2000.

5.      Ortega, E.; D`Aquarone, V.; Rodrigues, M.I.; Menegalli, F. C. "Programa para cálculo de bombas para alimentos, con gráfico del sistema", II Taller de Herramientas de Cálculo Computacional CYTED, Puebla, México. Editora UPV, Valencia, España, 1994. http://www.upv.es/dtalim/herraweb.htm (2/3/2001).

6.      Ortega, E.; Kontur, S.; Basler, M. & Duarte, C. M. "Programas em Java para Modelagem e Simulação de Ecossistemas", FEA, Unicamp, 2000. http://www.unicamp.br/fea/ortega/java/index.htm (2/3/2001).

7.      Ortega, E. & Scachetti, A. C. "Programação em Java (Applets AWT) - Aulas de introdução", FEA, Unicamp, 2001. http://www.unicamp.br/fea/ortega/info/curso/welcome.htm (2/3/2001).

  1. Ortega, E. "Programa em Java para Cálculo de Bombas de Água", FEA, Unicamp, 2000. http://www.unicamp.br/fea/ortega/info/cursojava/CalcBomba.htm (2/3/2001).


Volta a página da disciplina