A evolução do Java até a era da nuvem

Por Boris Kuszka | 04 de Julho de 2019 às 18h25

Algumas tecnologias enfrentam muitos altos e baixos em usabilidade com o passar do tempo. Enquanto certas metodologias, técnicas ou soluções desaparecem no decorrer dos anos, outras se transformam e se adaptam a novas realidades e cenários, demonstrando todo o seu potencial e sinergia com as inovações mais recentes.

Bem antes de se sonhar com a possibilidade de uma Internet das Coisas (IoT), por exemplo, algumas pessoas já conseguiam conceber a ideia de que um dia tudo estaria de fato conectado. Em busca de uma linguagem de programação orientada a objetos capaz de conectar computadores a outros equipamentos, como eletrodomésticos e outros dispositivos do dia a dia, em 1991, um grupo de programadores visionários da Sun Microsystems deu início a um projeto que atravessaria gerações: o Green Project.

Pouco mais de um ano depois, a iniciativa deu origem a um protótipo chamado *7 (lê-se “Star Seven”), um controle remoto com uma interface gráfica touchscreen. A novidade contava inclusive com um guia virtual, o Duke, que ajudava o usuário a utilizar o aparelho, capaz de controlar aplicações e outros dispositivos. A linguagem de programação que permitiu esse avanço foi batizada de “Oak”, que significa ‘carvalho’, espécie de árvore abundante em Menlo Park, na Califórnia. A solução foi criada por James Gosling, que podia observar os carvalhos da cidade pela janela enquanto trabalhava.

O objetivo de Gosling era criar uma tecnologia que permitisse que o código elaborado nessa tecnologia fosse escrito apenas uma única vez, e capaz de ser executado em qualquer ambiente, conceito que deu origem ao jargão write once, run anywhere. Devido a problemas de copyright, entretanto, a linguagem precisava de um novo nome (que por pouco não foi DNA, WRL ou Silk), e eventualmente foi batizada de Java, em referência à forma coloquial de chamar o café em algumas regiões dos EUA.

Ao contrário das linguagens de programação tradicionais, que são compiladas para código nativo, a linguagem Java é compilada em um bytecode (estágio intermediário entre o código-fonte e a aplicação final), que é então interpretado por uma máquina virtual (Java Virtual Machine, mais conhecida pela sua abreviação JVM). Desde seu lançamento, em maio de 1995, a plataforma Java foi adotada mais rapidamente do que qualquer outra linguagem de programação na história da computação.

Em 2004, o Java atingiu a marca de 3 milhões de desenvolvedores em todo mundo, e continuou crescendo. A Sun acabou liberando a máquina virtual HotSpot e o compilador como software livre sob a GNU (General Public License) em 2006, um verdadeiro marco para a comunidade de software livre. No entanto, em 2008, o Java foi adquirido pela empresa Oracle, que compraria também sua criadora, a Sun Microsystems, dois anos mais tarde.

Durante o processo de aquisição, a Sun acelerou o desenvolvimento de uma máquina virtual open source, o OpeJDK. Mas, com a compra, sua detentora passaria a ser a Oracle. Somente em 2017, quando a empresa doou a coordenação do Java para a Fundação Eclipse, é que começamos a ter uma forma mais aberta para definição de umroadmap de padrões do Java. Aliás, com as mudanças recentes que a Oracle está fazendo na cobrança do licenciamento do Java, o OpenJDK está sendo alavancado como nunca.

A Fundação Eclipse é uma organização independente sem fins lucrativos que atua desde janeiro de 2004 como administradora da comunidade Eclipse, uma comunidade neutra, transparente e aberta estabelecida em torno do Eclipse, um IDE para desenvolvimento Java. Criado pela IBM em novembro de 2001 e apoiado por um consórcio de fornecedores de software, o Eclipse continua sendo usado por milhões de desenvolvedores.

Uma referência no mercado de desenvolvimento de software, o Java tornou-se popular pelo seu uso na internet e por proporcionar ambiente de execução em navegadores, mainframes, sistemas operacionais, celulares, cartões inteligentes etc. Por muito tempo, em vista da evolução de suas características empresariais, o Java foi uma das linguagens de programação mais utilizadas no mundo. Com quase 20 anos de otimizações para executar aplicações altamente dinâmicas, ela continua sendo popular: hoje totalmente aberta, com mais de 9 milhões de desenvolvedores, a adoção do Java é cada vez maior. Na verdade, a linguagem nunca ficou abaixo do segundo lugar no TIOBE Index, índice especializado em avaliar e rastrear a qualidade de softwares.

Entretanto, nos últimos anos, com o advento da computação em nuvem e microsserviços (que exigem tamanho reduzido e inicialização bastante rápida), o Java começou a ficar um pouco mais para trás, por ter um legado longevo e por questões de compatibilidade, como uma linguagem antiga. Em um mundo dominado por cloud, mobile e open source – onde containers, Kubernetes, Função como Serviço (FaaS), a metodologia 12-factor, e o desenvolvimento de aplicações nativas em cloud, podem entregar níveis mais altos de produtividade e eficiência – a comunidade teve de repensar como o Java poderia ser melhor utilizado para endereçar novos ambientes de desenvolvimento e arquiteturas de aplicações.

Para alcançar o mundo do cloud, foi necessário desenvolver uma evolução do Java, como o Quarkus. O Quarkus, cuja alcunha foi inspirada nas partículas elementares que compõem o átomo, é um framework nativo de Kubernetes projetado para GraalVM e HotSpot, desenvolvido a partir das melhores bibliotecas e padrões Java. O objetivo do Quarkus é tornar o Java a principal plataforma em Kubernetes e ambientes serverless, enquanto oferece a desenvolvedores um modelo unificado de programação reativa e imperativa, otimizando o endereçamento de uma ampla gama de arquiteturas de aplicativos distribuídos.

Tivemos inclusive uma demonstração bastante enfática e ilustrativa do Quarkus durante o Red Hat Summit 2019, realizado em Boston no início de maio; além disso, ele é o grande tema no TDC (The Developer Connection) desse ano no Brasil, na trilha de Cloud Native Apps, com conteúdo exclusivo para desenvolvedores. A solução traz um novo framework Java (com os adjetivos de Subatomic e Supersonic), extremamente mais leve (menos espaço de memória e menor carga de CPU) e com a inicialização bastante rápida, o que torna o Java mais adequado a novas tecnologias de cloud computing, como por exemplo serverless, que exige uma inicialização rápida. Além do mais, ele oferece mais de uma maneira de compilar: gera bytecodes rodando com OpenJDK HotSpot, ou código nativo rodando no GraalVM (vejam mais em quarkus.io). O resultado é um programa Java excepcionalmente rápido e leve, adequado para cloud computing, que conta com a maior força de desenvolvimento do mundo.

Com essa nova ferramenta, vemos uma Java revitalizada e reaproveitando todo o conhecimento, amadurecido por desenvolvedores em duas décadas, na construção de novas aplicações. Afinal, a inovação tecnológica não envolve somente o lampejo de ideias disruptivas que tornam obsoletas soluções estabelecidas. Mas, principalmente, o desenvolvimento de abordagens capazes de aproveitar todo o expertise e avanço conquistados no passado para trilhar o futuro. Isso se aplica ao caso do Java.

Gostou dessa matéria?

Inscreva seu email no Canaltech para receber atualizações diárias com as últimas notícias do mundo da tecnologia.