Java (linguagem de programação)

 Nota: Para outros significados, veja Java (desambiguação).
 Nota: Não confundir com JavaScript.
Java
Paradigma
Surgido em23 de maio de 1995 (31 anos)
Última versão27 (15 de setembro de 2026; há 44 dias (2026-09-15))
Criado por
Estilo de tipagem
  • estática
  • forte
Principais implementações
Influenciada por
Influenciou
PlataformaPlataforma Java
Extensão do arquivo
  • .java
  • .class
  • .jar
  • .war
Página oficialwww.oracle.com/java/

Java é uma linguagem de programação de propósito geral, baseada em classes e orientada a objetos, desenvolvida por uma equipe liderada por James Gosling na Sun Microsystems a partir de 1991. A linguagem foi apresentada publicamente em 1995. Em 2010, a Oracle Corporation concluiu a aquisição da Sun Microsystems, tornando-se responsável pela continuidade comercial de produtos e tecnologias da empresa, entre eles Java.

O código-fonte Java é normalmente compilado em bytecode, armazenado em arquivos de classe. Esse código é executado por uma máquina virtual Java (Java Virtual Machine, ou JVM), cuja implementação pode interpretá-lo ou compilá-lo dinamicamente para código nativo durante a execução. A linguagem é a principal linguagem associada à Plataforma Java, mas essa plataforma também pode executar programas escritos em outras linguagens que produzam código compatível com a JVM.

História

Desenvolvimento

O desenvolvimento de Java começou em 1991, na Sun Microsystems, com o Green Project. A equipe central incluía James Gosling, Mike Sheridan e Patrick Naughton. O projeto procurava desenvolver software para dispositivos eletrônicos e sistemas computacionais que poderiam interagir com diferentes tipos de equipamentos. A linguagem criada durante o projeto recebeu inicialmente o nome de Oak.

Um dos protótipos produzidos foi o Star-7, um dispositivo portátil com interface gráfica sensível ao toque, concebido para controlar outros equipamentos. O projeto também originou Duke, personagem que se tornou o mascote da tecnologia Java. A equipe demonstrou uma versão funcional do sistema em 1992.

A equipe posteriormente redirecionou o desenvolvimento para aplicações distribuídas e para o uso em redes de computadores, em particular na internet. O nome Oak foi substituído por Java, e a tecnologia foi apresentada publicamente em 23 de maio de 1995. A plataforma foi concebida para permitir que o mesmo programa fosse executado em sistemas diferentes, desde que houvesse uma implementação compatível do ambiente de execução.

Durante os primeiros anos, Java ficou conhecida também pelo uso em aplicações executadas em navegadores por meio de applets. Esse modelo teve importância histórica para a difusão da linguagem, mas deixou de ser uma forma corrente de distribuição de aplicações web com o abandono do suporte a applets nos navegadores modernos. Java continuou a ser utilizada em diferentes domínios, incluindo aplicações empresariais, serviços de rede, software para computadores e sistemas embarcados.

Padronização e desenvolvimento da plataforma

O desenvolvimento das especificações de Java passou a contar com o Java Community Process (JCP), um processo de participação comunitária destinado a desenvolver e revisar especificações, implementações de referência e testes de compatibilidade para tecnologias Java.

O JCP não é uma licença de software. Trata-se de um processo de especificação e evolução de tecnologias; os termos de licenciamento dependem da implementação, dos componentes e da versão considerados.

Em novembro de 2006, a Sun Microsystems anunciou a disponibilização de grande parte do código-fonte da implementação da plataforma sob a GNU GPL. O processo de abertura do código foi concluído em 2007 e deu origem ao projeto OpenJDK, uma implementação de referência de código aberto da plataforma Java.

Aquisição pela Oracle

A Oracle anunciou a aquisição da Sun Microsystems em 2009 e concluiu a operação em 27 de janeiro de 2010. Com a aquisição, a Oracle assumiu a gestão de produtos e tecnologias da Sun, incluindo Java. O desenvolvimento da plataforma passou a envolver a Oracle, o projeto OpenJDK e a comunidade participante dos processos de especificação e implementação.

