segunda-feira, 24 de dezembro de 2007

[4] Entendendo como o Java funciona - PARTE 2 de 2

Máquina Virtual Java - Java Virtual Machine (JVM)

Não se pode falar em portabilidade do Java sem envolver o principal aliado da linguagem: sua máquina virtual. A Máquina Virtual Java - ou JVM - permite que Java seja uma linguagem multiplataforma, isto é, permite que o conceito Write Once, Run Everywhere seja aplicado à prática - com as restrições que vimos no Post anterior, é claro.

Para que você compreenda um pouco sobre o funcionamento da JVM, é necessário que tenha ao menos um conhecimento superficial sobre qual a utilidade de um compilador. Se você é programador de primeira viagem, não se preocupe. Faremos uma breve explanação para que comecemos a entender como um compilador e a JVM funciona.

Compilador

Imagine que a terra foi invadida por alienígenas, e desde então 5 anos se passaram. Logo, alguns poucos seres humanos adquiriram a habilidade de se comunicar, via escrita, em idioma terráqueo e em idioma alienígena. Se comunicar diretamente com um alienígena não era uma tarefa fácil, pois mesmo na forma escrita, a comunicação era bastante complexa para seres humanos. Desde já, a ajuda dos tradutores era indispensável para uma boa comunicação entre uma pessoa e um e.t.

Os tradutores são exigentes. Mesmo para uma simples frase que você queira enviar para um alenígena, eles além de exigirem que você escreva corretamente as palavras, exigem também que você obedeça a um conjunto de regras semânticas pré-estabelecidas para que a tradução seja bem sucedida.

Se queremos enviar uma mensagem para alguém devemos tornar esta mensagem entendível para o receptor, para que este compreenda o que queremos dizer. Como todos sabemos, para se enviar uma mensagem, não basta escrever corretamente, mas também escrever de forma que você consiga se expassar a mensagem que você quer.

Para nos comunicarmos com um computador, precisamos da ajuda de um tradutor - como na pequena ficção acima. A este tradutor chamamos de compilador. Uma linguagem de programação permite que os programadores enviem instruções para os computadores de uma maneira mais amigável, mais entendível aos seres humanos. Porém, os computadores não entendem o que está escrito de forma "amigável" aos seres humanos, pois eles possuem sua própria linguagem, a linguagem de máquina.

Observe a figura abaixo:

* Na etapa 1, seu código, de uma linguagem de programação qualquer, foi digitado e está disponível para ser compilado por um compilador da linguagem em questão.
* Na etapa 2, seu código-fonte será convertido em código de máquina pelo compilador, e este estará pronto para ser executado em um determinado Sistema Operacional.

O compilador da linguagem Java

O JDK inclui o compilador da linguagem, que podemos chamá-lo de javac. Porém, em vez de trabalhar como os compiladores usuais, melhor dizendo, em vez de converter o código-fonte diretamente em código de máquina, o javac o converte em bytecodes, que são códigos que não serão executados diretamente pelo processador de uma máquina, mas por uma máquina virtual.

Supondo que você queira executar um programa Java cujo código esteja escrito em um único arquivo, observe o esquema abaixo para compreender o percurso escrita do código --> execução:


* Na etapa 1, seu código foi digitado e está disponível para ser compilado.

* Na etapa 2, o javac - compilador da linguagem Java - foi acionado, e este por sua vez verificará, como todo compilador, se o código está escrito corretamente, ou seja, se o código é compilável. Estando o código sem erro sintático ou semântico algum, este será convertido em bytecodes, que serão interpretados pela JVM. Caso contrário o processo de compilação
será interrompido e o motivo da interrupção deverá ser exibido.

* Na etapa 3, a Máquina Virtual Java - JVM - se encarrega de interpretar os bytecodes gerados pelo javac para que seu código seja executado. No caso da plataforma J2SE, o código compilado neste exemplo deverá rodar em Windows, Linux e Solaris.


NÃO ENTENDEU PARA QUÊ SERVEM OS BYTECODES E A JVM?

