James Gosling é muitas vezes apresentado como o «pai de Java». A fórmula é prática, mas esconde a questão que torna o seu trabalho interessante: como fazer o mesmo software funcionar em máquinas muito diferentes sem abdicar da robustez necessária a dispositivos ligados em rede?
No início dos anos 1990, Gosling procurou essa resposta com uma pequena equipa da Sun Microsystems. Oak, futuro Java, nasceu primeiro no projeto Green para computação embebida, e não como linguagem para a Web. A Web dar-lhe-ia depois visibilidade mundial.
Programar para além da workstation
James Arthur Gosling nasceu em 1955 perto de Calgary, no Canadá. Depois de estudar na Universidade de Calgary, concluiu em 1983 um doutoramento em Carnegie Mellon. Entrou na Sun Microsystems em 1984.
A Sun antecipava que a informática chegaria a dispositivos de consumo com processadores variados. Um programa compilado diretamente para um processador precisava normalmente de adaptação para outro, enquanto linguagens próximas do hardware permitiam erros de memória difíceis de controlar.
Do projeto Green a Oak
Em 1991, Patrick Naughton, Mike Sheridan e Gosling lançaram o projeto Green. Gosling considerou C++, mas julgou difícil garantir a simplicidade, portabilidade e robustez pretendidas. Concebeu então Oak.
Oak conservou uma sintaxe familiar a C e C++, removendo várias fontes de complexidade. Gestão automática de memória, ausência de aritmética geral de ponteiros e organização por classes pretendiam reduzir erros. O compilador produzia bytecode, e não código para um processador específico.
Uma máquina virtual executava esse bytecode em cada sistema. O compilador podia produzir um programa comum e a VM tratava das particularidades da plataforma. Verificação de bytecode e um ambiente controlado procuravam ainda limitar o que programas descarregados podiam fazer.
A Web muda a trajetória
Em 1993 e 1994 a Web espalhou-se por computadores muito diferentes, exatamente o ambiente heterogéneo para o qual Oak fora pensado. Como o nome Oak já estava protegido, a linguagem foi rebatizada Java e anunciada em 1995 com o HotJava.
As applets demonstravam que o mesmo bytecode podia ser descarregado e executado em vários sistemas. «Write once, run anywhere» resumia a ambição, sem significar que bibliotecas, interfaces, versões da VM ou desempenho fossem sempre idênticos.
As applets desapareceram devido a problemas de segurança, desempenho e interoperabilidade, mas Java encontrou um lugar duradouro em aplicações empresariais, servidores, ferramentas e, indiretamente, no ecossistema Android.
Uma linguagem definida pelos seus compromissos
Java não inventou isoladamente a programação orientada a objetos, a recolha automática de memória ou as máquinas virtuais. O sucesso veio da combinação coerente dessas ideias.
A tipagem estática deteta alguns erros antes da execução. A gestão automática evita libertação manual de cada alocação, sem eliminar todos os problemas de recursos. As exceções estruturam os erros e a biblioteca padrão fornece abstrações comuns para redes, ficheiros, interfaces e concorrência.
Estas escolhas têm custos: a VM acrescenta uma camada, o garbage collector pode introduzir pausas e a compatibilidade de longo prazo limita simplificações radicais. Compiladores JIT, novos coletores e novas versões reduziram progressivamente esses limites.
A interpretação de bytecode podia ser mais lenta que código nativo. As VMs adotaram por isso compilação just-in-time, observando o programa em execução e traduzindo as partes mais usadas em código máquina otimizado.
Uma VM pode conhecer caminhos realmente percorridos, tipos encontrados e carga real da máquina. Pode otimizar e reverter certas decisões se as hipóteses deixarem de ser válidas.
A segurança evoluiu de modo semelhante. As primeiras applets usavam uma sandbox, mas vulnerabilidades mostraram que uma fronteira de software complexa nunca é garantia absoluta. O navegador deixou gradualmente de ser o principal ambiente Java.
A partir de 2006, a Sun publicou grande parte de Java como software livre em torno do OpenJDK, transformando-o numa plataforma sustentada por várias empresas e comunidades.
O papel de Gosling numa obra coletiva
Gosling é o principal criador da linguagem e um dos seus porta-vozes mais visíveis. Especificação, bibliotecas, VM e ecossistema resultam, porém, do trabalho de muitos engenheiros. Patrick Naughton, Mike Sheridan, Bill Joy, Guy Steele e sucessivas equipas da Sun tiveram papéis distintos.
Depois da aquisição da Sun pela Oracle, Gosling saiu em 2010. Trabalhou depois, entre outros, na Google, Liquid Robotics e Amazon Web Services. Java continuou a evoluir sem depender de uma única pessoa.
Porque James Gosling continua importante
A sua herança aparece numa ideia hoje familiar: distribuir software numa forma intermédia e confiar a portabilidade, otimização e parte da segurança a um ambiente de execução comum.
A JVM executa hoje também Kotlin, Scala e Clojure. A sua longevidade mostra que a infraestrutura construída em torno de Java ultrapassou a linguagem inicial e que ferramentas, especificações, bibliotecas, compatibilidade e comunidade determinam a vida de uma linguagem tanto quanto a sintaxe.
Cronologia
- 1955: nascimento perto de Calgary.
- 1983: doutoramento em Carnegie Mellon.
- 1984: entrada na Sun Microsystems.
- 1991: projeto Green e conceção de Oak.
- 1992: demonstração do protótipo Star7.
- 1994: reorientação para a Web.
- 1995: anúncio público de Java e HotJava.
- 1996: JDK 1.0.
- 2002: ACM Software System Award para Gosling e a equipa Java.
- 2006: Sun anuncia a abertura de Java; OpenJDK torna-se a implementação aberta de referência.
- 2010: Gosling deixa a Oracle.
- Hoje: Java e JVM continuam plataformas importantes para software de longa duração.
Perguntas frequentes
James Gosling criou Java sozinho?
Não. É o principal criador, mas Java resulta do trabalho da equipa Green, de muitas equipas da Sun e de contribuidores externos.
Porque Oak foi rebatizado Java?
O nome Oak já era uma marca utilizada. A equipa escolheu outro nome antes do anúncio público em 1995.
Java e JavaScript estão relacionados?
Não. Java é compilado para bytecode de uma VM; JavaScript nasceu na Netscape como linguagem de script para o navegador. O nome aproveitou a visibilidade de Java.
O que significa «Write once, run anywhere»?
Que o mesmo programa compilado deve poder executar-se em qualquer plataforma com uma VM compatível. É um objetivo de portabilidade, não garantia de detalhes ou desempenho idênticos.
Java continua a ser usado sem applets?
Sim. Continua presente em serviços de servidor, sistemas empresariais, ferramentas e infraestruturas. A JVM executa também outras linguagens.
Qual é o contributo mais duradouro de Gosling?
Ter combinado escolhas de linguagem e execução num contrato de portabilidade credível. A longevidade da JVM mostra que essa arquitetura conta tanto como a sintaxe de Java.