Versões

A partir do Java 9, lançado em 2017, os lançamentos da plataforma passaram a seguir uma cadência regular, em geral com novas versões principais em março e setembro. Algumas versões recebem suporte de longo prazo (LTS, do inglês *Long-Term Support*), conforme a política de suporte do fornecedor. A designação LTS e os prazos de suporte podem variar entre fornecedores e distribuições.

VersãoData de lançamento
JDK 1.023 de janeiro de 1996
JDK 1.119 de fevereiro de 1997
J2SE 1.28 de dezembro de 1998
J2SE 1.38 de maio de 2000
J2SE 1.46 de fevereiro de 2002
J2SE 5.030 de setembro de 2004
Java SE 611 de dezembro de 2006
Java SE 728 de julho de 2011
Java SE 8 (LTS)18 de março de 2014
Java SE 921 de setembro de 2017
Java SE 1020 de março de 2018
Java SE 11 (LTS)25 de setembro de 2018
Java SE 1219 de março de 2019
Java SE 1317 de setembro de 2019
Java SE 1417 de março de 2020
Java SE 1515 de setembro de 2020
Java SE 1616 de março de 2021
Java SE 17 (LTS)14 de setembro de 2021
Java SE 1822 de março de 2022
Java SE 1920 de setembro de 2022
Java SE 2021 de março de 2023
Java SE 21 (LTS)19 de setembro de 2023
Java SE 2219 de março de 2024
Java SE 2317 de setembro de 2024
Java SE 2418 de março de 2025
Java SE 25 (LTS)16 de setembro de 2025
Java SE 2617 de março de 2026
Java SE 2715 de setembro de 2026

Características

Java foi concebida para favorecer a portabilidade dos programas, a segurança do ambiente de execução, a programação orientada a objetos e o desenvolvimento de aplicações em diferentes sistemas computacionais. Entre suas características estão:

A sintaxe de Java apresenta semelhanças com a de C e C++, mas a linguagem possui modelo próprio de tipos, gerenciamento de memória e execução. Embora a orientação a objetos seja central, recursos introduzidos em diferentes versões também permitem expressar técnicas de programação funcional, genérica e concorrente.

A execução de bytecode pela JVM não implica que todas as instruções sejam interpretadas durante toda a execução. Implementações como a HotSpot podem compilar dinamicamente partes do programa para código de máquina, além de interpretar bytecode.

Licença

Não existe uma única condição de licenciamento aplicável indistintamente a todas as distribuições de Java. O OpenJDK é disponibilizado sob a GNU GPL versão 2, acompanhada da Classpath Exception. As condições de uso de uma distribuição Oracle JDK dependem da versão e dos termos aplicáveis a essa distribuição.

A abertura do código-fonte de grande parte da implementação da plataforma Java começou em 2006, durante a gestão da Sun Microsystems, e foi concluída em 2007. O projeto OpenJDK passou a oferecer uma implementação de código aberto da plataforma e serve de base para diversas distribuições de JDK.

Exemplos de código

Os exemplos a seguir ilustram recursos da linguagem. Cada bloco representa um exemplo independente; quando várias classes aparecem no mesmo bloco, podem ser colocadas em arquivos separados ou reunidas em um único arquivo se nenhuma delas for declarada como pública.

Método main

Em programas Java tradicionais iniciados pelo lançador da plataforma, um dos pontos de entrada mais conhecidos é o método `main`, com a assinatura `public static void main(String[] args)`. O parâmetro `args` recebe os argumentos informados na linha de comando.

public class OlaMundo {
    /**
     * Método de entrada do programa.
     *
     * public: permite o acesso ao método pelo lançador.
     * static: permite chamar o método sem criar uma instância da classe.
     * void: indica que o método não retorna um valor.
     * main: nome reconhecido como ponto de entrada convencional.
     * String[] args: array com os argumentos da linha de comando.
     */
    public static void main(String[] args) {
        System.out.println("Olá, mundo!");
    }
}

Classes