Não se preocupe. O esquema mostrado acima reflete a capacidade multiplataforma do Java. Veja, uma vez que um código-fonte Java é compilado, este é transformado em bytecodes. E estes bytecodes são códigos independentes de plataforma, isto é, os bytecodes gerados pelo javac podem ser interpretados por uma JVM do Linux, uma JVM do Windows, ou outra JVM de outro SO. A função da JVM é executar os bytecodes em uma determinada plataforma, melhor dizendo, não importa em que Sistema Operacional os bytecodes foram gerados, porém, se seu programa precisa rodar em uma máquina com SO Linux, esta máquina deve possuir uma JVM instalada para que a mesma possa interpretar os bytecodes e executar o programa neste computador.



Java é uma linguagem compilada ou interpretada?

Java é uma linguagem compilada por ter seu código compilado antes de ser executado. E Java também é uma linguagem interpretada por ter seus bytecodes interpretados por uma máquina virtual.



Entendendo o que é JRE

Para desenvolver seu programa Java com certeza você teve de baixar o JDK, correto? O JDK é um kit completo para desenvolvimento, que inclui uma máquina virtual - JVM; um compilador - que acabamos de abordar; uma imensa e rica API e toda sua documentação.

Imagine que você queira distribuir sua aplicação para 10 clientes, todos eles com diferentes máquinas e diferentes Sistemas Operacionais. De imediato você pode pensar:

"não há problemas. Em cada máquina eu instalo uma JVM para rodar meu programa e problema resolvido.".

Este tipo de pensamento está correto, porém um pouco ingênuo. Lembre-se de que a JVM é apenas um complemento do JDK. Daí outra idéia pode surgir:

"se a JVM é um complemento do JDK, então vou instalar o JDK nas máquinas de todos os clientes."

Se você pensou assim, parabéns! Esta é uma solução, mas infelizmente não é a mais eficiente. O motivo é simples: você por acaso se lembra de quantos megabytes, aproximadamente, são o instalador do JDK? Nada minúsculo, não é? E por acaso você já verificou o tamanho do Java já instalado no seu computador? Algo perto de 200 MB, no caso do Java 5. Porém, há um detalhe que não foi citado ainda: a instalação do JDK implica também na instalação do JRE - Java Runtime Environment. O JRE é tudo o que você precisa instalar nas máquinas dos 10 clientes. E o melhor é que o JRE pode ser baixado e instalado individualme
nte, sem a necessidade instalar também o JDK. O peso do JRE é muito inferior ao peso do JDK. Desde já é mais vantajoso instalá-lo nas máquinas que irão rodar seu programa, em vez de instalar o JDK inteiro. Seria um desperdício de memória instalar um Kit completo de desenvolvimento de programas Java em máquinas que deveriam apenas executar um programa Java.


JRE em Websites

Talvez algum dia você se depare com um website que requeira exibir um Applet. Se você não tiver uma JRE instalada, você não conseguirá executá-lo em seu browser. A partir do momento em que você instala o JDK ou o JRE, automaticamente os plugins do JRE são instalados em alguns browsers.


ATENÇÃO!

Lembre-se de que o Java tem várias versões, e a cada nova versão ele inclui novos recursos e mantém* os recursos da versão anterior. Então, se os bytecodes possuem código do Java 5, estes deverão ser interpretados por uma JRE do Java 5 ou superior. Não é possível executar um código de Java 5 em uma JRE 1.4 ou inferior. E assim será também para as versões posteriores.

* ao decorrer das versões alguns recursos são depreciados - em inglês: deprecated - por terem se tornado obsoletos.



Bem, este Post encerra por aqui. Breve breve estaremos aprendendo a escrever e executar nosso primeiro programa .

Tenha um bom dia.

quarta-feira, 19 de dezembro de 2007

[3] Entendendo como o Java funciona - PARTE 1 de 2

Java, uma linguagem multiplataforma (cross-platform)

Você provavelmente já ouviu falar que Java é uma linguagem multiplataforma. Antes do seu nascimento como linguagem de programação, seus criadores, visando o futuro, planejavam um projeto que interligaria computadores a outros equipamentos eletrônicos freqüentemente utilizados pelas pessoas, tais como: televisores, geladeiras, controles remotos, etc. Tal projeto resultou na criação de uma linguagem baseada em C++, a linguagem Oak. Isso mesmo, Oak era o nome da linguagem Java até descobrirem que já existia uma linguagem de programação com tal nome.

