Ir para o conteúdo
Blog Engineering
  • Home
  • Temas
    • Transformação Digital
    • Cloud computing
    • Tecnologia da informação
    • API
    • Inteligência Artificial
    • Cybersecurity
    • User Experience
    • Linguagens
    • Indústria 4.0
    • IoT
  • Materiais Ricos
  • Site
Blog Engineering
Linguagens

Reflectionless: saiba mais sobre essa nova tendência no mundo Java

Por Engineering Brasil

Em 20/12/2021 • Atualizado em 13/03/2025

4 minutos para ler

Desde que foi criada, em 1995, a linguagem de programação Java se popularizou rapidamente e se tornou uma das mais utilizadas do mundo. Com o crescente uso da computação em nuvem, que exige aplicações com uma inicialização mais ágil e baixo heap (estrutura de dados especializada) de memória inicial, uma das tendências do mundo Java é o reflectionless, que propõe reduzir os gargalos do pacote reflection.

Ainda não está por dentro de como funciona o reflectionless? Confira, neste post, o que você precisa saber sobre o assunto!

Conteúdo

Toggle
  • O que é reflection?
  • Quais são os problemas do reflection?
  • Como aplicar o reflectionless?
    • Compartilhe !

O que é reflection?

Vamos entender primeiro o que é reflection, cuja função é extremamente relevante dentro de muitas ferramentas, que vão desde o JAX-RS (uma API REST) até os clássicos ORM. O mecanismo tem como finalidade facilitar o trabalho dos desenvolvedores Java, pois reduz bastante o boilerplate (trechos de um documento) de várias operações.

Um dos diferenciais do universo Java é exatamente sua gama de ferramentas e ecossistemas relacionados à linguagem de programação. Os usuários finais desses frameworks podem acessar todos os seus recursos de forma simplificada, já que é só inserir anotações na classe, que serão lidas, para que as demais operações sejam executadas.

Nas construções de frameworks atuais, a forma mais comum de efetuar essa leitura é por meio do reflection, que faz uma introspecção que cria uma espécie de linguagem simbólica dentro das operações Java.

Quais são os problemas do reflection?

A adoção da API do reflection para o desenvolvimento de soluções no mundo Java se tornou mais fácil devido à alta disponibilidade de materiais, com documentos, especificamente para essa modalidade de trabalho. Contudo, ainda há algumas dificuldades quanto à inicialização e ao consumo de memória quando se utiliza o reflection.

A primeira dificuldade acontece porque o processamento e a estrutura de dados são feitos no ato da execução. Nesse contexto, é preciso checar cada classe, escopos e dependências — quanto maior o número de classes a serem checadas, mais processamento vai ser exigido, ampliando consideravelmente o tempo de resposta.

Já o segundo problema, o consumo de memória, está atrelado à necessidade de cada classe de ser percorrida para encontrar os metadados presentes no Class, que se caracteriza por ter um cache ReflectionData que carrega os dados da classe. Isso quer dizer que, para acessar uma única informação, o processo acaba carregando todos os metadados e a referencia a partir do SoftReference, que demanda um período bem maior para sair da memória.

Portanto, pode-se dizer que a demora para iniciar a aplicação e o consumo de memória se devem às análises e aos processamentos de parser que são executados assim que a aplicação começa a funcionar.

Como aplicar o reflectionless?

O reflectionless contribui para solucionar os problemas da abordagem reflection. Para tanto, a tendência propõe que os frameworks façam as operações de análises e o processamento durante a compilação, deixando de acontecer na execução. A iniciativa traz as seguintes vantagens:

  • todas as estruturas e os metadados já estarão prontos no momento em que a aplicação for iniciada;
  • não é necessário chamar as classes do reflection, como a ReflectionData, o que reduz o consumo de memória no processo de inicialização;
  • o programador não vai sofrer com o efeito do Type Erasure (Tipo de Apagamento).

Além disso, quando não se usa o reflection, torna-se viável desenvolver um código nativo. Basta utilizar o GraalVM, que é ideal para projetos com o conceito serverless, tendo em vista que o programa é executado somente uma vez e posteriormente faz com que o recurso volte para o sistema operacional.

Como toda inovação que surge na área de programação, o reflectionless também pode ter desvantagem. Isso porque a remoção da aplicação implica perda da otimização do compilador Just-in-Time (JIT). Inclusive, alguns programadores já apontam que o Java Virtual Machine (JVM) pode ser mais eficiente que o código nativo. Logo, sua escolha entre adotar ou não a tendência vai depender das características e dos objetivos do seu projeto.

E aí, gostou deste post? Siga o nosso perfil no LinkedIn e acompanhe mais conteúdos interessantes e curiosos sobre tecnologia!

Avalie esse post

Compartilhe !

Twitter
Posts relacionados
reflectionless

Reflectionless: saiba mais sobre essa nova tendência no mundo Java

Publicado por Engineering Brasil em 20/12/2021
Imagem ilustrativa mostrando Devops e SRE. Homem negro olha, com a mão no queixo, para uma tela de computador que não aparece na imagem.

Qual a diferença entre DevOps e SRE?

Publicado por Engineering Brasil em 21/09/2021

Deixe um comentário Cancelar resposta

Posts populares

Gestão de APIs,
integração de
sistemas e dados
em uma única
plataforma
logo

Logotipo da API

Veja mais

Institucional

  • Sobre a Engineering
  • Site

Companhia global de Transformação Digital, especializada em soluções que envolvem API e Inteligência Artificial.

Categorias

  • Transformação Digital
  • Cloud computing
  • Tecnologia da informação
  • API
  • Inteligência Artificial
  • Cybersecurity
  • User Experience
  • Linguagens
  • Indústria 4.0
  • IoT

Entre em Contato

  • Rua Dr. Geraldo Campos Moreira, 375 – 10º andar
    São Paulo-SP CEP 04571-020

  • (11) 3629-5300

Redes Sociais

Twitter
Site criado por Stage.

Share

Blogger
Delicious
Digg
Email
Facebook
Facebook messenger
Google
Hacker News
Line
LinkedIn
Mix
Odnoklassniki
PDF
Pinterest
Pocket
Print
Reddit
Renren
Short link
SMS
Skype
Telegram
Tumblr
Twitter
VKontakte
wechat
Weibo
WhatsApp
Xing
Yahoo! Mail
Powered by WP Socializer

Copy short link

Copy link
Powered by WP Socializer