image

Acesse bootcamps ilimitados e +650 cursos pra sempre

60
%OFF

GN

Giliano Novais13/06/2025 08:36
Compartilhe
WEX - End to End EngineeringRecomendados para vocêWEX - End to End Engineering

Keywords Java é a sua historia

    KEYWORDS JAVA É A SUA HISTORIA

    A linguagem Java 1.0 consiste em palavras-chaves (Keywords) que definem a sintaxe da linguagem e um conjunto de APIs (Application Programming Interfaces) que fornecem classes e métodos pré-construídos para realizar tarefas comuns. Segue abaixo os principais Keywords e funcionalidades básicas disponível.

    Palavras-Chave Fundamentais (Sintaxe da Linguagem)

    Estas são as palavras reservadas que você usava para escrever seu código desde Java 1.0:

    Tipos de Dados Primitivos:

    • boolean: verdadeiro ou falso
    • byte: inteiro de 8 bits
    • char: caractere Unicode de 16 bits
    • short: inteiro de 16 bits
    • int: inteiro de 32 bits
    • long: inteiro de 64 bits
    • float: ponto flutuante de precisão simples (32 bits)
    • double: ponto flutuante de precisão dupla (64 bits)

    Controle de Fluxo:

    • if: condição "se"
    • else: condição "senão"
    • switch: múltiplos caminhos baseados em um valor
    • case: um caso dentro de um switch
    • default: caso padrão dentro de um switch
    • for: loop com inicialização, condição e incremento
    • while: loop que continua enquanto uma condição é verdadeira
    • do: loop que executa pelo menos uma vez
    • break: sai de um loop ou switch
    • continue: pula para a próxima iteração de um loop
    • return: retorna um valor de um método

    Orientação a Objetos:

    • class: declaração de uma classe
    • new: cria uma nova instância de um objeto
    • extends: indica herança de uma classe
    • implements: indica implementação de uma interface
    • interface: declaração de uma interface
    • this: referência ao objeto atual
    • super: referência à superclasse imediata
    • instanceof: verifica se um objeto é uma instância de um tipo

    Modificadores de Acesso e Outros:

    • public: acessível de qualquer lugar
    • private: acessível apenas dentro da própria classe
    • protected: acessível dentro da classe, subclasses e classes no mesmo pacote
    • static: membro que pertence à classe, não à instância
    • final: valor imutável, método não sobrescrevível, classe não herdável
    • abstract: classe ou método abstrato (não implementado)
    • void: indica que um método não retorna valor
    • package: declara o pacote de uma classe
    • import: importa classes ou pacotes
    • native: método implementado em código nativo (C/C++)
    • synchronized: para controle de concorrência (multithreading)
    • transient: campo não serializável
    • volatile: garante que um campo seja lido/escrito da memória principal

    Tratamento de Exceções:

    • try: bloco de código a ser monitorado para exceções
    • catch: bloco para capturar e tratar exceções
    • finally: bloco de código que sempre será executado
    • throw: lança uma exceção
    • throws: declara que um método pode lançar certas exceções

    Novas Keywords adicionadas:

    • strictfp: Introduzido no Java 1.2. Garante resultados de ponto flutuante estritos e portáveis
    • assert: Introduzido no Java 1.4. Usado para asserções no código para depuração
    • enum: Introduzido no Java 5. Para criar tipos enumerados de forma concisa
    • var: Introduzido no Java 10. Para inferência de tipo de variáveis locais (reduz boilerplate)
    • module: Introduzido no Java 9. Para o Sistema de Módulos de Plataforma Java (JPMS)
    • record: Introduzido no Java 16. Para declaração concisa de classes de dados imutáveis.
    • sealed: Introduzido no Java 17. Restringe quais outras classes ou interfaces podem estender ou implementar um tipo.

        Observação: Embora todas permaneçam válidas e em uso até o Java 21, o uso direto de algumas (como synchronized em blocos grandes, ou native em códigos diários) pode ser menos comum devido à evolução de APIs de concorrência de alto nível ou mecanismos modernos de interoperabilidade.

    Principais APIs (Pacotes e Classes Fundamentais)

    Java 1.0 já vinha com uma biblioteca padrão rica, organizada em pacotes:

    • java.lang: Continha as classes mais essenciais e automaticamente importadas. Todas continuam fundamentais e em uso até o Java 21

    ·        Object: A classe raiz de toda a hierarquia de classes Java.

    ·        String, StringBuffer: Para manipulação de texto.

    ·        System: Para entrada/saída padrão (System.out.println()), acesso a propriedades do sistema.

    ·        Thread, Runnable: Suporte básico para multithreading.

    ·        Math: Funções matemáticas.

    ·        Classes wrapper para tipos primitivos (ex: Integer, Double).

    ·        Classes de exceção e erro (Exception, RuntimeException, Error).

    • java.io: Para operações de Entrada/Saída. Continuam essenciais, entretanto novas APIs (como NIO.2 do Java 7) complementam, mas não substituem totalmente essas.

    ·        Classes para leitura/escrita de arquivos (FileInputStream, FileOutputStream).

    ·        Classes para leitura/escrita de caracteres (BufferedReader, PrintWriter).

    • java.util: Classes de utilidade.

    ·        Vector: (Depreciado/Legado no Java 1.2) Foi efetivamente substituído por ArrayList. Vector é sincronizado por padrão, o que é um overhead desnecessário na maioria dos casos. Para novas implementações, prefira ArrayList ou outras coleções do Collections Framework.

    ·        ArrayList: (Java 1.2) Coleções básicas.

    ·        Hashtable: (Depreciado/Legado no Java 1.2) Foi efetivamente substituído por HashMap. Hashtable é sincronizado e não permite chaves/valores null. Para novas implementações, prefira HashMap ou ConcurrentHashMap para concorrência.

    ·        HashMap: (Java 1.2) Coleções básicas.

    ·        Date: (Fortemente substituído/Legado no Java 1.1 e Java 8) A classe em si não está formalmente depreciada como uma classe, mas muitos de seus métodos foram depreciados já no Java 1.1 e substituídos por Calendar. A maior substituição veio com a nova API de Data e Hora (Java.time) introduzido no Java 8, que é imutável e muito mais robusta. Para código novo, sempre use Java.time.

    ·        Calendar: Para manipulação de datas

    ·        Random: Para geração de números aleatórios.

    ·        StringTakenizer: (Depreciado no Java 9) Foi substituído por métodos mais flexíveis e poderosos com String.split e as classes do pacote Regex introduzido no Java 1.4.

    • java.net: Para networking.

    ·        Socket, ServerSocket: Para comunicação em rede.

    ·        URL, URLConnection: Para interagir com URLs.

    ·        http, HttpCliente: Introduzido no Java 11, Oferece uma forma mais moderna, assíncrona e flexível para clientes HTTP.

    • java.applet: (Depreciado no Java 9 e removido no JDK no Java 11) A tecnologia de Applets se tornou obsoleta devido a problemas de segurança, desempenho e o surgimento de tecnologias web mais modernas (HTML5, JavaScript, etc).

    ·        Applet: A classe base para todos os applets.

    • java.awt (Abstract Window Toolkit): (Legado/Fortemente substituído no Java 11) Embora ainda exista como base para Swing, seu uso direto para construir GUIs complexas é desencorajado desde a introdução do Swing no Java 1.2. Muitos de seus componentes são considerados pesados e limitados. Embora não depreciado em sua totalidade, para novas GUIs, Swing ou JavaFX são as escolhas.

    ·        Componentes básicos como Button, TextField, Frame, Panel.

    ·        Gerenciadores de layout como FlowLayout, BorderLayout.

    Principais Recursos e APIs adicionados

    • Java 1.2 (J2SE 1.2):

    ·        Collections Framework: (List, Set, Map, ArrayList, HashMap, etc.) - Substituiu Vector e Hashtable.

    ·        Swing: Novo framework de GUI mais poderoso e "leve".

    • Java 1.4:

    ·        NIO (New I/O): java.nio para I/O orientado a buffer e canais.

    ·        Expressões Regulares: java.util.regex.

    • Java 5 (J2SE 5.0 - "Tiger"):

    ·        Generics: Programação orientada a tipos genéricos para coleções e classes.

    ·        Autoboxing/Unboxing: Conversão automática entre tipos primitivos e seus wrappers.

    ·        Annotations: Metadados para código (ex: @Override, @Deprecated).

    ·        Enhanced For-Loop: Sintaxe simplificada para iterar em coleções.

    ·        Varargs: Argumentos de comprimento variável para métodos.

    ·        java.util.concurrent: Pacote robusto para concorrência de alto nível.

    • Java 7:

    ·        Diamond Operator (<>): Inferência de tipo em generics.

    ·        try-with-resources: Gerenciamento automático de recursos que implementam AutoCloseable.

    ·        Strings em switch: Permite usar Strings como valores em switch cases.

    ·        NIO.2: Extensões para o sistema de arquivos (manipulação de paths, etc.).

    • Java 8:

    ·        Expressões Lambda: Suporte para programação funcional.

    ·        Stream API: Operações de pipeline em coleções para processamento de dados.

    ·        Nova API de Data e Hora (java.time): Um sistema moderno e imutável para lidar com datas e horas, substituindo as classes java.util.Date e java.util.Calendar.

    ·        Métodos Padrão em Interfaces: default keyword em interfaces.

    • Java 9:

    ·        Java Platform Module System (JPMS - Project Jigsaw): Modularização do JDK e de aplicações.

    ·        JShell (REPL): Ferramenta interativa para executar snippets de código Java.

    ·        HTTP/2 Client (incubating): Novo cliente HTTP (padronizado no Java 11).

    • Java 10:

    ·        var: Para inferência de tipo de variáveis locais.

    • Java 11:

    ·        HTTP/2 Client (standard): API cliente HTTP padrão.

    ·        Removed Applets and Java Web Start.

    • Java 14/16:

    ·        Records (Standard no 16): Declaração concisa de classes de dados imutáveis.

    ·        Pattern Matching for instanceof (Standard no 16): Simplifica o casting após uma verificação instanceof.

    • Java 17 (LTS):

    ·        Sealed Classes (Standard): Permite controlar quais classes podem estender ou implementar um tipo.

    • Java 21 (LTS - Última versão no momento da escrita):

    ·        Virtual Threads (Project Loom - Standard): Threads leves para concorrência massiva.

    ·        Record Patterns (Standard): Desestruturação de objetos record em pattern matching.

    ·        Sequenced Collections (Standard): Novas interfaces para coleções com ordem definida (SequencedCollection, SequencedSet, SequencedMap).

    ·        String Templates (Preview): Nova sintaxe para interpolação de strings.

    ·        Unnamed Classes and Instance Main Methods (Preview): Simplificações para programas pequenos.

    Em resumo, a "primeira linguagem Java" forneceu um conjunto robusto de ferramentas e um paradigma de programação (Orientação a Objetos, WORA) que lançaram as bases para o vasto e poderoso ecossistema que conhecemos hoje. Ainda sim esta lista demonstra a evolução continua do Java, que se adapta às novas demandas da programação moderna, mantendo sua base robusta e seu compromisso com a compatibilidade retroativa.

    Compartilhe
    Recomendados para você
    NTT DATA - Java e IA para Iniciantes
    TONNIE - Java and AI in Europe
    Microsoft - Azure Administrator Certification (AZ-104)
    Comentários (1)
    DIO Community
    DIO Community - 13/06/2025 11:41

    Giliano, seu artigo é uma verdadeira aula sobre a evolução da linguagem Java, com uma narrativa clara e envolvente. A forma como você resgatou os principais keywords da versão 1.0 até os recursos modernos do Java 21 mostra domínio técnico e atenção à continuidade histórica da linguagem.

    A contextualização dos tipos de dados, controle de fluxo, orientação a objetos e tratamento de exceções, além das APIs fundamentais e suas substituições ao longo dos anos, torna o conteúdo útil tanto para quem está começando quanto para quem quer atualizar seu repertório. A conexão entre sintaxe, boas práticas e evolução do ecossistema foi muito bem conduzida.

    Na sua opinião, qual das novas funcionalidades (como records, sealed classes ou virtual threads) tem o maior potencial de transformar a forma como desenvolvemos em Java hoje?

    Recomendados para vocêWEX - End to End Engineering