O grande lema da linguagem Java é: Write once, run everywhere! - Escreva uma vez, rode em qualquer lugar. E seu lema não é esse por acaso, pois seu significado teórico defende que uma vez que um programa foi escrito na linguagem Java, este programa pode ser executado em qualquer aparelho eletrônico que suporte Java, seja ele um celular, uma torradeira ou até mesmo um tênis - quem sabe um dia. Porém, infelizmente não é assim que funciona na prática. Java é uma linguagem multiplataforma, mas não de forma tão genérica como seria o ideal.

Como foi dito no primeiro Post do Java Imediato, Java se divide em 3 edições: J2SE, J2EE e J2ME. Em uma breve explanação sobre cada uma delas foi afirmado que a plataforma J2ME é voltada para dispositivos de memória limitada em relação aos PCs. Pare e pense sobre quantos dispositivos eletrônicos
de alta tecnologia com "memória limitada" existem no mundo à fora hoje e quantos novos mais existirão daqui a alguns meses ou anos. Sem falar que a maior parte desses dispositivos possuem diferentes implementações, diferentes limitações, diferentes Sistemas Operacionais, etc. Já pensou que loucura seria desenvolver um código totalmente específico para cada um desses dispositivos? A palavra-chave para a solução deste problema chama-se portabilidade.

Java é uma linguagem portável, isto é, o código-fonte de uma aplicação Java escrita para uma plataforma específica pode ser utilizado também para uma outra plataforma. Em outras palavras, vamos supor que você construiu um jogo para o celular Nokia 6600, e que você também deseja que seu jogo funcione em um celular Sony Ericsson K310i. Não será necessário que você reescreva completamente o jogo para que ele funcione em outro celular. A solução para este problema seria reutilizar o código original, realizando alguns ajustes como tamanho da tela - pois ambos possuem tamanhos de tela diferentes -, os sons a serem tocados - esses dois celulares podem não conseguir reproduzir o mesmo formato de som-, etc. Portanto perceba desde já o porquê de Java não ser genericamente multiplataforma, pois de plataforma para plataforma geralmente há uma mínima diferença entre elas, que "obrigam" o programador a fazer pequenas adaptações no seu aplicativo.

Assim como para dispositivos móveis, o conceito multiplataforma para Desktops também existe. Ou seja, uma vez que seu aplicativo Desktop é escrito, é possível que ele rode nos Sistemas Operacionais Windows, Mac OS, Linux e Solaris. Porém, dependendo da situação, seu programa talvez precise sofrer alterações para que
ele funcione como esperado em todos os SO's - Sistemas Operacionais.

Bem, este é o fim da parte 1 do tópico Entendendo como o Java funciona. Próximo Post vamos entender melhor como o Java torna possível esta "mágica" da portabilidade.

Só para complemento, se você quer saber mais sobre J2ME, pode procurar pelo livro Programação JAVA para WIRELESS, de Érico Tavares de Mattos pela editora Digerati. O livro faz uma ótima explanação sobre as características do J2ME, além de também ensinar a como programar nesta plataforma.

Um abraço. Até a próxima


terça-feira, 11 de dezembro de 2007

[2] Configurando o Java e o Eclipse


Olá! Neste Post vamos aprender como configurar o Java no ambiente Windows e o que fazer para iniciar o Eclipse. São passos simples e rápidos. Vamos lá?


Configurando o Java

Como você pôde perceber, não há mistérios na instalação do SDK do Java no Windows. Sua instalação quase que é apenas Next, Next, Next... porém, é necessário fazer uma configuração antes de você iniciar sua Jornada Java. Mais uma vez não há mistérios. Faça os passos abaixo:

  1. No ícone Meu Computador - que deve estar no seu desktop ou na barra de tarefas, abra suas propriedades - clique com botão direito em cima do ícone -> Propriedades:
  2. A seguir, clique na aba "Avançado" e logo em seguida clique em "Variáveis de Ambiente":
  3. Em "Variáveis de ambiente", clique no botão "Nova" no grupo das variáveis do sistema:
  4. Dê o nome "JAVA_HOME" à nova variável de sistema como seu valor e especifique o diretório de instalação do seu JDK:
  5. Após a criação da variável JAVA_HOME, ainda no grupo de variáveis do sistema, procure pela variável "Path" e clique em "Editar":
  6. Após o último ponto-e-vírgula, aponte para a pasta "bin" do JDK instalado na sua máquina:


Não entendeu bem como o passo 6 funciona? Tudo bem. Supomos que no campo "Valor da variável" existisse o valor: "C:\oracle\bin; C:\System32\sys;". Logo, adicionando o diretório da pasta "bin" do seu JDK no campo "Valor da variável", seu novo valor seria: "C:\oracle\bin; C:\S
ystem32\sys; C:\Arquivos de Programas\Java\jdk1.5.0\bin;". Cada variável é separada pelo delimitador ponto-e-vírgula ";".





Bem, seguindo os passos anteriores, você acabou de configurar o Java para o deixar pronto para uso. Para conferir se a instalação foi bem sucedida, abra uma janela do Prompt do MS-DOS e digite "Java" . Uma tela semelhante a essa deve ser exibida:

Se o Prompt do MS-DOS não reconhecer o comando "Java", verifique se os passos descritos anteriormente foram executados corretamente. Se o problema persistir, tente reiniciar sua máquina.



Executando o Eclipse

Seu Eclipse veio em forma de arquivo .zip, correto? Você o abre e encontra apenas uma pasta chamada "Eclipse". Você a abre e encontra mais pastas, alguns arquivos e nenhum instalador. Você não baixou o arquivo errado, tá? A explicação para isso é que o Eclipse não precisa ser instalado através de um Setup, como de costume. Para começar a usá-lo, transfira a pasta "Eclipse" que está dentro do arquivo .zip para algum local do seu computador e abra o executável Eclipse.exe. Sugestão: arraste-a para o diretório raiz de sua unidade de disco. Exemplo: "C:\".

Não sei se foi seu caso, mas muitas pessoas tentam executar o Eclipse antes de configurar o Java corretamente - passos anteriores. O resultado é uma bela mensagem de erro e uma "não-execução do Eclipse".

Ao abrir o Eclipse, a primeira tela exibida é chamada "Workspace Launcher". Como será explicado posteriormente em outro Post, esta tela exige que você especifique o seu
"local de trabalho" para que você construa e manipule seus projetos. Você pode usar um diretório já existente ou criar um novo, fica a seu gosto. Você pode criar quantos Workspaces você quiser.




Com relação a configuração do ambiente Java e da IDE Eclipse, encerramos por aqui. No próximo Post vamos nos aprofundar um pouco sobre a linguagem Java para entendermos o porquê de algumas coisas que fizemos até o momento e de algumas coisas que faremos.


Um abraço

sábado, 8 de dezembro de 2007

[1] Bem vindo ao Java

Bem, se você é "Javeiro" de primeira viagem, você está no lugar certo. Neste Post vamos aprender um pouco sobre a tão famosa linguagem Java.

Java é uma linguagem de programação bastante saudável de se aprender, porém vai exigir de você um bom esforço para que você a domine, assim como toda linguagem.
O que eu recomendo para que seus estudos Java dêem certo: um bom livro, internet, fazer perguntas - muitas perguntas - e pôr os neurônios para trabalhar em frente a um computador - ou até mesmo deitado na cama, quem sabe.

Algo que você precisa saber é que o Java em si se divide em três edições diferentes: J2SE, J2ME e J2EE. Todos as três são centradas em objetivos diferentes, são eles:

  • J2SE (Java 2 Standard Edition) : destinado a aplicações desktop, das mais simples como um programinha que gerencia cadastros de pessoas em uma academia de ginástica, até as mais complexas como: jogos 3D, chats, editores gráficos, etc.
  • J2ME (Java 2 Micro Edition): bem, se a tecnologia do seu celular é GSM, você provavelmente já jogou alguns joguinhos nele, não!? Pois é, existe 98% de chance de que o jogo que você jogou foi criado com tecnologia J2ME. Esta edição do Java é destinada não só para celulares, mas para "pequenos dispositivos" em geral, que possuem quantidade de memória bastante limitada em relação a um PC, tais como: torradeiras, PDAs, relógios, entre outros. Mas Java ME - um apelido para J2ME - também não é limitado a jogos. Você pode por exemplo construir um programa de video conferência, ou até mesmo um programa que lhe mantenha diariamente atualizado com o valor atual do dólar e do euro.
  • J2EE (Java 2 Enterprise Edition): para não estender muito sua finalidade, esta edição é destinada a aplicações de grande porte com arquitetura cliente-servidor. Construir uma aplicação com J2EE possui uma série de benefícios, entre eles o reuso de componentes.

