O Mito Java por Sérgio Eduardo Rogrigues
Se fala muito sobre a linguagem Java e muitos ainda confundem o Java como uma linguagem que serve apenas para criar efeitos interessantes nas paginas HTML.
Isto é no mínimo uma ignorância ( no sentido real da palavra ), pois java é tão ou mais poderosa que muitas linguagens de mercado, e olha que já trabalhei com muitas.
É necessário primeiro conhecer em que situação o Java foi criado. Muito foi escrito sobre este começo, e em todos os relatos que tenho, mencionam a seguinte historia.
A SUN destacou uma equipe para desenvolver uma nova linha de negocio, eles queriam desenvolver aplicativos para equipamentos que usamos no dia a dia, como por exemplo televisores, rádios, vídeo cassetes, despertadores, pagers, celulares, impressoras, etc. Note que o numero de equipamentos que nos cercam se torna cada vez maior. Isto mostra a grande demanda que existe. Imagina a quantidade de PCs que existem no mundo, este numero não chega nem perto dos Smart Cards, e imagine então ao numero de geladeiras, de aparelhos de ar condicionado, eu poderia enumerar muitos equipamentos, que estão na nossa vida, que levaria horas para mostrar a potencialidade de tais equipamentos.
Neste contexto, esta equipe se isolou e começou a desenvolver rotinas para que pudessem servir em vários equipamentos. O que se torna lógico se você levar em conta a quantidade. A primeira linguagem que tentaram desenvolver esta biblioteca foi a linguagem "C++", esta linguagem é normalizada e traz grandes características pertencentes apenas as linguagens orientadas a objeto. Porém também traz um grande mal, ela herda todos os defeitos de seu ancestral mais direto, a linguagem "C", esta por sua vez por ser uma linguagem considerada de médio nível, porém de alto nível de complexidade ( diga-se de passagem que só encontrei a linguagem Forth tão complicada !!! ). O problema maior foi que por manter compatibilidade a linguagem "C++" se torna de difícil controle, e por isto de baixa produtividade, pois além de exigir uma mão de obra muito especializada ela também exige que o programador tenha grande conhecimento de linguagem de baixo nível (como o assembler).
Vendo que o projeto se arrastava pelas razões acima descritas, James Gosling tentando resolver os problemas do C++ criou uma linhagem que originalmente denominou de Oak (Carvalho), esta linguagem eliminava grandes vícios como referência a recursos, aritmética de ponteiros e sobrescrita de operadores. Outra facilidade implementada nesta linguagem foi a liberação automática a memória, coisa que na linguagem C e C++ tinha que ser controlada exclusivamente pelo programador com comandos (new e delete ou alloc, malloc, etc.) o que tornava a manutenção uma coisa digna de aventureiros e escovadores de bits, pois só eles conseguiam encontrar o bugs. Outra facilidade que ele implementou já de inicio foi a preparação para programação utilizando múltiplos processadores, e independência dos processadores, já que eles queriam programar tanto um controle remoto de TV como uma torradeira com esta mesma linguagem.
Este desenvolvimento levou mais ou menos 5(cinco anos) de 1990 a 1995, então em 1995 por razões legais a linguagem Oak(cujo nome foi retirado do carvalho de James via ao olhar pela sua janela), foi renomeado para Java (em homenagem aqueles copos de café que eles passavam tomando tanto, utilizados para mante-los acordados durante as madrugadas). Então com o Java lançado, várias empresas lideres de mercado como Adobe, Metrowerks, Microsoft, Novel, Oracle, Symantec, etc., licenciaram o uso da linguagem Java, cada uma contribuindo com a API do Java, fazendo com que esta linguagem no pouco tempo de vida oficial, de 1995 até hoje tenha avançado tanto em sua tecnologia que nem a linguagem C que nasceu por volta de 1971(note bem 28 anos), não possui uma biblioteca padrão tão grande. Hoje o Java na sua versão 1.2 que é nomeada como Java 2 possui mais de 1600 APIs. Hoje sem sombra de dúvida uma das linguagens mais completas que existe.
O segredo do Java
Como uma linguagem tão nova pode revolucionar o mercado ? É a pergunta que mais ouço, e que tem uma resposta muito longa, tentarei resumir:
A industria de software anda em crise, mas não uma crise financeira como o Brasil, uma crise de demanda, pois a requisição do software é muito maior que a capacidade dos desenvolvedores tem para desenvolver aplicações para suprir o mercado. E a cada treinamento, o departamento de informática, se depara com uma sopa de letras de sistemas operacionais, e de ferramentas de desenvolvimento. E cada profissional tenta desenvolver no que é mais fácil para ele, o que não quer dizer que seja o mais adequado para a empresa.
Muitos profissionais erram no dimensionamento de software, por não se darem ao trabalho de desenvolver um projeto decente. Isto mostra realmente a cara do mercado, onde estamos todos sufocados de trabalho, porém, mais e mais este mercado não está preparado profissionais qualificados para suprir a demanda de software.
Neste universo turbulento. Surge o Java, uma linguagem trazendo em sua estrutura, o que mais há de mais moderno em programação, conceitos como Orientação a Objeto, se tornaram a base do Java.
O Java já nasceu Orientado a Objeto, portanto não carrega vícios da programação procedural que o C++ herdou do C, o que já é uma grande vantagem. Os desenvolvedores do Java também tiveram uma grande sacada (que não é original), que é o intermediário entre a compilação e a interpretação.
Explico melhor, quando você desenvolve um compilador geralmente você converte um texto da linguagem humana. Por exemplo, vamos imaginar uma linguagem hipotética, e nesta linguagem hipotética você mande que seu compilador gerar o código do comando para limpar a tela :
LimpeTela;
Provavelmente ele irá gerar um código, se fosse Z80 mais ou menos assim :
LD HL, TELA
LD DE, TELA+1
LD (HL),' '
LD BC,TamanhoTela-1
LDDIR
RET
Esta é a representação em Z80 do código.
Se fosse nos PCS que conhecemos poderia ser o seguinte código :
MOV AX, SegmentoTela
PUSH AX
PUSH AX
POP ES
POP DS
MOV CX,TamanhoTela
XOR SI,SI
XOR DI,DI
INC DI
MOV [SI],' '
REPZ
MOVSB
RET
Olhe que em ambos os casos o objetivo é apagar a tela, mas você nota que o compilador que gera o código de maquina de um, não gera o do outro, e vice versa, isto é o grande problema dos compiladores, é que mediante a isto, se torna necessário, se desenvolver rotinas especificas para cada linguagem, o que é inviável em uma produção em escala, a não ser que você tenha dinheiro para manter uma equipe para cada plataforma de computador conhecido, ou então determinar que a empresa siga apenas com uma linha de programa.
Como foi resolvido este problema.
Nem no espaço nem na terra, uma linguagem compilada a cada microprocessador seria uma boa em matéria de performance, porém se tornava difícil de se desenvolver. Por outro lado uma linguagem interpretada, seria ideal para se desenvolver, pois seria fácil de implementar em várias plataformas, porém seria lenta demais. O que foi decidido, foi unir as duas tecnologias no Java.
Primeiro foi criado uma linguagem comum, de uma maquina que não existia, este código foi denominado Java Code. Depois foi criado um compilador que gerava um código para esta maquina. Porém este código não rodava em máquina nenhuma. É a mesma coisa que você compilar um programa no Mac e levar ao PC e chamá-lo, o programa terá resultados imprevisíveis, pois o mesmo código de maquina que inicializa um registrador em uma máquina, pode limpar a memória de outra. Após gerado o código, eles criaram um programa que lia este código (Java Code) e interpretava-o, interpretando o assembler do Java. Isto permitia que cada fabricante pude-se criar seu próprio compilador, utilizando algoritmos distintos de otimização, podendo portar ser código para várias plataformas.
|