Home Map Index Search News Archives Links About LF
[Top Bar]
[Bottom Bar]
[Photo of the Author]
Jose M. Fernández
Sobre o Autor: [Escreva um ou dois par�grafos sobre a biografia do Autor aqui]

Conte�do:
Introdu��o
Origem
Obten��o e Instala��o de Java
Ambiente de desenvolvimento
Caracteristicas
Come�ar a programar em JAVA
Resumo

Java. Parte I

[Ilustration]

Abstract: Este � o primeiro artigo de uma s�rie, sobre programa��o com Java. A primeira parte � dedicada a descrever Java como linguagem, suas caracter�sticas gerais e a localiza��o das fontes mais importantes de informa��o.




Introdu��o

Iniciamos uma s�rie de artigos , em que descrevemos o ambiente e a linguagem de programa��o Java. Como primeiro prop�sito tentarei me afastar dos t�picos relacionados com esta linguagem, n�o falarei nada sobre a hist�ria da linguagem, sobre microondas, lavadora(se algu�m se interessa, poder� l�-la em numerosas publica��es, at� em revista m�dicas). T�o pouco mostrarei Duke (o mascote de Java) que � um bonequinho narigudo em forma de triangulo, com o olhar sorrateiro, que ao menor descuido te sa�da a r�tmos fren�ticos que relembra a velhos filmes americanos de fic��o cient�fica.

Existe uma coisa que � como certa, "Java est� na moda", n�o h� uma s� revista que n�o a aprecie e que n�o fale dela, nem empresa de software que n�o mostre algum produto para desenvolver applets em Java, nem p�gina na Web que n�o contenha alguma coisa em Java.

Tentarei nesta s�rie de artigos aprofundar e na medida do poss�vel aprender (todos juntos) esta linguagem de programa��o que � simples no b�sico, mas com uma alta complexidade e dificuldade de dominar e em constantes mudan�as.

Os primeiros artigos nos proporcionam uma descri��o da linguagem em geral para em seguida irmos analizando em profundidade temas particulares como os applets, trabalhos para rede, JDBC, beans, etc.

Farei p� firme que java � uma linguagem de prop�sito geral, n�o s� para realizar applets para p�ginas web, ainda que � s�mente para isto que � conhecido, n�o podemos nos ater neste aspecto, j� que nos proporciona uma s�rie de alternativas que podem ser interessantes, ainda que a propria realiza��o de applets para a rede.

Este primeiro artigo � um pouco mais descritivo que pr�tico, no qual veremos fundamentalmente as caracter�sticas da linguagem, ambiente de desenvolvimento e s� no final, veremos algum exemplo de programa Java.

Origem

Java foi concebida por James Gosling, Patrick Naughton, Chis Warth, Ed Frank e Mike Sherindan na Sun Microsystem Inc. en 1.991, e na sua primeira vers�o, que durou 18 meses. Entre 1.992 e 1.995, colaboraram na maturidade do prot�tipo inicial Bill Joy, Arthur Van Hoff, Jonathan Payne, Frank Yellia, Tim Lindolm.

Como podemos observar pelas datas, Java � anterior ou ao menos simult�nea com a WWW (at� o ano de 1.991, Tim Berners Lee n�o desenvolveu a linguagem HTML).

Podemos considerar Java como uma linguagem de prop�sitos gerais, mas seu verdadeiro auge surgiu quando sua utiliza��o em p�ginas da Web.

A sintaxe de Java � similar ao C e as caracter�sticas de orienta��o a objetos do C++. Java � uma linguagem de programa��o coerente e l�gicamente consistente.

devido as similaridades com C e C++, poder�amos pensar que Java � uma vers�o para Internet de C++, mas tem importantes diferen�as te�ricas e pr�ticas. Especialmente Java melhora e refina o paradigma de orienta��o a objetos de C++.

A Internet ajudou para Java se tornar uma linguagem universalmente conhecida e pelo seu lado, Java tem um profundo efeito sobre a Internet, j� que amplia o universo de objetos que podem mover-se livremente pelo ciberespa�o (programas dinamicos autoexecut�veis).

Obten��o e Instala��o de Java

Para poder programar em Java necessitamos de v�rias ferramentas, sempre estamos nos referindo ao ambiente GNU/LINUX (pode ser que algu�m esque�a):

a implementa��o atual para Linux, � baseado no ELF e requer um n�cleo 1.2.13 ou posterior

Utilizaremos um ambiente chamado JDK (Java Development Kit).

Netscape vers�o 2.0.14 ou posterior.

Um editor de textos como Xemacs (trabalharemos sempre sobre Xwindows, ainda que n�o seja necess�rio em alguns casos, ainda que sim, para os Applets e programas com interfaces gr�ficos).

Para baixar o JDK, podemos obter dentre outros, a partir do modo:

http://www.blackdown.org/java-linux.html

daqui escolheremos algum Mirror, para poder realizar o download mais rapidamente. Faz alguns meses a �ltima vers�o era a JDK-1.1.3(com ela realizamos os exemplos), mas durante minha �ltima visita, v� a vers�o 1.1.9, mas "aten��o", se quisermos baixar tudo, s�o aproximadamente 24Mb., mesmo que o estritamente necess�rio � de apenas 12Mb (paciencia).

Uma vez descomprimido com gunzip e tar n�o h� nenhum problemas para come�ar a trabalhar

O normal seria instalar no diret�rio /usr/local no qual, criar� o diret�rio /JDK1.1.3 e dentro dele, encontraremos v�rios diret�rios:

/doc Documenta��o n�o oficial no formato HTML

/demo Programas de demonstra��o em Java

/lib Bibliotecas

/bin As proprias ferramentas do JDK.

Dentro do diret�rio /lib, encontraremos o arquivo "classes.zip";(n�o descomprima este arquivo), pois cont�m todas as classes compiladas que podemos utilizar no JDK.

Dentro do diret�rio raiz, encontramos o arquivo "src.zip", este cont�m todos os arquivos fontes incluidos no arquivo "classes.zip". N�o podemos compilar e impossibilitado por falta de informa��o.

Ambiente de desenvolvimento

como falamos anteriormente, est�o incluidos no diret�rio /bin:

javac : compilador java, compila programas fontes na linguagem java e bytecodes.

Java : interprete java. Executa bytecodes Java.

jre : similar ao interprete java(java), mas, pensado para usu�rios finais, que n�o exigem todas as op��es dispon�veis.

appletviewer: testa e executa applets.

jdb: depurador.

javap: desassemblador de arquivos complados em Java.

javadoc : gerador de documenta��o, produz um conjunto de p�ginas HTML, descrevendo as classes p�blicas e privadas, interfaces, construtores, m�todos e campos. Tamb�m produz uma hierarquia de classes e um �ndice de todos seus membros.

javah : para acrescentar m�todos nativos (em linguagem C) a programas Java.

jar : arquiva classes e fontes java em um arquivo Jar.

javakey : manuten��o de assinaturas digitais.

updateAWT : atualiza os nomes que mudaram nos m�todos do AWT1.02 em uma aplica��o.

Para poder trabalhar sem problemas de diret�ris, acrescentaremos o diret�rio /usr/local/JDK1.1.3/bin na vari�vel de ambiente PATH do usu�rio que desejamos. Se desejamos que seje fixada para todos os usu�rios, incorporar o diret�rio a vari�vel PATH que est� no arquivo /etc/profile.

Caracter�sticas

Antes de continuarmos, poderiam perguntar: O que � Java?, e como resposta podemos ter (como no manual do JDK informa) que s�o duas coisas, por um lado, uma linguagem de programa��o e por outro uma plataforma.

Como linguagem de programa��o, Java � uma linguagem de alto n�vel com as seguintes caracter�sticas (mais adiante as veremos com mais detalhes):

  • � simples
  • Orientado a objeto
  • Distribuido
  • Interpretado
  • Robusto
  • Seguro
  • Arquitetura neutra
  • Port�vel
  • Multiusu�rio
  • Din�mico
  • Alta resolu��o

