INTRODUÇÃO À TECNOLOGIA JAVA

Propaganda
INTRODUÇÃO À TECNOLOGIA JAVA
Java?
Java é uma nova linguagem de programação, introduzida no mercado em 1995 pela Sun
Microsystems, que provocou e ainda provoca excitação e entusiasmo em programadores,
analistas e projetistas de software.
Mas por que o Java produz esta reação? Simplesmente porque é o resultado de um trabalho
consistente de pesquisa e desenvolvimento de mais do que uma simples linguagem de
programação, mas de todo um ambiente de desenvolvimento e execução de programas que
exibe as facilidades proporcionadas pela orientação a objetos, pela extrema portabilidade do
código produzido, pelas características de segurança que esta plataforma oferece e
finalmente pela facilidade de sua integração ao outros ambientes, destacandose a Internet.
História do Java
O Java foi desenvolvido pela Sun Microsystems. A Sun foi fundada em 1982 e era uma
companhia que o seu mercado principal eram workstations unix.
O criador da linguagem Java (James Gosling) deu o nome a linguagem de Oak (Carvalho)
devido a um carvalho que crescia na janela do seu escritório. Oak foi desenvolvido para ser
elegante, uma linguagem orientada a objetos que funcionaria em diversas plataformas. Oak
tinha funções que o que o tornariam ideal para controle remoto e outros hardwares onde
não seria possível carregar softwares em disquetes, etc.
A característica chave do Oak era a sua independência de hardware. O Oak poderia
funcionar em qualquer maquina que suportasse a sua maquina virtual e uma vez que o
código para a maquina virtual estivesse pronto qualquer aplicação Oak poderia rodar.
Acabou que já havia outra linguagem chamada de Oak então o Oak mudou de nome, e o
nome escolhido foi Java. O nome foi escolhido para fazer as pessoas pensarem em algo
moderno.
O mercado não reagiu como a Sun esperava, mas a Internet estava com um grande
crescimento e uma vantagem da Internet é que ela é feita de inúmeras maquinas e cada uma
com arquiteturas diferentes e Java funciona em múltiplas plataformas, então a Sun
direcionou o Java para a Internet. Em maio de 1995 a Sun anunciou formalmente o Java,
eles colocaram o JDK (Java Development Kit) disponível e de graça na Internet.
O Java foi desenvolvido para que programadores o achem simples de usar. O Java é uma
linguagem nova (1990) e dessa forma ela foi feita para ser uma linguagem orientada a
objetos porque os seus criadores não entendiam como uma boa linguagem não fosse
orientada a objetos. A sintaxe do Java foi feita o mais proximo possivel do C++
possibilitando assim um mercado já pronto de programadores Java.Cronologia do Java:
* Janeiro de 1991 - Java começa como Oak para gerenciamento de equipamentos
domésticos.
* Março a agosto 1993 - Sun tenta usar Java num projeto da Warner TV, mas SGI ganha
projeto.
* Junho de 1994 - Um funcionário começa a tentar fazer um pequeno sistema
operacional com o Oak e um mês depois ele é redirecionado para Internet.
* 23 de maio de 1995 - Sun lança o Java. Primeira companhia a usar o Java foi a
Netscape.
* 29 de maio de 1996 - mais de 6.000 pessoas na Primeira conferência sobre Java.* No final de 1996 a Sun lançou uma iniciativa de Java 100% puro o qual examinava o
produto dentro de um conjunto de processos de certificações. Todo produto que passava por
este teste ganhava uma etiqueta de Java 100% puro. Só tem um problema, nenhuma JVM
(Máquina Virtual Java) está de acordo com o requerido pela Sun, Netscape retirou o logo
do Java em 1997 e a Sun e a Microsoft ainda estão em batalhas judiciais.
A linguagem Java tem o potencial de revolucionar a Web transformando a forma pela qual
o software é entregue pela Internet. É uma tecnologia inteiramente nova que pode ser usada
de outras formas que ainda não começamos a explorar. O Java, como uma linguagem de
propósito geral, terá um importante papel na próxima geração de software para a Internet.
Atualmente os applets Java estão embutidos em páginas Web, mais isso pode mudar.
Talvez o browser em si passe a ser um conjunto de applets que serão descarregadas para
seu computador à medida que você necessite deles. Isso significa que você sempre estaria
rodando a última versão do browser. Se você quer um browser para outro formato que não
o HTML, basta visitar uma página Web, e o browser/editor apropriado será descarregado
da Internet.
Futuristas que tiveram contato com o Java especularam que essa linguagem pode até
mesmo transformar o modo como usamos aplicativos. Poderiam tornar-se possível acessar
um aplicativo, tal como um programa de edição de texto ou de planilha, estando on-line,
através da companhia que criou, sempre que necessário.
Seríamos então cobrados apenas pelo tempo em que usássemos o aplicativo, e teríamos
garantia de acesso à última versão do software. Compare esta situação com o modo com
que usamos aplicativos hoje: é necessários adquirir um aplicativo para cada tipo de tarefa
que se deseja realizar, e pagar novamente pela atualização quando novas versões são
lançadas.
Se a Internet continuar a crescer à taxa atual, uma grande quantidade de pessoas que estão
conectadas serão usuários novos de computador. A Internet se tornará um habitat de
consumidores, não de programadores. A Java terá um papel com os quais os usuários da
Internet se tornará um lugar mais interessante, graças à Java.
A linguagem Java e sua plataforma de programação constituem um fascinante objeto de
estudo: ao mesmo tempo em que seduzem pelas promessas de portabilidade, exibem um
conjunto rico de bibliotecas que realmente facilitam o desenvolvimento de novas aplicações
e utiliza como paradigma central a orientação à objetos.
Embora a mídia, grandes empresas e inúmeros especialistas vejam o Java como uma
ferramenta indispensável para um futuro bastante próximo, tais previsões podem,
obviamente, mudar em função de novas propostas e descobertas que hoje acontecem num
ritmo quase inacreditável.
De qualquer forma o estudo Java é uma opção conveniente, pois mesmo que o futuro desta
linguagem não seja tão brilhante como parece, torna-se um meio eficiente para o
aprendizado da orientação a objetos que é incontestavelmente importante.
Características Da Linguagem
Parecida com C, C++:
Java tem a aparência de C ou de C++, embora a filosofia da linguagem seja
diferente. Por este motivo estaremos frequentemente fazendo comparações alguma destas
linguagens. O leitor que programa em qualquer uma delas, ou em uma linguagem
orientada a objetos, se sentirá mais à vontade e se tornará um bom programador Java em
menos tempo.
Java também possui características herdadas de muitas outras linguagens de
programação: Objective-C, Smalltalk, Eiffel, Modula-3, etc. Muitas das características
desta linguagem não são totalmente novas. Java é uma feliz união de tecnologias testadas
por vários centros de pesquisa e desenvolvimento de software.
Compilada:
Um programa em Java é compilado para o chamado “byte-code”, que é próximo as
instruções de máquina, mas não de uma máquina real. O “byte-code” é um código de uma
máquina virtual idealizada pelos criadores da linguagem. Por isso Java pode ser mais
rápida do que se fosse simplesmente interpretada.
Portável:
Java foi criada para ser portável. O “byte-code” gerado pelo compilador para a sua
aplicação específica pode ser transportado entre plataformas distintas que suportam Java
(Solaris 2.3, Windows-NT, Windows-95, Mac/Os etc). Não é necessário recompilar
um programa para que ele rode numa máquina e sistema diferente, ao contrário do que
acontece, por exemplo, com programas escritos em C e outras linguagens.
Esta portabilidade é importante para a criação de aplicações para a heterogênea
internet. Muitos d os programas exemplo deste tutorial foram escritos e compilados numa
plataforma Windows-95 e rodaram perfeitamente quando simplesmente copiados para
uma plataforma Solaris 2.3. Em Java um inteiro, por exemplo, tem sempre 32 bits,
independentemente da arquitetura. O próprio compilador Java é escrito em Java, de
modo que ele é portável para qualquer sistema que possua o interpretador de “bytecodes”. Um exemplo de programa escrito em Java é o browser hotjava.
Orientada a Objetos:
A portabilidade é uma das características que se inclui nos objetivos almejados por
uma linguagem orientada a objetos. Em Java ela foi obtida de maneira inovadora com
relação ao grupo atual de linguagens orientadas a objetos.
Java suporta herança, mas não herança múltipla. A ausência de herança múltipla
pode ser compensada pelo uso de herança e interfaces, onde uma classe herda o
comportamento de sua superclasse além de oferecer uma implementação para uma ou
mais interfaces.
Java permite a criação de classes abstratas. Outra característica importante em
linguagens orientadas a objetos é a segurança. Dada a sua importância o tópico foi escrito
à parte.
Independente de Plataforma:
Java é uma linguagem independente de plataforma, pois os programas Java são compilados
para uma forma intermediária de código denominada bytecodes que utiliza instruções e
tipos primitivos de tamanho fixo, ordenação big-endian e uma biblioteca de classes
padronizada. Os bytecodes são como uma linguagem de máquina destinada a uma única
plataforma, a máquina virtual Java (JVM – Java Virtual Machine), um interpretador de
bytecodes. Pode-se implementar uma JVM para qualquer plataforma assim temos que um
mesmo programa Java pode ser executado em qualquer arquitetura que disponha de uma
JVM.
Sem Ponteiros:
Java não possui ponteiros, isto é, Java não permite a manipulação direta de endereços de
memória nem exige que o objetos criados seja destruídos livrando os programadores de
uma tarefa complexa. Além disso, a JVM possui um mecanismo automático de
gerenciamento de memória conhecido como garbage collector, que recupera a memória
alocada para objetos não mais referenciados pelo programa.
Segura:
A presença de coleta automática de lixo, evita erros comuns que os programadores
cometem quando são obrigados a gerenciar diretamente a memória (C, C++, Pascal). A
eliminação do uso de ponteiros, em favor do uso de vetores, objetos e outras estruturas
substitutivas traz benefícios em termos de segurança. O programador é proibido de obter
acesso a memória que não pertence ao seu programa, além de não ter chances de cometer
erros comuns tais como “reference aliasing” e uso indevido de aritmética de ponteiros.
Estas medidas são particularmente úteis quando pensarmos em aplicações comerciais
desenvolvidas para a internet.
Ser “strongly typed” também é uma vantagem em termos de segurança, que está
aliada a eliminação de conversões implícitas de tipos de C++.
A presença de mecanismos de tratamento de exceções torna as aplicações mais
robustas, não permitindo que elas abortem, mesmo quando rodando sob condições
anormais. O tratamento de exceções será útil na segunda parte para modelar situações tais
como falhas de transmissão e formatos incompatíveis de arquivos.
Suporta concorrência/Multithreading:
A linguagem permite a criação de maneira fácil, de vários “threads” de execução.
Este tópico será útil quando você estudar animações, e é particularmente poderoso nos
ambientes em que aplicações Java são suportadas, ambientes estes que geralmente
podem mapear os threads da linguagem em processamento paralelo real.
Performance:
Java foi projetada para ser compacta, independente de plataforma e para utilização em rede
o que levou a decisão de ser interpretada através dos esquemas de bytecodes. Como uma
linguagem interpretada a performance é razoável, não podendo ser comparada a velocidade
de execução de código nativo. Para superar esta limitação várias JVM dispõe de
compiladores just in time (JIT) que compilam os bytecodes para código nativo durante a
execução otimizando a execução, que nestes casos melhora significativamente a
performance de programas Java.
Eficiente:
Como Java foi criada para ser usada em computadores pequenos, ela exige pouco
espaço, pouca memória. Java é muito mais eficiente que grande parte das linguagens de
“scripting” existentes, embora seja cerca de 20 vezes mais lenta que C, o que não é um
marco definitivo. Com a evolução da linguagem, serão criados geradores de “byte-codes”
cada vez mais otimizados que trarão as marcas de performance da linguagem mais
próximas das de C++ e C. Além disso, um dia Java permitirá a possibilidade de gerar
código executável de uma particular arquitetura “on the fly”, tudo a partir do “byte-code”.
Suporte para programação de sistemas distribuídos:
Java fornece facilidades para programação com sockets, remote method call, tcp-ip,
etc. Estes tópicos não serão abordados neste texto.
O Kit de Desenvolvimento
O Sun Java Developer’s Kit (JDK) é composto basicamente por:
· Um compilador (javac)
· Uma máquina virtual Java (java)
· Um visualizador de applets (appletviewer)
· Bibliotecas de desenvolvimento (os packages java)
· Um programa para composição de documentação (javadoc)
· Um depurador básico de programas (jdb)
· Versão run-time do ambiente de execução (jre)
Deve ser observado que o JDK não é um ambiente visual de desenvolvimento, embora
mesmo assim seja possível o desenvolvimento de aplicações gráficas complexas apenas
com o uso do JDK que é, de fato, o padrão em termos da tecnologia Java. Outros
fabricantes de software tais como Microsoft, Borland, Symantec e IBM oferecem
comercialmente ambientes visuais de desenvolvimento Java, respectivamente, Visual J++,
JBuilder, VisualCafe e VisualAge for Java.
Ambiente Java
O exemplo dado na seção anterior, além de ilustrar aspectos relacionados a programação de
aplicações Java, serve também para caracterizar uma parte do ambiente de desenvolvimento
da linguagem Java: a criação de programas, sua compilação e execução, como mostra a
Figura abaixo.
Ambiente de Desenvolvimento Java
Como visto, devemos utilizar um editor de textos ASCII simples para produzirmos o
código fonte de um programa que, obrigatoriamente deve ser alvo como arquivos de
extensão “.java”. Utilizando o compilador javac o arquivo fonte é transformado em
bytecodes Java que podem ser executados em qualquer plataforma computacional que
disponha de uma máquina virtual Java como ilustrado na Figura seguinte.
Quando solicitamos a execução do programa, tanto através do interpretador Java como de
sua versão run-time jre, o arquivo “.class” é primeiramente carregado, verificado para
garantir-se os requisitos de segurança do sistema e só então é propriamente interpretado. No
caso específico das applets o navegador (browser) efetua o download de um arquivo
“.class” interpretando-o ou acionando algum interpretador associado (plug-in). Em
ambientes onde existam compiladores JIT (just in time) os bytecodes já verificados são
convertidos em instruções nativas do ambiente durante a execução, aumentando a
performance das aplicações ou applets Java.
Ambiente Java e os Bytecodes
O resultado deste ambiente é que o Java, embora interpretado inicialmente, tornasse
independente de plataforma, simplificando o projeto de aplicações de rede ou distribuídas
que tenham que operar em ambientes heterogêneos, além de permitir a incorporação de
vários mecanismos de segurança.
Download