Definition

Java

Java é uma linguagem de programação amplamente utilizada expressamente projetada para uso no ambiente distribuído da internet. É a linguagem de programação mais popular para aplicativos para smartphones Android e também está entre as mais favorecidas para o desenvolvimento de dispositivos de borda e internet das coisas (IoT).

Java foi projetado para ter a aparência da linguagem de programação C++, mas é mais simples de usar e impõe um modelo de programação orientado a objetos. Java pode ser usado para criar aplicativos completos que podem ser executados em um único computador ou serem distribuídos entre servidores e clientes em uma  rede. Ele também pode ser usado para construir um pequeno módulo de aplicativo ou  applet para uso como parte de uma página web.

Por que Java é popular

É difícil fornecer uma única razão para que a linguagem de programação Java tenha se tornado tão onipresente. No entanto, as principais características da língua têm desempenhado um papel em seu sucesso, incluindo os seguintes componentes:

  • Programas criados em Java oferecem portabilidade em uma rede. O código-fonte é compilado no que Java chama de bytecode, que pode ser executado em qualquer lugar de uma rede, em um servidor ou em um cliente que tem uma máquina virtual Java (JVM). O JVM interpreta o bytecode em código que será executado em hardware de computador. Em contraste, a maioria das linguagens de programação, como COBOL  ou C++, compilará o código em um arquivo binário. Os arquivos binários são específicos da plataforma, de modo que um programa escrito para uma máquina Windows baseada em Intel não pode ser executado em um Mac, um dispositivo baseado em Linux ou um mainframe IBM. Como alternativa à interpretação de uma instrução de bytecode por vez, o JVM inclui um compilador opcional just-in-time (JIT) que compila dinamicamente bytecode em código executável. Em muitos casos, a compilação dinâmica do JIT é mais rápida do que a interpretação da máquina virtual.
  • Java é orientado a objetos. Um objeto é composto de dados como campos ou atributos e código como procedimentos ou métodos. Um objeto pode fazer parte de uma  classe de objetos para herdar código comum à classe. Objetos podem ser considerados como "substantivos" que um usuário pode relacionar com "verbos". Um método são as capacidades ou comportamentos do objeto. Como o design do Java foi influenciado pelo C++, Java foi construído principalmente como uma linguagem orientada a objetos. Java também usa um coletor automático de lixo para gerenciar ciclos de vida do objeto. Um programador criará objetos, mas o coletor automático de lixo recuperará a memória assim que o objeto não estiver mais em uso. No entanto, vazamentos de memória podem ocorrer quando um objeto que não está mais sendo usado é armazenado em um container.
  • O código é Ao contrário de programas escritos em C++, os objetos Java não contêm referências a dados externos a si mesmos ou a outros objetos conhecidos. Isso garante que uma instrução não pode incluir o endereço de dados armazenados em outro aplicativo ou no próprio sistema operacional, o que faria com que o programa e talvez o sistema operacional terminassem ou travassem. O JVM faz uma série de verificações em cada objeto para garantir a integridade.
  • Os dados são seguros. Ao contrário do C++, Java não usa apontadores, que podem ser inseguros. Os dados convertidos em bytecode por Java também não são legíveis para humanos. Além disso, o Java executará programas dentro de uma sandbox para evitar alterações de fontes desconhecidas.
  • Applets oferecem flexibilidade. Além de ser executado no cliente em vez do servidor, um applet Java tem outras características projetadas para fazê-lo funcionar rápido.
  • Os desenvolvedores podem aprender Java rapidamente. Com sintaxe semelhante ao C++, Java é relativamente fácil de aprender, especialmente para aqueles com experiência em C.

Um equívoco comum é que há uma associação entre Java e JavaScript. As duas línguas compartilham semelhanças na sintaxe, mas são duas construções muito diferentes.

Plataformas Java

As três principais plataformas sobre as quais os programadores podem desenvolver aplicativos Java são:

  1. Java SE - Aplicativos simples e autônomos são desenvolvidos usando o Java Standard Edition. Anteriormente conhecido como J2SE, Java SE fornece todas as APIs necessárias para desenvolver aplicativos de desktop tradicionais.
  2. Java EE - O Java Enterprise Edition, anteriormente conhecido como J2EE,fornece a capacidade de criar componentes do lado do servidor que podem responder a um ciclo de solicitação-resposta baseado na Web. Esse arranjo permite a criação de programas Java que podem interagir com clientes baseados na Internet, incluindo navegadores da web, clientes baseados em CORBA e até mesmo serviços web baseados em REST
  3. Java ME - Java também fornece uma plataforma leve para desenvolvimento móvel conhecida como Java Micro Edition, anteriormente conhecida como J2ME. Java ME provou ser uma plataforma predominante para o desenvolvimento de dispositivos embarcados, mas lutou para ganhar tração na área de desenvolvimento de smartphones.