O primeiro que salta a vista, � que Java � interpretado, ainda que requeira uma compila��o pr�via, gerando um c�digo objeto em bytecodes, que � de muito baixo n�vel, este c�digo pode ser interpretado em distintas plataformas.

Os bytecodes Java possibilita "escreve uma vez, executa sempre". Podemos compilar programas numa plataforma com um compilador Java e os bytecodes podem ser executados em qualquer arquitetura que possua implementa��o da m�quina virtual java(JVM). Por exemplo, um programa Java pode ser compilado em uma plataforma Windows NT e ser executada sem nenhum problema (pelo menos assim nos diz a teoria) em um Sun Ultra Solaris.

Uma plataforma poder� ser o ambiente hardware ou software no qual � executado. A plataforma Java se difere de outras plataformas, por que ela � s� software e se executa sobre outra plataforma hardware.

A plataforma Java tem dois componentes:

  • a m�quina virtual Java(JVM)
  • Interfaces de programa��o de aplica��o (API)

JVM � um computador abstrato no qual podemos executar programas Java compilados. Foi desenhado para ser f�cil e pequeno, porque se pretendia que estivesse presente em todos os lugares que fosse poss�vel. Esta simplicidade, foi feita t�o r�pidamente que se extendeu a todas as arquiteturas existentes, conseguindo uma classe de software comum a todas elas, pelo que nas redes de computadores heterog�neas(como � a Internet), a portabilidade � conseguida gra�as a Java. Como podemos imaginar esta � poss�velmente uma das raz�es do auge desta irrepar�vel desta tecnologia. a m�quina virtual, devemos entender como uma classe de software sobre um processador, se n�o como seu nome indica pretender se um computador e pouco a pouco v�o aparecendo Chips Java que dar�o apoio a m�quinas reais Java, cart�es de cr�dito, decodificadores de TV digital, etc.

A API � uma grande cole��o de componentes software que prov� a linguagem de muitas utilidades, tais como interfaces gr�ficas(na terminologia Java, pacotes). Gra�as a estes pacotes, podemos escrever com Java. muitos tipos de programas distintos, afora as conhecidas Applets para Web, podemos desenhar, por exemplo servidores Web, proxis, servidores de correios, servidores IRC, e pr�ticamente o que possamos imaginar tanto em rela��o com a Internet como n�o.

Os agrupamentos das API, podem ser classificadas como:

  • Básicas : objetos, matrizes, n�meros, entradas e sa�das, estrutura de dados, propriedades do sistema, data, tempo, etc.
  • Applets : conjunto de fun��es e utilit�rios usados para a realiza��o de applets Java.
  • Trabalho em Rede: URLs, TCP, UDP, sockets, direcionamento IP.
  • Internacionaliza��o: ajuda para escrever programas que podem ser adaptados automaticamente �s especifica��es locais e podem ser visualizados em uma linguagem pr�pria.
  • Seguran�a: de baixo e alto n�vel, incluindo assinatura digital, chaves p�blicas e privadas, controle de acesso e certificados.
  • Componentes software: conhecidos como JavaBeans.
  • Banco de dados: proporciona um acesso uniforme a um grande n�mero de banco de dados relacionais

Al�m deste n�cleo b�sico da API, podemos dispor de estens�es para 3D, telefonia, anima��o, etc.

Como vimos no in�cio desta caixa, Java possui uma s�rie de caracter�sticas que veremos em detalhes:

� simples:

