domingo, 29 de julho de 2012

O que é Java?

Post com objetivo de apresentar um pouco sobre a linguagem Java.

  Java é uma tecnologia, mais especificamente uma linguagem de programação orientada a objetos que possui como maior vantagem ser portável entre as diversas plataformas existentes.

Um pouco sobre a história do Java:

  Em 1992 a Sun criou um grupo para desenvolvimento tecnológico conhecido como Green Team sendo liderada por James Gosling. O principal objetivo da equipe era criar um interpretador para facilitar a reescrita de softwares em aparelhos eletrônicos. Apesar de várias tentativas não conseguiram a realização de contrato com as empresas; sendo considerada uma idéia muito inovadora para época.
  Com a vitalidade da internet a Sun percebeu que poderia usar de alguma forma deste interpretador para execução de pequenas aplicações (applets) nos navegadores. A vantagem seria programar em uma única linguagem independente de que plataforma ou navegador seria utilizado; evoluindo o nível de interação ao dinamizar o conteúdo que até então era feito de maneira estática por html. Apesar do lançamento da versão Java 1.0 ter este intuito para internet; o principal sucesso surgiu através do desenvolvimento de aplicações do lado servidor. James Gosling é considerado o principal autor da linguagem; muitos o citam como “O pai do Java”. Em 2009 a Oracle comprou a Sun Microsystems e passou a administrar o desenvolvimento da linguagem Java. Para maiores detalhes sobre a história do Java pode ser feito acessando os links:

http://www.oracle.com/technetwork/java/javase/overview/javahistory-index-198355.html



   Logotipo do Java.

   Duke, o mascote do Java.

O que é JVM?

  Em um tipo de linguagem como o C, o desenvolvedor cria o código fonte e logo após compila o mesmo para um Sistema Operacional específico, ou seja, a aplicação somente será executada se a plataforma (SO) for à mesma utilizada na compilação. Em Java isso não acontece devido ao seu interpretador a JVM. Segundo o Wikipédia: “Máquina virtual Java (do inglês Java Virtual Machine - JVM) é um programa que carrega e executa os aplicativos Java, convertendo os bytecodes em código executável de máquina. A JVM é responsável pelo gerenciamento dos aplicativos, à medida que são executados.” Funciona como uma camada tradutora intermediária entre o Sistema Operacional e a Aplicação,  além de trazer independência de plataforma em geral, a JVM pode tirar métricas e trabalhar com otimização, utiliza o Garbage Collection (Coletor de Lixo) responsável por limpar as áreas da memória que não estão sendo mais utilizadas pela aplicação e também o princípio “Write once, run anywhere”; traduzindo “Escreva uma vez, execute em qualquer lugar”. Este é o slogan que a Sun criou para o Java; graças aos Bytecodes o Java adquiriu uma característica importante; a portabilidade (Independência de plataforma). A JVM é uma especificação, ou seja, existem documentos que definem como deve ser seu comportamento, o que pode ou não pode ter na JVM justamente por este fator; qualquer empresa pode criar sua própria Maquina Virtual Java, como fez a IBM. Todas JVMs seguem as mesmas especificações para não haver divergências ao executar qualquer aplicação.

O que é Bytecode?
  Após escrita e compilada uma aplicação Java é gerado um código intermediário; em uma linguagem entendida pela JVM. Não é considerada uma linguagem nativa da plataforma, mas sim uma linguagem intermediária contendo os opcodes.
Origem do nome: cada opcode (Código de Operação) tem o tamanho de um byte e assim o número de diferentes códigos de operação está limitado a 256.
    Visão do princípio Write once, run anywhere.

Hotspot  e JIT:
  A JVM tem a capacidade de monitorar e otimizar o código que está sendo executado; através de dois elementos fundamentais o Hotspot e JIT: Just inTime Compiler:
O Hotspot identifica um código executado com maior freqüência.
O JIT compila o código identificado pelo Hotspot para instruções nativas da plataforma.
Trabalhando em conjunto estes dois elementos propulsionam a aceleração na execução da aplicação. Todo este processo é feito durante a execução da aplicação.
Versões do Java:
  Muitas pessoas fazem confusão sobre as versões, são elas:
