Skip to content

HerculanoLeo/java21-features

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java 21 Features - Portfólio

🎯 Objetivo do Projeto

Este projeto foi desenvolvido com o propósito de experimentar, explorar e demonstrar o uso prático e eficiente das novas funcionalidades introduzidas no Java 21. Através da resolução de problemas do mundo real, como processamento assíncrono de arquivos e manipulações geométricas avançadas, a aplicação serve como uma prova de conceito de como as atualizações da linguagem simplificam a escrita de código concorrente, reduzem a verbosidade e melhoram a manutenibilidade.

🚀 Funcionalidades Implementadas

O projeto foi dividido em duas áreas principais de experimentação:

1. Processamento Concorrente de Arquivos (Uso de Virtual Threads)

  • Cálculo de Hashes (SHA-256): Capacidade de mapear diretórios e calcular concorrentemente o hash do conteúdo de arquivos de ponta a ponta.
  • Alto Desempenho e Concorrência Escalável: Emprega a arquitetura de Virtual Threads (Executors.newThreadPerTaskExecutor(Thread.ofVirtual()...)), lidando paralelamente com divisões de blocos em requisições de E/S de múltiplos arquivos sem os bloqueios e os altos custos de uso da "Platform Threads" convencionais ligadas ao núcleo do Sistema Operacional.
  • Gerenciamento de Escopo Assíncrono: Utiliza Semáforos concorrentes aliados a coleções assíncronas (ConcurrentLinkedQueue e AtomicInteger) para orquestrar corretamente e limitar múltiplas leituras em IO simultâneas sem saturação de memória, além de agrupar o resultado computado fragmentado adequadamente.

2. Processador de Formas Geométricas (Uso de Pattern Matching e Sequenced Collections)

  • Reconhecimento de Formas Dinâmico: Utiliza Pattern Matching for switch a fim de identificar de modo limpo e fluído qual o tipo da geometria que está sendo validada (Type Of); podendo calcular em tempo real características de formas como Círculos, Retângulos e diferenciar Triângulos entre Equiláteros, Isósceles ou Escalenos.
  • Cálculo e Análise Métrica: Processamento matemático para descobrir as distâncias entre pontos geográficos (num plano cartesiano de vetores), identificar área das superfícies geométricas e ângulos de interseção valendo-se da precisão e regras rigorosas através da classe BigDecimal.
  • Coleções Eficientes: Emprego prático das Sequenced Collections recém criadas a partir das interfaces do Java 21, tornando muito mais lógico o ato de percorrer o conjunto com previsibilidade e acesso instantâneo das pontas dos dados através de métodos canônicos (tais como invocando cartesianPoints.getFirst() e .getLast()).

📁 Estrutura do Projeto

Os códigos-fontes seguem uma organização altamente coesa direcionada por pacotes:

  • src/main/java/com/herculanoleo/
    • entrypoint/: Concentra os executáveis centrais via linha de comando e classes principais para rodar testes manuais em processadores de arquivos e formas de acordo com o cenário almejado (FileEntrypoint, ShapeEntrypoint).
    • models/: Detém as classes de domínio dos artefatos da aplicação (Pontos no plano representados por record/classes imutáveis, geometrias, tipos enum, abstrações para retornos processados e exceções de negócio personalizadas).
    • processor/: O cerne funcional do projeto, onde residem os motores lógicos e onde o uso das novas features fica bem explícito:
      • ProcessorFile.java: Encapsula a lógica agnóstica de conversão para Hashes e o uso massivo arquitetural em concorrência leve de Virtual Threads.
      • ProcessorShape.java: Contém os cálculos complexos baseados em Pattern Matching sobre classes hierárquicas e interações diretas em coleções ordenadas.

🛠️ Bibliotecas Utilizadas

A aplicação mantém a simplicidade em suas dependências do pom.xml, contando apenas com frameworks pontuais:

  • Java 21 (JDK 21): Alicerce do projeto contemplando suporte completo ao compilador moderno, Virtual Threads (JEP 444), Pattern Matching (JEP 441) e Sequenced Collections (JEP 431).
  • Apache Commons IO (v2.15.0) / Apache Commons Codec (v1.16.0): Utilitários padronizados para simplificarem operações rotineiras e manipulações complexas de Input/Output no sistema de diretórios assim como lidar com criptografia rápida de checksums (SHA-256).
  • Lombok (v1.18.30): Facilita a definição de abstrações gerando boilerplate de baixo nível como logs Log4j2, construtores e empacotadores da classe via anotação sem necessidade de verbosidade no arquivo final.
  • Log4j 2 Core (v2.21.1): Motor resiliente de logs transacionais para suportar e escrever traços sem atrasos bloqueantes dentro das threads em execução.
  • Mockito e JUnit Jupiter (v5.6.0): Ecossistema maduro empregado no escopo de runtime de testes para execução da suíte visando certificar as matemáticas rigorosas dos processadores através de Testes Unitários.

O repositório e suas validações representam o estado da arte do quão fácil se tornou escalar rotinas outrora engessadas, garantindo legibilidade da orientação ao objeto usando recursos maduros oferecidos diretamente na sintaxe da própria linguagem.

About

A practical project demonstrating the new features of Java 21, including Virtual Threads, Pattern Matching, and Sequenced Collections.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages