Fundamentos de Java 2

Compartilhado por um usuário do Flashcards.gg · gerado com IA · Denunciar este conjunto

Conceitos avançados e recursos modernos da linguagem Java aplicados a cenários práticos de desenvolvimento de software.

55 cartões Português Nível: Intermediário Programação Publicado
Toque no cartão para virar

Cartões · 55

try-with-resources
Gerenciar e fechar automaticamente fluxos de I/O, conexões JDBC ou arquivos, prevenindo vazamentos de recursos de sistema.
Optional<T>
Modelar valores de retorno em métodos de serviço que podem ser nulos, evitando NullPointerException sem checagens manuais excessivas.
Record
Criar DTOs imutáveis para transferência de dados entre camadas de API REST e controladores de forma concisa e padronizada.
Stream API
Filtrar, transformar e agregar coleções de dados em memória, como obter a lista de e-mails ativos a partir de uma lista de clientes.
CompletableFuture
Orquestrar chamadas concorrentes assíncronas para múltiplos microsserviços e combinar suas respostas sem bloquear threads.
synchronized
Garantir acesso exclusivo a uma variável crítica ou recurso compartilhado em ambientes concorrentes de baixa complexidade.
volatile
Indicar que o valor de uma flag de parada de thread deve ser lido diretamente da memória principal, garantindo visibilidade mútua.
AtomicInteger
Implementar contadores concorrentes de alto desempenho, como contagem de requisições por segundo, sem locks pesados.
ConcurrentHashMap
Manter um cache em memória acessado simultaneamente por várias threads de requisições web com alta escalabilidade.
Enum
Representar um conjunto fixo de constantes de negócio, como status de pagamento (PENDING, PAID, CANCELLED), com tipagem segura.
Interface Default Methods
Adicionar novas funcionalidades a bibliotecas legadas sem quebrar as classes existentes que implementam a interface.
Custom Annotation
Marcar métodos que exigem verificação de permissões ou logging automático por meio de interceptadores AOP.
FunctionalInterface
Definir contratos de ação única para serem passados como expressões lambda, como regras de validação personalizadas.
Generics
Desenvolver repositórios de banco e coleções reutilizáveis com verificação de tipo em tempo de compilação.
Pattern Matching for instanceof
Simplificar a verificação de tipo de payload polimórfico e eliminar o casting manual explícito.
Sealed Classes
Restringir quais classes podem herdar uma hierarquia de domínio, como tipos fixos de eventos de pagamento aceitos.
ThreadLocal
Armazenar contexto de segurança, token do usuário ou identificador de transação específico da thread atual de execução.
Virtual Threads (Project Loom)
Processar milhões de requisições I/O bloqueantes simultâneas em servidores web sem esgotar as threads do sistema operacional.
Custom Exception
Sinalizar erros de domínio específicos, como ProdutoSemEstoqueException, facilitando o tratamento na camada de API.
transient keyword
Impedir que campos sensíveis, como senhas de usuários ou tokens, sejam serializados para arquivo ou rede.
final keyword on variables
Criar valores imutáveis e garantir segurança de thread para constantes e dependências injetadas via construtor.
WeakReference
Implementar caches em memória que descartam objetos automaticamente quando o coletor de lixo (GC) precisa de espaço.
Varargs (...)
Permitir métodos flexíveis de utilidade ou concatenação de consultas que aceitam quantidade variável de argumentos.
Method Reference (::)
Passar implementações de métodos existentes para streams e lambdas, deixando o código mais limpo e legível.
Comparable<T>
Definir a ordem natural de objetos de domínio, como ordenar faturas por data de vencimento por padrão.
Comparator<T>
Permitir múltiplas estratégias dinâmicas de ordenação, como listar produtos por preço crescente ou avaliação.
Immutable Collections (List.of)
Criar listas constantes e protegidas contra alterações acidentais em tempo de execução.
ExecutorService
Gerenciar pools de threads reutilizáveis para processamento em lote (batch) de faturas ou envio de e-mails.
ReentrantLock
Controlar concorrência avançada onde é necessário tentar adquirir o lock com timeout ou locks não bloqueantes.
BlockingQueue
Implementar o padrão produtor-consumidor para processar filas de mensagens internas entre diferentes tarefas.
CountDownLatch
Fazer uma thread principal aguardar até que múltiplos serviços de inicialização concluam seu carregamento.
CyclicBarrier
Sincronizar uma etapa de cálculo paralelo onde todas as threads devem terminar antes da próxima iteração.
Semaphore
Limitar a quantidade de acessos simultâneos a um recurso escasso, como conexões ativas a uma API de terceiros.
ServiceLoader (SPI)
Carregar dinamicamente plugins ou drivers de banco sem acoplamento direto com a aplicação principal.
Proxy Dinâmico
Criar wrappers de instrumentação em tempo de execução para frameworks de injeção de dependência e transações.
Switch Expressions
Mapear códigos de erro ou regras de tributação retornando valores diretamente sem risco de fall-through acidental.
Text Blocks (triple quotes)
Escrever queries SQL, payloads JSON ou scripts legíveis no código-fonte sem necessidade de escape de aspas.
BigDecimal
Calcular valores monetários e financeiros sem os erros de arredondamento inerentes ao ponto flutuante binário.
DateTimeFormatter
Converter strings de datas recebidas de APIs externas para objetos LocalDate no fuso horário correto.
Duration e Period
Calcular intervalos de tempo exatos para expiração de tokens ou cálculo de idade de clientes.
TreeSet
Manter uma lista de participantes de eventos sempre ordenada e sem duplicatas em tempo de inserção.
LinkedHashMap
Implementar políticas de cache simples baseadas em LRU (Least Recently Used) com base na ordem de acesso.
BitSet
Rastrear grandes volumes de flags booleanas de usuários ou permissões com consumo mínimo de memória RAM.
StrictMath
Garantir cálculos numéricos idênticos em nível de bit através de diferentes arquiteturas de hardware.
Var (local variable type inference)
Reduzir o ruído visual em variáveis locais quando o tipo concreto já está óbvio no lado direito da atribuição.
Classloader
Isolar bibliotecas de versões conflitantes e carregar módulos de software em tempo de execução com segurança.
Shutdown Hook
Executar rotinas de limpeza, flush de logs e fechamento ordenado de conexões antes do encerramento da JVM.
SecurityManager / AccessController
Restringir permissões de execução de código não confiável em ambientes sandbox legados.
String.intern()
Reutilizar instâncias de strings repetitivas em memória para reduzir drasticamente o footprint da heap.
PhantomReference
Realizar ações de pós-coleta de lixo e liberação de recursos de memória nativa com mais segurança que finalize().
Foreign Function & Memory API
Acessar bibliotecas nativas em C e gerenciar memória fora da heap da JVM com segurança de tipos e velocidade.
StampedLock
Otimizar leituras concorrentes em estruturas de alta performance usando modo de leitura otimista.
ForkJoinPool
Processar tarefas computacionais pesadas de divisão e conquista paralelizadas em múltiplos núcleos de CPU.
Files.lines()
Ler arquivos gigantes de log linha por linha via Stream sem carregar o arquivo inteiro na memória RAM.
UnmodifiableView (Collections.unmodifiableList)
Expor o estado interno de uma coleção de entidade protegendo-a de modificações externas indesejadas.

Outras versões deste tópico

Conjuntos relacionados

Mais em Programação →