Apos alguns dias sem postar nenhuma matéria para vocês nada como um post bem interessante sobre a Linguagem e Tecnologia Java eu espero que gostem.

Um pouco de História

A Sun criou um time (conhecido como Green Team) para desenvolver inovações tecnológicas em 1992. Esse time foi liderado por James Gosling, considerado o pai do Java. O time voltou com a ideia de criar um interpretador (já era uma máquina virtual, veremos o que é isso mais a frente) para pequenos dispositivos, facilitando a reescrita de software para aparelhos eletrônicos, como vídeo cassete, televisão e aparelhos de TV a cabo.
A ideia não deu certo. Tentaram fechar diversos contratos com grandes fabricantes de eletrônicos, como Panasonic e outras, mas não houve êxito devido ao conflito de interesses.
Hoje, sabemos que o Java domina o mercado de aplicações para celulares com mais de 2.5 bilhões de dispositivos compatíveis, porém em 1994 ainda era muito cedo para isso. Com o advento da web, a Sun percebeu que poderia utilizar a ideia criada em 1992 para rodar pequenas aplicações dentro do browser. A semelhança era que na internet havia uma grande quantidade de sistemas operacionais e browsers, e com isso seria grande vantagem poder programar numa única linguagem, independente da plataforma. Foi aí que o Java 1.0 foi lançado: focado em transformar o browser de apenas um cliente fino (thin client ou terminal burro) para uma aplicação que possa também realizar operações, não apenas renderizar html. Atualmente os applets realmente não são o foco da Sun. É curioso notar que a tecnologia Java nasceu com um objetivo em mente, foi lançado com outro, mas, no final, decolou mesmo no desenvolvimento de aplicações do lado do servidor. Muita sorte? Em 2009 a Oracle comprou a Sun, fortalecendo a marca. A Oracle sempre foi, junto com a IBM,uma das empresas que mais investiram e fizeram negócios com tecnologias Java. A motivação original do Java era a necessidade de uma linguagem independente de plataforma que podia ser utilizada em vários produtos eletrônicos, tais como torradeiras e refrigeradores. Um dos primeiros projetos desenvolvidos utilizando Java era um controle remoto pessoal chamado *7 (Star Seven).
Ao mesmo tempo, a World Wide Web e a Internet foram ganhando popularidade. Gosling achava que a linguagem Java poderia ser usada para programação da Internet.

O que é a tecnologia Java?

Ela é uma linguagem de programação

Como linguagem de programação, Java pode ser utilizado para criar todos os tipos de aplicações existentes, de programas de Inteligência Artificial para Robôs até programas para aparelhos celulares.


Ela é um ambiente de desenvolvimento

Como ambiente de desenvolvimento, a tecnologia Java fornece um grande conjunto de ferramentas: um compilador, um interpretador, um gerador de documentação, ferramenta de empacotamento de classes de arquivos e outros.

Ela é um ambiente de aplicação

Aplicações de tecnologia Java são tipicamente programas de propósito geral que executam
sobre uma máquina onde o JRE Java Runtime Environment é instalado.

Ela é um ambiente de distribuição

Há dois ambientes de distribuição principais: Primeiro, o JRE, fornecido através do Java 2 Software Development Kit (SDK), contém um conjunto completo de arquivos de classes para todos pacotes de tecnologia Java. Outro ambiente de distribuição é o navegador web, ou seja, o browser. Os navegadores web atuais fornecem interpretação à tecnologia e ambiente Java em tempo de execução.

Algumas características do Java

Máquina Virtual Java

A Máquina Virtual Java é uma máquina imaginária que é implementada através de um software emulador em uma máquina real. A JVM provê especificações de plataforma de hardware na qual compilase todo código de tecnologia Java. Essas especificações permitem que o software Java seja uma plataforma independente pois a compilação é feita por uma máquina genérica conhecida como JVM.
O bytecode é uma linguagem de máquina especial que pode ser entendida pela Máquina Virtual Java (JVM). O bytecode é independente de qualquer hardware de computador particular. Assim, qualquer computador com o interpretador Java pode executar um programa Java compilado, não importando em que tipo de computador o programa foi compilado.

Garbage Collection

Muitas linguagens de programação permitem ao programador alocar memória durante o tempo de execução. Entretanto, após utilizar a memória alocada, deve existir uma maneira para desalocar o bloco de memória de forma que os demais programas a utilizem novamente. Em C,C++ e outras linguagens o programador é o responsável por isso. Isso, às vezes, pode ser difícil já que instâncias podem ser esquecidas de serem desalocadas da memória pelos programadores e resultar no que chamamos de escapes da memória. Em Java, o programador não possui a obrigação da retirar uma variável criada das áreas de
memória, isto é feito por uma parte da JVM específica que chamamos de Garbage Collection. O Garbage Collection é o grande responsável pela liberação automática do espaço em memória. Isso acontece automaticamente durante o tempo de vida do programa Java.

Segurança do Código

Segurança do Código é alcançada em Java através da implementação da Java Runtime Environment (JRE).A JRE roda códigos compilados para a JVM e executa o carregamento de classes (através do Class Loader), verificação de código (através do verificador de bytecode) e finalmente o código executável. O Class Loader é responsável por carregar todas as classes necessárias ao programa Java. Isso adiciona segurança através da separação do namespace entre as classes do sistema de arquivos local e aquelas que são importadas pela rede. Isso limita qualquer ação de programas que podem causar danos, pois as classes locais são carregadas primeiro. Depois de carregar todas as classes, a quantidade de memória que o executável irá ocupar é determinada. Isto acrescenta, novamente, uma proteção ao acesso não autorizado de áreas restritas ao código pois a quantidade de memória ocupada é determinada em tempo de execução. Após carregar as classes e definir a quantidade de memória, o verificador de bytecode verifica o formato
dos fragmentos de código e pesquisa nestes fragmentos por códigos ilegais que possam violar o direito de acesso aos objetos. Depois que tudo isso tiver sido feito, o código é finalmente executado.

Fases do Programa Java

A figura seguinte descreve o processo de compilação e execução de um programa Java. O primeiro passo para a criação de um programa Java é escrever os programas em um editor de texto. Exemplos de editores de texto que podem ser utilizados: bloco de notas, vi,nano, emacs, etc. Esses arquivos são armazenados no disco rígido com a extensão .java. Após o programa Java ter sido criado e salvo, compile o programa utilizando o Compilador Java. A saída desse processo é um arquivo de bytecode com extensão .class. O arquivo .class é então lido pelo Interpretador Java que converte os bytecodes em linguagem de máquina do computador que se está usando. 


Ciclo de vida de desenvolvimento de um programa


Análise → É a definição concreta do escopo (domínio do problema, o que será feito). Um programa é feito em cima de uma necessidades (Essa necessidade é determinada no escopo do problema). É um processo da análise de todas as necessidades referentes ao problema.
Projeto → Pega todas as necessidades encontradas na etapa de análise e cria as
especificações que tem como objetivo resolver o domínio do problema.
Codificação ou (Desenvolvimento) → Todas as especificações criadas no estágio de
montagem do projeto agora se tornarão objetos na programação.
Testes → Assegura que, a junção de objetos criados na codificação das classes resolve o
domínio do problema (as necessidades satisfeitas) que o processo de análise encontrou.
Implementação → Com o programa já pronto e testado, existe a disponibilização para os
clientes que encontrarão possíveis falhas.

Este é um artigo adaptado da apostila
"Projeto E-Jovem Programação Java"