Você está na página 1de 4

Introduo ao Mundo Java

Fundo da Computao www.fundao.pro.br Outubro/2002

Java
Em 1991, o foi lanado pela Sun o "Project Green", como um resultado direto de uma observao feita por um desenvolvedor, que sentia que a Sun estava trilhando o caminho errado. O novo projeto foi apoiado por desenvolvedores de topo que receberam a instruo de fazer o que eles desejassem - de preferncia algo "legal". Os membros do projeto decidiram que uma idia legal poderia focar em como integrar digitalmente dispositivos de consumidores como TVs, CD players e computadores. Para isto ser possvel muitas novas tecnologias tiveram que ser testadas ou inventadas. Entre elas C++, uma boa linguagem de programao, foi testada. Mas ela no poderia oferecer imediatamente o que era necessrio - especialmente portabilidade, confiabilidade e programas com um tamanho que coubesse em dispositivos pequenos. Assim Java - ou Oak como foi chamado naquela poca - nasceu. Criado pelo arquiteto e programador lder James Gosling, foi meramente uma ferramenta para os programadores no Projeto Green naquela poca, mas teve um potencial maior do que qualquer um poderia ter sonhado.
James Gosling chamou a linguagem inicialmente de Oak (carvalho) em homenagem a uma rvore que dava para a janela do seu escritrio na Sun. Descobriu-se mais tarde que j havia uma linguagem de computador chamada Oak. Quando uma equipe da Sun visitou uma cafeteria local, o nome Java (cidade de origem de um tipo de caf importante) foi sugerido e pegou.

Em Novembro de 1992, o Projeto Green mudou de nome para FirstPerson. Dada a falta de sucesso do Java at ento na indstria de eletrnicos de consumo, a direo da companhia estava incerta. Sob a influncia da Sun, a companhia comeou a re-avaliar sua misso. Em 1992 foi lanado um pequeno dispositivo porttil parecido com um controle remoto, com uma pequena tela. Ele foi chamado Star-7. E ele certamente era legal. Para facilitar o uso do dispositivo, um pequeno personagem chamado "Duke" aparecia na tela. Duke agora o mascote oficial do Java. No comeo de 1993, a Time Warner lanou uma licitao para a criao de um sistema operacional para conversores de tv a cabo (set-top boxes) e para uma tecnologia de vdeo-por-demanda interativa. FirstPerson identificou esta rea como uma nova oportunidade e comeou a trabalhar naquela direo. Contudo, apesar dos esforos do pessoal da FirstPerson, a SGI assinou o contrato com a Time Warner. Em meados de 1993, a Sun comeou a negociar com a 3DO o fornecimento de um SO baseado em Java para seus conversores de TV. As negociaes, entretanto, no tiveram sucesso e nunca foi feito um acordo. A FirstPerson foi deixada por sua prpria conta sem nenhuma possibilidade de negcio vivel. Uma outra tentativa da companhia de comercializar sua tecnologia de TV interativa falhou em Fevereiro de 1994 quando um lanamento pblico de seus produtos foi cancelado. O projeto tentou vender sua idia para vrias companhias interessadas - sem sucesso. Pessoas deixaram o projeto, e apenas uns poucos permaneceram tentando imaginar o que fazer com suas boas idias. Naquela poca a Internet era mais para aficionados em computadores que sabiam como manipular protocolos como FTP e Telnet. Ento um programa chamado Mosaic construdo para o protocolo HTTP foi construdo em 1993, tornando possvel a usurios normais a visualizao de documentos HTML na Internet. Este foi um marco importante. Os membros restantes da equipe se animaram: sua tentativa de desenvolver uma interface interativa, robusta, segura e independente de arquitetura para dispositivos digitais tambm poderia ser usada na Internet! Uma vez que a Internet era uma rede que ligava centenas de computadores de marcas diferentes executando sistemas operacionais diferentes. Dessa forma, durante 1994, a equipe criou seu prprio browser chamado "HotJava", que apresentava uma tcnica que permitia aos usurios interagirem com as pginas Web. Coisas fantsticas como ter objetos 3D que rotacionavam atravs do uso do mouse eram possveis. O applet nasceu e as pessoas ficaram animadas com ele. Para pr isto em perspectiva, voc tem que lembrar que o que as pessoas tinham visto at ento na Web era esttico, como pginas HTML. Uma grande forma de se compartilhar informao, mas no muito divertida. Pgina 1