O exemplo seguinte apresenta uma classe abstrata e duas classes derivadas que implementam seu método abstrato.

abstract class Animal {
    public abstract void fazerBarulho();
}

class Cachorro extends Animal {
    @Override
    public void fazerBarulho() {
        System.out.println("Au au!");
    }
}

class Gato extends Animal {
    @Override
    public void fazerBarulho() {
        System.out.println("Miau!");
    }
}

As classes `Cachorro` e `Gato` herdam de `Animal` e fornecem implementações próprias para `fazerBarulho()`. A redefinição de um método herdado é denominada sobrescrita (override).

Java não permite que uma classe estenda diretamente mais de uma classe. Uma classe pode, porém, implementar várias interfaces; interfaces também podem estender outras interfaces. Essa possibilidade permite que um tipo satisfaça diferentes contratos sem exigir herança de múltiplas classes. Uma classe que não declara explicitamente outra superclasse herda diretamente de `Object`, a raiz da hierarquia de classes de Java.

Interfaces

Uma interface define um contrato de operações que uma classe pode implementar. As interfaces podem declarar métodos abstratos, métodos padrão (*default*), métodos estáticos e constantes, entre outros elementos previstos pela especificação da linguagem. Uma classe pode implementar mais de uma interface.

import java.awt.Color;

abstract class Animal {
    public abstract void fazerBarulho();
}

interface Pesado {
    double obterPeso();
}

interface Colorido {
    Color obterCor();
}

class Porco extends Animal implements Pesado, Colorido {
    @Override
    public void fazerBarulho() {
        System.out.println("Óinc!");
    }

    @Override
    public double obterPeso() {
        return 50.0;
    }

    @Override
    public Color obterCor() {
        return Color.BLACK;
    }

    public boolean enlameado() {
        return true;
    }
}

No exemplo, `Porco` estende `Animal` e implementa as interfaces `Pesado` e `Colorido`. A classe fornece uma implementação para cada método abstrato herdado ou declarado pelas interfaces.

Objetos e classes anônimas

É possível criar um objeto sem armazenar sua referência em uma variável. Isso não torna a classe do objeto anônima: no primeiro caso do exemplo, a classe `Cavalo` tem nome. No segundo, a expressão cria uma classe anônima que estende `Animal` e implementa seu método abstrato.

abstract class Animal {
    public abstract void fazerBarulho();
}

class Cavalo extends Animal {
    @Override
    public void fazerBarulho() {
        System.out.println("Relincho!");
    }
}

class MostraBarulho {
    public static void main(String[] args) {
        new Cavalo().fazerBarulho();

        new Animal() {
            @Override
            public void fazerBarulho() {
                System.out.println("Quac!");
            }
        }.fazerBarulho();
    }
}

Programação funcional

A versão 8 de Java, lançada em 2014, acrescentou recursos importantes para a programação funcional, entre eles expressões lambda, referências a métodos e a API de *streams*. Esses recursos permitem, por exemplo, representar operações por meio de interfaces funcionais e encadear operações sobre coleções de dados.

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> paradigmas = new ArrayList<>();

        paradigmas.add("Genérico (1.5)");
        paradigmas.add("Funcional (8)");

        paradigmas.stream()
            .map(String::toUpperCase)
            .forEach(System.out::println);
    }
}

Nesse exemplo, `stream()` cria um fluxo de elementos; `map()` transforma cada texto em letras maiúsculas; e `forEach()` executa uma operação para cada elemento resultante.

Ferramentas

Frameworks e bibliotecas

Há frameworks e bibliotecas que apoiam diferentes etapas do desenvolvimento de aplicações Java. Entre os exemplos conhecidos estão:

A presença de uma ferramenta nessa lista não implica que seja a mais utilizada ou recomendada para todos os projetos. A escolha depende do objetivo, da arquitetura, da manutenção e dos requisitos da aplicação.

Ambientes de desenvolvimento

O desenvolvimento Java pode ser feito em editores de texto e por ferramentas de linha de comando ou por meio de ambientes de desenvolvimento integrado (IDEs). Exemplos de ambientes e ferramentas associados ao ecossistema incluem:

Emulador do Android no Eclipse, exibindo um exemplo de programa "Hello World" escrito em Java e XML.

Tecnologias associadas

A plataforma Java inclui bibliotecas, APIs, ambientes de execução e especificações destinados a diferentes tipos de aplicação. Alguns nomes pertencem a tecnologias históricas, enquanto outros continuam a ser encontrados em sistemas existentes ou em projetos de desenvolvimento.

Comunidade

A comunidade de desenvolvimento Java inclui grupos de usuários conhecidos como JUGs (*Java User Groups*), que organizam encontros, palestras, atividades de formação e intercâmbio técnico. No Brasil, comunidades, fóruns e portais dedicados à linguagem incluem o PortalJava e o GUJ. A dimensão e a atividade dessas comunidades variam ao longo do tempo.

Ver também

Referências

  1. 1 2 3 «Architecture of the Example Applications». Oracle (em inglês). Consultado em 15 de outubro de 2026
  2. 1 2 «Oracle Releases Java 27 and Strengthens Post-Quantum Cryptography Support». Oracle (em inglês). 15 de setembro de 2026. Consultado em 15 de outubro de 2026
  3. 1 2 Barbara Liskov with John Guttag (2000). Program Development in Java – Abstraction, Specification, and Object-Oriented Design. [S.l.]: USA, Addison Wesley. ISBN 978-0-201-65768-5
  4. ↑ «Java 5 catches up with C#» (em inglês). Universidade de Oxford. Consultado em 10 de janeiro de 2010
  5. ↑ «Why Microsoft's C# isn't» (em inglês). CNET. Consultado em 10 de janeiro de 2010
  6. 1 2 3 4 «James Gosling». Computer History Museum (em inglês). Consultado em 15 de outubro de 2026
  7. 1 2 «Oracle Completes Acquisition of Sun». U.S. Securities and Exchange Commission (em inglês). 27 de janeiro de 2010. Consultado em 15 de outubro de 2026
  8. 1 2 «The Java Virtual Machine Specification». Oracle (em inglês). 4 de agosto de 2026. Consultado em 15 de outubro de 2026
  9. 1 2 «Java — Your Application Launcher». Dev.java (em inglês). Consultado em 15 de outubro de 2026
  10. ↑ «1995: Java 1.0 is introduced». Computer History Museum (em inglês). Consultado em 15 de outubro de 2026
  11. 1 2 «JCP Procedures Overview». Java Community Process (em inglês). Consultado em 15 de outubro de 2026
  12. 1 2 3 4 «Oracle JDK License General FAQs». Oracle (em inglês). 16 de setembro de 2025. Consultado em 15 de outubro de 2026
  13. ↑ «Sun begins releasing Java under the GPL». Free Software Foundation (em inglês). Consultado em 15 de outubro de 2026
  14. ↑ «Oracle Java SE Support Roadmap». Oracle (em inglês). Consultado em 15 de outubro de 2026
  15. ↑ «JAVASOFT SHIPS JAVA 1.0». Sun Microsystems (em inglês). 23 de janeiro de 1996. Consultado em 15 de outubro de 2026
  16. ↑ «JDK 23 Release Notes». Oracle (em inglês). 17 de setembro de 2024. Consultado em 15 de outubro de 2026
  17. ↑ «JDK 24 Release Notes». Oracle (em inglês). 18 de março de 2025. Consultado em 15 de outubro de 2026
  18. ↑ «Oracle Releases Java 25». Oracle (em inglês). 16 de setembro de 2025. Consultado em 15 de outubro de 2026
  19. ↑ «JDK 26 Release Notes». Oracle (em inglês). 17 de março de 2026. Consultado em 15 de outubro de 2026
  20. ↑ «OpenJDK». OpenJDK (em inglês). Consultado em 15 de outubro de 2026
  21. ↑ «Multiple Inheritance of State, Implementation, and Type». Oracle (em inglês). Consultado em 15 de outubro de 2026

Bibliografia

Ligações externas

O Wikilivros tem um livro chamado Java