O foco do nosso tutorial será no J2SE (Standard Edition), pois ele é o mais indicado para o aprendizado da linguagem - e com toda razão.


JAVA 1.4... JAVA 1.5... JAVA 5... JAVA 6... por quê tantas versões?

Bem, como Java é uma linguagem viva e em constante atualização, obviamente sua versão é incrementada de tempos em tempos. Entretanto é relevante saber que a cada nova versão do Java grandes mudanças ocorrem. Isso não significa dizer que você terá que reaprender a como programar em Java a cada nova versão, muito pelo contrário, você vai aprender novos recursos que a nova versão disponibiliza.

Em suas primeiras versões, Java era bastante criticada por ser uma linguagem lenta. E infelizmente era mesmo. Seu desempenho melhorou muito em sua versão 1.4, mas foi com a chegada da ver
são 1.5, ou 5.0, que seu desempenho obteve uma melhora espetacular e funcionalidades bastantes interessantes foram adicionadas à linguagem. Java 5 possui o codinome TIGER, desde já não estranhe se por acaso você encontrar a expressão Java Tiger. Agora você já sabe que estão se referindo ao Java 5.

A versão mais atual do Java
é 1.6, ou 6.0 - codinome Mustang. Porém, vamos iniciar nosso tutorial com o Java 5, pois temos ainda muito o que aprender com esta versão.



QUER PROGRAMAR AGORA? ENTÃO PREPARE-SE...


Para começar a programar você precisa fazer um checklist do que você tem em mãos:
  • * Um computador com Sistema Operacional Windows, Linux ou Mac instalado
  • * SDK da linguagem Java
  • * Uma IDE, de preferência. Se não quiser programar em bloco de notas...

Não sabe o que diabos é SDK? SDK (Software Development Kit) é um kit de desenvolvimento que lhe possibilita desenvolver aplicações em uma determinada linguagem de programação, no nosso caso: Java. Fique atento e não confunda-se, pois você pode encontrar a sigla JDK (Java Development Kit) ou até mesmo JSDK (Java System Development Kit), que no final significam SDK da linguagem Java.

Já um(a) IDE (Integrated Development Environment) é um ambiente de desenvolvimento que vai lhe ajudar bastante no momento da programação. Uma IDE possui uma interface gráfica intuitiva para que o programador facilmente detecte e corrija erros de compilaç
ão, crie novos projetos, automatize tarefas, etc.

E então, vamos começar a baixar?


Baixando o SDK

Aqui vai o endereço do SDK do Java 5 que você precisa fazer o download:

http://java.sun.com/javase/downloads/index_jdk5.jsp



Após clicar em Download, você aceita os acordo de licença, aguarda um instante e escolhe a versão do seu Sistema Operacional + o tipo de instalação que você quer.



Após a seleção, clique em "Download selected with Sun Download Manager". Agora é só baixar.


Baixando uma IDE

Você pode escolher uma ou mais IDEs entre as mais variadas existentes. São algumas delas: Eclipse, Netbeans, JEditor, JGrasp, BlueJ e GEL. Todas elas são gratuitas. Não seria muito produtivo se a cada Post eu desse suporte a cada uma dessas IDEs, desde já recomendo que você baixe a IDE Eclipse, cujo release mais recente chama-se Eclipse Europa. Você pode baixar o Eclipse em: http://www.eclipse.org/downloads/ clicando em "Eclipse IDE for Java Developers".




Bem, por esse Post é só. Continue a ler o Java Imediato para que vejamos como configurar o ambiente Java no Windows e a entender melhor como essa fantástica linguagem funciona.

Um abraço. Até a próxima