Em Java existe um n�mero reduzido de formas claras para abordar uma tarefa dada. Oferece toda a funcionalidade de uma linguagem potente, mas sem as caracter�sticas menos usadas e mais confusas destas. Herda a sintaxe do C/C++ e muitas das caracter�sticas orientadas a objetos do C++. Todos os programadores que conhe�am C/C++, n�o ter�o nenhum problema para aprender Java. elimina algumas caracter�sticas destas linguagens entre os quais se destacam:

  • Aritmética de ponteros
  • Registros(struct)
  • Defini��o de tipos(typedef)
  • Macros(#define)
  • Necessidade de liberar memoria(free)
  • N�o h� heran�a múltipla
  • N�o h� sobrecarga de operadores
  • N�o h� estrutura ou uni�es
� orientado a objetos: Java � uma linguagem desenhada partindo do zero, como resultado disto, realiza-se uma aproxima��o limpa, �til e program�vel aos objetos. O modelo de objeto Java � simples e f�cil de ampliar.
� distribuido: Java foi desenhado com enormes capacidades de conex�o TCP/IP. De fato, permite aos programadores acessarem a informa��o atrav�s da rede com tanta facilidade como aos arquivos locais.
� robusto: Java � fortemente tipado, o que permite comprovar o c�digo em tempo de compila��o. Tamb�m comprova o c�digo em tempo de execu��o. A realiza��o de mem�ria � realizada de forma autom�tica, j� que proporciona um coletor de lixo autom�tico para os objetos que n�o est�o sendo utilizados. Java, assim mesmo, proporciona uma gest�o de excess�es orientada a objetos. Um programa escrito corretamente, todos os erros de execu��o podem e devem ser gerenciados pelo programa.
� de arquitetura neutra: O principal objetivo dos desenhadores Java era "escrever uma vez, executar em qualquer lugar, em qualquer momento e para sempre". O c�digo Java � compilado a um c�digo de bytes de alto n�vel independente da m�quina. Este c�digo est� desenhado para ser executado em qualquer m�quina com um sistema run-time (interprete), no qual, se � dependente deste.
� seguro:

As necessidades da inform�tica distribuida exigem os maiores n�veis de seguran�a para os sistemas operacionais clientes. Java proporciona seguran�a atrav�s de v�rias caracter�sticas de seu ambiente em tempo de execu��o:

  • Um verificador de bytecodes
  • A disposi��o de mem�ria em tempo de execu��o
  • Restri��es de acesso aos arquivos

Ainda que o compilador s� gere c�digo correto, o interprete volta a verificar para assegurar que o c�digo foi mudado (intencionalmente ou n�o). Al�m disso, o int�rprete Java determina a disposi��o da mem�ria para as classes. Podemos considerar Java como uma das aplica��es mais seguras para qualquer sistema.

� port�vel: Al�m da portabilidade b�sica ser de arquitetura neutra, Java tamb�m implementa alguns standardes de portabilidade, os inteiros s�o sempre inteiros, o sistema de interface do usu�rio, constitue um sistema abstrato de janelas, pelo que se observa, que � independente da arquitetura de onde s�o implementados (UNIX, PC, Mac).
� interpretado: Para poder consseguir um dos objetivos b�sicos de Java, que � a independencia de plataforma, o compilador gera um c�digo intermedi�rio (bytecodes). este c�digo pode ser executado em qualquer sistema que possua um interprete. Esta caracter�stica pode levar-nos a pensar nos poss�veis problemas de rendimento. ainda que, por este mesmo motivo, os desenvolvedores da linguagem desenharam com muito cuidado o c�digo intermedi�rio, de maneira que fosse simples de traduzi-lo diretamente a um c�digo de m�quina nativo para conseguir um rendimento alto.
� multitarefa: Com Java podemos escrever programas que fa�am v�rias coisas ao mesmo tempo e de uma forma f�cil e robusta.
� din�mico : Java tenta agregar todos os m�dulos que comp�em uma aplica��o at� o momento da execu��o. Isto permite agregar din�micamente o c�digo de uma forma segura e conveniente.

Depois desta quantidade enorme de par�grafos(n�o � mais que o oficial do Java), farei que (outra vez) pergunte porque Java no mundo GNU/LINUX. Anteriormente falamos de um JDK para Linux, isto n�o � mais que uma implementa��o comercial da original desenvolvida pela Sun Microsystem(ainda que de livre disposi��o).

Existem ferramentas como o compilador GUAVAC (http://HTTP.CS.Berkeley.EDU/~engberg/guavac) sob licen�a GPL, com ele podemos compilar qualquer fonte Java sem nenhum tipo de problemas. Destacaremos assim mesmo uma m�quina virtual chamada KAFFE (http://www.kaffe.org), sob licen�a Berkeley. Estes dois projetos est�o bastante avan�ados, ainda que necessitem das bibliotecas das classes Java da Sun(de livre distribui��o no momento) para ter um sistema de desenvolvimento completo.

Existem tamb�m projetos em fases iniciais para criar ambientes de desenvolvimento r�pidos e visuais de aplica��es Java.

Existe um grande movimento na rede, sobre a tecnologia JAVA y GNU, com o objetivo de desenvolver ferramentas completas e independentes da SUN. Com isso, podemos fazer uma ideia da importancia de Java, e quando a moda passar com certeza alguma coisa ficar� (bastante, diria eu).

Come�ar a programar com JAVA

Uma vez vistos todas as caracter�sticas gerais da linguagem, veremos um programa real. Como disse na introdu��o deste artigo, gostaria de evitar o m�ximo poss�vel a coloca��o de t�picos, quer dizer, n�o faremos o primeiro programa saudando o mundo, em lugar dele, veremos em nossa tela, um quadro nas dimenss�es que quisermos (um pouco mais complicado, mas sem introdu��es.):

Arquivo Cuadro.Java
class Cuadro {
public static void main (String args[]) {
	int l ,a;
        if (args.length == 2) {
            l = Integer.valueOf(args[0]).intValue();
	    a = Integer.valueOf(args[1]).intValue();
	 }
	 else {
	  l= 20;
	  a= 15;
	 }
	  for (int i=l; i>0; i--){
	    System.out.print("*");
	    }
	    System.out.print("\n");
	    for (int i= a-2; i>0; i--){
	     System.out.print("*");
	       for(int j=l-2; j>0; j--) {
	          System.out.print(" ");
		  }
		  System.out.print("*\n");
		  }
		for (int i=l; i>0; i--){
		System.out.print("*");
		}
	      System.out.print("\n");
	   }
}

A primeira coisa que temos que ter em conta, � o nome que damos ao arquivo fonte que � muito importante, j� que este � definido como uma "unidade de compila��o". Pode ser um arquivo que contenha uma ou mais defini��es de classe. O compilador espera que estes arquivos tenham a extens�o .Java (4 caracteres) pelo que alguns sistemas como DOS ou Windows 3.1 n�o suportam.

Como vemos no exemplo o nome da classe definida tamb�m coincide com o nome do arquivo fonte e n�o � por casualidade, em Java, todo o c�digo tem que estar dentro de uma classe. Por conveniencia, o nome da classe tem que coincidir com o nome do arquivo que cont�m o programa. Al�m disso, Java � sens�vel ao contexto (diferen�a entre mai�sculas e min;usculas).

Para compilar o exemplo, na linha de comando, digitamos:

> javac cuadro.java

O compilador Java (se tudo foi bem) criar� um arquivo cuadro.class que cont�m, naturalmente o c�digo bin�rio (bytecode) e este poder� ser executado pelo int�rprete:

> java cuadro

Quando compilamos c�digo fonte de Java, cada classe individualmente � colocada em um arquivo que tem o mesmo nome que a classe. Esta � a raz�o pela qual � uma boa pr�tica chamar os arquivos fontes da mesma forma que a classe que a cont�m, j� que assim, o nome do arquivo fonte coincidir� com o nome do arquivo.class.

Ainda que nosso exemplo quadro.java � bastante simples, nos ajudar� a compreender os elementos fundamentais de um programa Java, e sobretudo a estrutura de um programa.

O que se tem de levar em conta, � que este exemplo n�o � um applet para incluir em uma p�gina HTML, e sim um programa independente que � executado com o interprete � partir da linha de comandos.

A primeira linha do programa �:

class cuadro {

Nesta linha, empregamos a palavra reservada class para declarar que vamos definir uma nova classe, "cuadro" � o identificador do nome da classe. A defini��o da classe completa incluindo todos os seus membros, est�o entre as chaves ({ }), as mais gerais. Note que em Java, toda a atividade de um programa ocorre dentro da classe.

Na linha seguinte:

public static void main (String args[]) {

De inicio, podemos destacar o m�todo main(). Todas as aplica��es Java come�am sua execu��o chamando este m�todo (como em C/C++). Continuando, comentaremos alguns conceitos que posteriormente (em outros artigos), detalharemos ainda que faremos uma r�pida passada, s�mente para comprender o exemplo.

A palavra chave public permite controlar a visibilidade das classes membros. Quando uma classe � declarada como public, esta pode ser utilizada por c�digo definido fora de sua classe. Static permite que o m�todo main() seja chamado sem necessidade de instanciar a classe. Void indica que n�o devolve nenhum valor. Para enviar informa��es a um m�todo, realizamos atrav�s de vari�veis especificadas entre os parenteses que seguem o nome do m�todo, em nosso caso, declaramos um par�metro chamado arg que � uma matriz de instancias da classe String.

Naturalmente todo o código do m�todo, est� tamb�m entre chaves. E na linha:

 int l, a ;

como todo programa que se preze, declaramos duas vari�veis do tipo inteiro. Em Java, cada vari�vel tem que ser declarada pr�viamente. Como podemos observar, cada instru��o termina com um " ; " .

O resto das linhas, articulam um pequeno algor�timo, no qual:

  1. Comprovamos se foram enviados par�metros ou n�o:
    If (args.length==2)
    
  2. Se existem par�metros, os atribuimos as vari�veis "a" e "l" :
      l = Integer.valueOf(args[0]).intValue();
      a = Integer.valueOf(args[1]).intValue();
    
  3. Caso contr�rio, as vari�veis foram iniciadas com dois valores default :
      l = 20;
      a = 15;
    
  4. O restante do programa n�o � mais que instru��es necess�rias para mostrar no monitor o quadro. Podemos destacar:
    System.out.print()
    

    onde print() imprime a cadeia que passamos como par�metros. System � uma classe pre-definida que permite o acesso ao sistema e out � o fluxo de sa�da que est� conectado ao monitor. E tamb�m,

    for (int i=l; i>0; i--)
    

    Como podemos imaginar, � o comportamento que esperamos dele, tem muita similaridade com o C/C++ e outras linguagens.

Uma pr�tica que podemos fazer com este exemplo, al�m de compil�-lo e execut�-lo, � comprovar que � de arquitetura neutra, j� que o programa compilado quadro.class, � executado sob o Windows 95, (sem que sirva de precedentes), comprovaremos seu comportamento sob o Linux.

Resumo

Relatamos os aspectos gerais da linguagem de programa��o Java. N�o fizemos nada mais que come�ar e temos um grande caminho em dois artigos mais. Para realizar uma descri��o completa ( e n�o muito ampla( desta linguagem. No pr�ximo artigo, veremos entre outros:

a defini��o e tipos de vari�veis, instru��es b�sicas, classes, etc. Em fim, a maior parte das especifica��es da linguagem.

Darei em cada artigo as referencias, publica��es e endere�os, em que tenha me baseado muito ou pouco nesta s�rie de artigos.

  • JAVA manual de referen�a. Patrick Naughton Herbert Schildt. Mcgraw-Hill.
  • Programando con JAVA. Tim Ritchey. Prentice Hall.
  • Tutorial de Java. Manual em espanhol no formato HTML obtido do endere�o: www.fie.us.es/info/internet/JAVA. Agustín Froufe.
  • The Java Tutorial. Manual em ingles no formato HTML, obtido no endere�o :www.javasoft.com. Sun.
  • Tutoriais da pr�pria instala��o do JDK.

Esta p�gina WEB � mantida por Miguel Angel Sepulveda
© Jose M. Fernandez 1998
LinuxFocus 1998