Java Development Kit (JDK ou Java 1.0) ano 1996 - É a 1ª versão sendo hoje usada para compatibilidade de browsers mais antigos;

Java Development Kit (JDK ou Java 1.1) ano 1997 - Obteve muitas bibliotecas adicionadas das quais se destacaram o Java RMI, JavaBeans, novo modelo de eventos, JDBC (driver para conexão com banco de dados).
Java Stadard Edition (J2SE 1.2 ou Java2) ano 1998 - Com o tempo surgiu a versão do Java 1.2, que obteve um grande aumento das classes na biblioteca Java (API), ficando considerada a versão da mudança do nome para as versões do produto (JDK) e também sendo optada pela divisão de 3 tipos de plataformas. O principal motivo para essa ação foi que muitos desenvolvedores e usuários estavam confundindo a linguagem Java da linguagem Javascript, que são diferentes. A partir daqui todas as versões Java foram denominadas de Java 2 Standard Edition, que passaram a ter apelidos ou codinomes, esta versão ficou conhecida como Playground da qual foi adicionado o Framework Collections entre outros.
Java Stadard Edition - J2SE 1.3 ano 2000 - Codinome Kestrel, inclusão das bibliotecas JNDI, JavaSound entre outros.
Java Stadard Edition J2SE 1.4 ano 2002 - Codinome Merlin, criada a palavra reservada “assert”, biblioteca NIO entre outros.
Java Stadard Edition J2SE 5.0 ano 2004 - A versão mais usada, sendo conhecida com o codinome Tiger. Apesar da versão ser 1.5, agora é chamada apenas de 5. Adições importantes como: Enumeração, Autoboxing, Generics, for-each entre outros estão nela.

Java Stadard Edition JSE 6 ano 2006 - Codinome Mustang, teve outras alterações que mudaram na nomenclatura (remoção do 2 - J2SE) e melhora significativa na performance e na estabilidade tendo o surgimento do JIT.
Java Stadard Edition JSE 7 ano 2011 - possuindo alguns aperfeiçoamentos que são:

o Suporte ao uso de strings em condições do switch;

o Inferência na criação de objetos com tipos genéricos;

o Simplificação na invocação de métodos com parâmetros varargs e tipos genéricos;

o Gerenciamento automático de recursos, tais como conexões a bancos de dados, I/O;

o Possibilidade de tratar diversas exceções em um mesmo catch (Multicatch) entre outros;

Fonte sobre informações das versões: http://www.devmedia.com.br/entendendo-e-conhecendo-as-versoes-do-java/25210

Ramificações do Java:

 Java SE (Java Standart Edition): é uma ferramenta de desenvolvimento para a plataforma, contendo todo ambiente requisitado para criação e execução de aplicações Java.

 Java EE (Java Enterprise Edition): direcionada a programação para servidores; lidando com aplicações corporativas e internet.

 Java ME (Java Micro Edition): Programação para dispositivos móveis.

(Apesar de este post ser uma apresentação da tecnologia Java, as próximas postagens levarão em conta o Java SE, o qual se faz a categoria da postagem).

Onde usar Java?

  Java é uma linguagem estável e reconhecida pelo mercado; sendo capacitada para criação de aplicações em cenários de médio e grande porte, ou até mesmo em aplicações que no futuro poderão sofrer certa expansão. Outro ponto interessante seria o uso de Java em ambientes heterogêneos, ou seja, onde varias plataformas (Linux, Mac, Windows) fazem parte do mesmo cenário; podendo as aplicações ser executadas nas mais diversas plataformas.

Onde não necessita Java?

  Em alguns projetos de pequenas aplicações onde não é necessário um grande número de desenvolvedores envolvidos.

O que é JRE e JDK?

  JRE (Java Runtime Environment) é o ambiente composto da JVM e das bibliotecas para execução de aplicações Java.

  JDK (Java Development Kit) composto pelo JRE e um Kit completo de desenvolvimento, utilizado por desenvolvedores para compilar e executar aplicações Java.

Ambos são facilmente encontrados para download no site da Oracle:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
  


   Modelo representando a abrangência do JRE e do JDK no Java.

Nenhum comentário:

Postar um comentário