Principais usos de Java

É fácil para os desenvolvedores escrever programas que empregam padrões populares de design de software e práticas recomendadas usando os vários componentes encontrados no Java EE. Por exemplo, frameworks como Struts e JavaServer Faces usam um java servlet para implementar o padrão de design do controlador frontal para centralizar solicitações.

Grande parte do ecossistema Java é a grande variedade de projetos de código aberto e construídos pela comunidade, plataformas de software e APIs. Por exemplo, a Fundação Apache hospeda uma variedade de projetos escritos usando Java, incluindo estruturas de registro simples para Java (SLF4J), estruturas de processamento de Yarn e Hadoop, plataformas de desenvolvimento de microsserviços e plataformas de integração.

Ambientes Java EE também podem ser usados na nuvem. Os desenvolvedores podem construir, implantar, depurar e monitorar aplicativos Java no Google Cloud em um nível escalável.

Em termos de desenvolvimento móvel, Java é comumente usado como a linguagem de programação para aplicativos Android. Java tende a ser preferido pelos desenvolvedores Android devido à segurança do Java, paradigmas orientados a objetos, conjuntos de recursos regularmente atualizados e mantidos, uso de JVM e frameworks para rede, IO e threading.

Embora Java seja amplamente utilizado, ele ainda tem críticas justas. A sintaxe Java é frequentemente criticada por ser muito verbosa. Em resposta, várias línguas periféricas surgiram para abordar essas questões, incluindo Groovy. Devido à forma como Java referencia objetos internamente, operações complexas e simultâneas baseadas em listas retardam o JVM. A língua Scala aborda muitas das deficiências da língua Java que reduzem sua capacidade de escala.

História do Java

A internet e a World Wide Web estavam começando a surgir em 1996 e Java não foi originalmente projetado com a internet em mente. Em vez disso, os engenheiros da Sun Microsystems vislumbraram pequenos dispositivos interligados que pudessem se comunicar entre si.

Como resultado, a linguagem de programação Java prestou mais atenção à tarefa de programação de rede do que outras linguagens concorrentes. Através das APIs java.net, a linguagem de programação Java deu grandes passos na simplificação da tarefa tradicionalmente difícil de programar em uma rede.

O primeiro incremento completo de Java ocorreu em 23 de janeiro de 1996. A conhecida interface JavaBeans  foi introduzida em Java 1.1 em fevereiro de 1997.

Versões posteriores de lançamentos Java receberam apelidos, como JDK 1.2 sendo referido como Java 2. Java 2 viu melhorias consideráveis nas coleções de API, enquanto Java 5 incluiu mudanças significativas na sintaxe Java através de um novo recurso chamado Generics.

Em outubro de 2009, o Google lançou o kit de desenvolvimento de software Android (SDK), um kit de desenvolvimento padrão que possibilitou aos desenvolvedores de dispositivos móveis escrever aplicativos para dispositivos baseados em Android usando APIs Java.

A Oracle Corp. assumiu a plataforma Java quando adquiriu a Sun Microsystems em janeiro de 2010. A aquisição atrasou o lançamento do Java 7, e a Oracle reduziu alguns dos planos mais ambiciosos para ele.

Java 8 foi lançado em março de 2014. Incluía expressões lambda, que são características comuns em muitas línguas concorrentes, mas estavam ausentes em Java. Com expressões lambda, os desenvolvedores podem escrever aplicativos usando uma abordagem funcional, em oposição a uma orientada a objetos.

Março de 2018 viu o lançamento de Java 10 seguido por Java 11 em setembro de 2018. Java 12 foi lançado em março de 2019.

Processo Oracle vs. Google: Java e Android

Em 10 de agosto de 2010, a Oracle lançou o primeiro de dois processos contra o Google, o segundo dos quais buscou US$ 8,8 bilhões em danos pelo uso da linguagem de programação Java no SDK Android.

A Oracle alegou violação de direitos autorais e que a implementação do Google de várias APIs Java usou código copiado diretamente da implementação da Oracle. O litígio terminou em maio de 2016, quando ambos os testes foram considerados a favor do Google. Os jurados decidiram que o uso das APIs Java pelo Android constituía uso justo e não concederam danos à Oracle.

A partir de 2016, mais da metade de todos os telefones portáteis do mundo são executados no Android, dando ao Java uma participação incrivelmente forte no mercado de smartphones.

Este conteúdo foi atualizado pela última vez em Agosto 2022

Saiba mais sobre Aplicativos e software móveis