Em 1995, a Sun tomou uma atitude importante. O cdigo fonte do Java foi liberado como "fonte aberto" a fim de ganhar a ateno dos desenvolvedores de todo o mundo. Foi um sucesso. Em pouco tempo os membros da equipe j passavam dias e noites respondendo emails, consertando bugs e preparando novas verses. A Netscape anunciou suporte para Java na verso 2.0 de seu browser, que se tornou disponvel em Setembro de 1995. Estava claro agora para todos que um sucesso havia nascido.

Uma Linguagem Diferente


Vamos agora olhar Java mais de perto. Java antes de tudo uma linguagem. Foi orientada a objetos desde o nascimento. Em Java, tudo uma classe, com propriedades e mtodos. Tendo em mente que vrios programadores sabiam C e C++, James Gosling construiu Java sobre a sintaxe bsica da linguagem C++, mas muitas das caractersticas obscuras de C++ foram deixadas de fora. A fim de obter uma linguagem robusta, coisas preocupantes como manipulaes de ponteiros e alocao/desalocao de memria no foram implementadas. Seria interessante saber a quantidade de tempo de depurao que foi economizado com isto. Com o que uma classe Java se parece? Voc no sabe? Aqui est uma classe simples - na verdade um JavaBean (entraremos em maiores detalhes sobre beans mais adiante): public class fruits { // Inicializa uma coleo de frutas private String[] f = { "ma", "pra" }; public String[] getFruit() { // retorna a coleo de frutas return f; } public int fruitSize() { // retorna o nmero de frutas return f.length; } public void setFruit(String[] f) { // insere u ma nova coleo de frutas this.f = f; } } Este exemplo mostra como o Java linguagem bem legal. Ele tem uma clara estrutura de bloco sem frases ou smbolos suprfluos. Mas Java no apenas uma linguagem, tambm um sistema de tempo de execuo - a "Mquina Virtual Java (JVM)". A fim de obter portabilidade, Java foi projetado para ser traduzido em uma linguagem independente de plataforma chamada "bytecode". Esta no foi uma inveno nova - a linguagem Pascal originalmente fazia a mesma coisa usando "p-code" nos anos 70. O propsito da VM tomar os bytecodes, interpret-los, e fazer tudo o que for necessrio para process-lo no computador. Assim, para desenvolver e executar programas Java, voc precisa de um compilador (para traduzir seu programa para o bytecode) e a VM. Ambos so parte do Java Development Kit (JDK) o qual pode ser baixado do site da Sun.

Write Once, Run Anywhere


O que importante que uma vez que voc tenha compilado seu programa Java em bytecode, voc pode transferi-lo para qualquer computador com uma VM e execut-lo l. A Sun chama isto de "Write once, run anywhere". uma caractersticas maravilhosa, mas s funcionar se as VMs nas vrias plataformas funcionarem de forma idntica. Em 1996 a Microsoft tentou "estender" a VM do seu Windows, que sem dvida foi a mais rpida e mais confivel VM para Windows, com suporte para sua tecnologia Windows ActiveX. Se os programadores tivessem comeado a usar essas extenses, os programas Java logo no seriam mais portveis. A Sun respondeu lanando a iniciativa "100% Pure Java", onde algum teria que ser certificado para usar o logo Java. A Sun e a Microsoft entraram na justia, e depois de muitos anos de debate, a Microsoft teve que alterar a operao da sua VM para aderir s especificaes da Sun.

Pgina 2

Java Lento?
Benchmarks mostram que Java no executa to rpido quanto programas C++, por exemplo. Como Java interpretado enquanto que C++ compilado, isto natural. Mas "lentido" um termo relativo, e talvez a velocidade do seu programa Java no seja problema na aplicao que voc estiver construindo. Tudo depende de coisas como quantos usurios voc planeja atender ao mesmo tempo, quo poderoso o seu hardware e quanto processamento realmente feito em sua aplicao. No abandone o Java porque ele mais lento do que C++. Os computadores eram muito mais lentos a apenas 5 anos atrs, mas tnhamos muitas boas aplicaes executando naquela poca. No pense que ningum est tentando melhorar a performance do Java. Hoje muitas VMs tm compiladores JustIn-Time (JIT) embutidos nelas. Um compilador JIT traduz o bytecode - quando ele est para ser processado - para o cdigo de mquina nativo dos computadores. Este cdigo de mquina ento mantido (em um buffer ou cache) de forma que ele possa ser reusado se o bytecode correspondente for executado mais de uma vez.

Applets
Um applet geralmente um pequeno programa Java destinado a ser executado em um browser. H uma tag HTML especial para ele: >APPLET>, que define uma "rea de trabalho" semelhante a de um arquivo gif ou jpg. Dentro desta rea o applet pode interagir com o usurio. O browser faz o download do applet (que um arquivo contendo bytecode) automaticamente. Se o applet pequeno voc raramente nota ele - a menos que o browser tenha que carregar primeiro a VM? Mas um applet mais complexo pode levar tempo para carregar, e infelizmente alguns browsers no revelam que eles esto ocupados carregando o applet, ento um usurio impaciente pode clicar em "stop" ou recarregar, e acaba ficando frustrado com o que est acontecendo. O que ficou imediatamente claro para muitos desenvolvedores Web foi que eles agora tinham uma chance de fazer uma GUI muito mais sofisticada. Eles poderiam implementar menus avanados, grficos de negcio e coisas em 3D. Voc esses tipos de coisas na Internet se procurar por eles. O problema, entretanto, foi e ainda que as VMs no so 100% compatveis. Uma "GUI" pode no ser a mesma para um programador PC e para um programador Mac. Assim os desenvolvedores se viram em um problema ao testar seus applets em uma grande variedade de browsers, verses e sistemas operacionais. Ele no era portvel? Com o Internet Explorer 5.5 e Netscape 6 e com suas promessas de suporte aos padres, as pessoas comearam a usar menos applets e lanar mo de DHTML para manter as GUIs to simples quanto possvel.

Java Beans
Com o JDK 1.1 (o Java Developer Kit) em Fevereiro de 1997 muitas caractersticas importantes foram adicionadas, entre elas acesso a bancos de dados atravs do Java Database Connectivity (JDBC, muito parecido com o ODBC) e JavaBeans. Se voc conhece SQL e tem alguma experincia com Java ento JDBC ser fcil para voc. Um bom local para usar o JDBC dentro de componentes JavaBeans. Um bean uma classe Java muito simples - veja o exemplo acima - onde voc segue algumas convenes de codificao simples. Um bean funciona como um container para uma coleo de propriedades que voc ou ajusta atravs de mtodos "setters" ou l atravs de mtodos "getters". Ajustar alguns ou todas as propriedades em um bean geralmente permitir que o bean faa algumas processamentos para voc - por exemplo, ler um banco de dados e retornar os resultados Parece difcil? No . Pense em uma situao em que voc d a um bean o CPF de um empregado (atravs de um mtodo set), ento use um mtodo "ler-empregado", e finalmente use um mtodo get para obter os dados pessoais do empregado. Construindo beans que contm a lgica de negcio voc pode ter uma boa biblioteca de componentes reusveis que podem ser usados em qualquer aplicao que tem uma interface Java.

Servlets
Por um tempo, a Sun anunciou novas caractersticas com tanta freqncia que era muito difcil se familiarizar com elas antes que novidades surgissem novamente. Em Junho de 1997 a interface de servlets foi anunciada. Como o nome implica, um servlet a verso para servidor ds applets clientes - componentes para serem usados em um servidor Web. Servlets so destinados a substituir o antigo Common Gateway Interface (CGI), uma das primeiras extenses para servidores Web simples, que tornaram possvel a criao de contedo HTML dinmico. Um programa CGI primeiro obtm uma requisio de uma pgina HTML (geralmente atravs de um formulrio), processa essa requisio, e finalmente envia uma pgina HTML completa de volta ao browser. Um programa CGI pode ser escrito em diversas linguagens - Perl e C so algumas das mais populares. Pgina 3

O problema com o CGI que ele muito ineficiente, uma vez que tem que iniciar um "processo" para cada requisio ao servidor. Servlets rodam em um nico processo usando "threads", permitindo que eles interajam melhor como servidor Web. E como servlets so escritos em Java, eles so portveis. Servlets podem usar JavaBeans para acessar lgicas de negcio e bancos de dados. Assim agora temos uma boa caixa de ferramentas de tecnologias Java para construir aplicaes Web: servlets, beans e JDBC. Essas ferramentas tm provado muita utilidade, e hoje ainda so muito importantes.

Java Server Pages


O problema com os servlets que eles requerem uma boa quantidade de habilidade com programao em Java, e o HTML que eles produzem est misturado dentro do cdigo Java. Uma simples mensagem de boas vindas se pareceria com isto: out.println("<h3>Welcome " + username + "</h3>");

O cdigo acaba no se parecendo muito com o HTML. O que era necessrio era uma melhor separao de cdigo Java e HTML. Java Server Pages (JSP) vieram para resolver isto no fim de 1998. Altamente inspirado no
sucesso do ASP da Microsoft, a Sun apresentou esta abordagem mais amigvel para desenvolvimento de aplicaes Web. Em vez de apenas colocar HTML dentro de programas Java, o JSP tambm oferece o cenrio contrrio. Podemos embutir cdigo Java dentro de nossas pginas HTML. A linha acima agora fica assim: Welcome <%=username%> Uma vez que podemos misturar servlets (utilizando JavaBeans) com JSP quando quisermos, agora possvel permitir que nossos programadores trabalhem com a lgica de negcio em Java, e deixem os projetistas da GUI trabalhando com HTML e JSP. Este realmente um framework que funciona muito bem. No surpresa que JSP til - ASP se provou til pelos ltimos 4 anos. Tendo servlets e beans como companheiros do JSP, os desenvolvedores podem criar aplicaes bastante modulares, escalveis, portveis e de fcil manuteno. Se voc est construindo aplicaes ou prottipos mais simples e voc no tem muitos experts em Java por perto, ento uma soluo JSP pura definitivamente uma possibilidade vivel. Se voc precisa acessar um banco de dados, melhor tratar isto dentro de JavaBeans acessados de suas pginas JSP.

Enterprise Java Beans


Vamos concluir dando uma olhada nos Enterprise Java Beans (EJB), que foram anunciados em Abril de 1997. Com os EJBs damos outro passo na direo da separao de apresentao, fluxo da aplicao e lgicas de negcio. Desta vez a lgica de negcio colocada em componentes que rodam em um servidor EJB, que muito freqentemente um computador diferente daquele que hospeda o servidor Web. Fazendo isto permitimos que outras aplicao - e no apenas aplicaes Web - compartilhem as lgicas de negcio. Mas um servidor EJB faz muito mais do que guardar os componentes de negcio. Ele tambm oferece servios para transaes, segurana, gerenciamento de estado e persistncia. Essas so todas as caractersticas necessrias para o que chamamos de "aplicaes empresariais". Mesmo os EJBs j existirem a alguns anos, eles ainda so considerados uma tecnologia nova. Uma das razes que ferramentas de desenvolvimento de alta qualidade no foram disponibilizadas at recentemente, uma outra razo a interpretao diferente de desenvolvedores de ferramentas das especificaes dos EJB. Mas a principal razo provavelmente que a forma com que uma grande companhia constri aplicaes empresariais no muda to facilmente.

E J2EE, Swing, JINI...?


Bem, este texto no seguir adiante. Mas com certeza h muito mais para falar sobre Java.

Pgina 4

Você também pode gostar