Olá, meu nome é Fernando Comunello.
E esta á a minha linha do tempo da TI:
acompanhar desde o início-
# CONTRIBUINDO COM OPEN-SOURCE
2022 - atualmente Ao me especializar em Jakarta EE e MicroProfile, decidi investir meu tempo no Quarkus — framework supersônico e subatômico da Red Hat otimizado para a JVM, e também para GraalVM, com suporte a compilação nativa. Foi então que realizei a minha primeira contribuição
Pull-request #27372
Realizei novas implementações de file managers que estendem a implementação padrão do JDK e se integram com a interface do compilador nativo da linguagem, esta interface é importante para o dev mode do Quarkus (comento sobre o dev mode neste vídeo
Vídeo do meu canal do YouTube
Como resultado, empresas que já utilizavam o ou que pretendem utilizar o framework em produção, são capazes de integrar projetos externos que contêm regras de negócio juntamente com a API e/ou aplicação web desenvolvida com Quarkus, atuando como um shared kernel que auxilia na redução da duplicidade de código entre as camadas de negócio, o suporte desta integração também funciona com outras linguagens interoperáveis com a JVM como Kotlin, Kotlin Multiplatform e Scala, tudo isso sem precisar trocar de contexto ou reiniciar o modo de desenvolvedor a cada mudança no projeto ou lib externa, mantendo um loop de feedback automatizado e praticamente instântaneo entre o momento da mudança do código e a execução.
"O ciclo de feedback rápido da codificação ao vivo foi muito útil no desenvolvimento com o Quarkus. Embora a inicialização rápida tenha sido boa, não foi crítica, já que nossos aplicativos são de longa duração, mas durante o desenvolvimento, à medida que ajustamos nossas APIs, poder testar novamente imediatamente nos economizou muito tempo de desenvolvimento."
- Lead Developer do comitê de direção técnica da Adoptium. -
# GRANDES DESAFIOS TÉCNICOS
Janeiro - Dezembro, 2021Nesta fase, assumi diversas responsabilidades técnicas, realizando melhorias de performance e auxiliando novos desenvolvedores da equipe.
Uma melhoria de grande impacto
Uma dessas melhorias foi no processamento e sincronização de dados para uso off-line do CRM, rotina esta que movimentava um grande volume de dados extraídos do banco de dados.
Antes da melhoria:Ao executar as etapas de sincronização que agregavam os dados, nota-se que estava ocorrendo o que é conhecido como "Stop the World GC" no qual o Garbage Collector da JVM alocava muita memória pausando as threads da aplicação para conseguir desalocar memória. Encontrar uma solução para tal problema não costuma ser simples, fica ainda mais complicado se o monitoramento da aplicação não for realizado com frequência.
Depois da melhoria:Após as melhorias, nota-se que o GC passou a atuar da forma adequeada, sem grandes picos e com alocação de memória normalizada! A melhoria foi realizada através da migração para uma estrutura que permitisse dividir as operações de I/O em múltiplos lotes, empilhando e consumindo apenas um lote registros por iteração, isto torna-se viável ao utilizar tećnicas como JDBC Fetch Size ao consumir os registros do cursor, podendo superar a performance de leituras páginadas, pois o plano de execução é gerado apenas uma vez e não N vezes.
Também atuei na linha de frente refatorando procedures PL/SQL, buscando sempre maximizar a performance, diminuir o consumo de recursos e minimizar os problemas de N+1 atráves da análise dos planos de execução e logs, diminuindo o número de roundtrips entre a aplicação e o RDBMS. Por fim, o principal ganho foi no dia-a-dia dos usuários, que passavam não mais a esperar vários minutos ou até mesmo meia hora para realizar a sincronização dos dados agregados, mas sim apenas alguns segundos em alguns casos, diminuindo consideravelmente a chance de falhas no processo.
Meu primeiro artigo sobre Jakarta EE
Depois de muito aprofundamento no estudo de servidores de aplicação, especialmente JBoss e WildFly, publiquei o meu primeiro artigo sobre o assunto: Primeiros passos com o servidor de aplicação WildFly/JBoss e Jakarta EE
O entendimento da especificação Jakarta EE — antes conhecida como Java EE — foi essencial para a minha evolução, visto que nem todos os desenvolvedores compreendem que implementação é diferente de especificação, por isso acabam, muitas das vezes, disputando com recursos que o servidor de aplicação já gerencia. Ao compreender este pequeno conceito, a aplicação ficaria portável entre diferentes servidores de aplicação, sendo o JBoss EAP e Glassfish (adquirido por Payara) exemplos desses servidores, eliminando assim o vendor lock-in.
-
# EVOLUINDO NO CARGO
Janeiro, 2020Após me formar no ensino médio, meu contrato como dev fullstack passou para período integral, trabalhando presencialmente na empresa até então. E logo no primeiro trimestre do ano passei a trabalhar em modalidade remota, resolvendo os mais variados problemas, desenvolvendo melhorias e novas funcionalidades.
Principais trabalhos:- Refatoração do
Programa de Troca Barter
CRM Mobile » Barter.A finalidade do Barter é realizar trocas de insumos por uma parcela de produção futura, usando os insumos como uma garantia de pagamento. As mudanças contempladas na refatoração foram de grande importância para os clientes.
- Implementação de um
Agregador de Preços
CRM Web » Consulta de Produtos.Diversas empresas vendedoras de insumos agrícolas utilizam esta rotina por auxiliar na agilidade e nas vendas.
- Implementação da
Gravação de Áudios
CRM Web » Visita Técnica.Foi um grande desafio no qual tive que implementar uma interface de comunicação via JNI para executar instruções em C na JVM do Android - viabilizando assim o encode/decode dos áudios em formato .mp3 com compressão através do LAME Project.
- Refatoração do
Programa de Troca Barter
-
# PRIMEIRO EMPREGO
Fevereiro, 2018Foi então que consegui a minha primeira experiência de trabalho como programador Java web/mobile na VIASOFT aos meus 15 anos de idade, comecei com o desenvolvimento de soluções para o setor de agronegócio enquanto conciliava a escola e o trabalho meio periódo.
Tive a grande oportunidade de mergulhar em diversas tecnologias ao ingressar na equipe CRM | Agrotitan após realizar os e-learnings da empresa, me aprofundando não apenas no Java SE 7/8 mas também na especificação Java EE 7 utilizando o servidor de aplicação GlassFish, o Spring Framework e Hibernate ORM — e além de HTML, CSS e JavaScript, aprendi renderização server-side (SSR) usando JSF e JSP
Também tive o meu primeiro contato com mobile usando Java e a API Android, trabalhando no desenvolvimento de um aplicativo de CRM que tinha como requisito principal o funcionamento totalmente off-line para que os agricultores conseguissem registrar seu trabalho mesmo no meio do campo, era um requisito desafiador pois dependia que os dados estivessem sincronizados com o RDBMS on-line (Oracle , Firebird) e off-line (SQLite).
Alguns dos meus trabalhos realizados:
- Realizei a implementação de uma tela de
Resumo Financeiro
CRM Web » Relatórios » Resumo Financeiro - Manutenções períodicas nas regras de negócio de
Coleta de Leite
CRM Mobile » Coleta - Manutenções períodicas na rotina de Emissão de Pedidos.
- Melhorias de i18n (internacionalização), dentre outras tarefas.
- Realizei a implementação de uma tela de
Resumo Financeiro
-
# COMO EU CONHECI A LINGUAGEM JAVA?
~ 2017Em meados de 2017, aos 14 anos, eu comecei, por curiosidade, pesquisar formas de desenvolver os meus próprios Plugins Spigot para um servidor de Minecraft para que eu conseguisse oferecer uma experiência de jogo exclusiva aos players.
Assim que descobri que os plugins eram escritos em Java, me interessei pela linguagem e decidi passar alguns meses estudando Java e SQL, assim eu poderia desenvolver os meus próprios plugins que dependiam do armazenamento e consulta de diversos dados dos players in-game. Para alguém que sabia apenas configurar plugins em YAML baixados do repositório do Spigot certamente não seria uma tarefa simples, levando em consideração que eu ainda não tinha tido o contato com nenhuma linguagem de programação, nessa época apenas tive contato com HTML & CSS, que aprendi em um treinamento disponibilizado nos sábados pela UTFPR, universidade federal da região.
Então decidi seguir em frente buscando por fontes de aprendizado e encontrei estas vídeo-aulas de Java SE 7 da universidade XTI no YouTube, eu costumava a praticar e assistir as aulas todos os dias assim que chegava da escola, o tutorial oficial da linguagem também foi de grande importância nos meus estudos. Além disso, realizei um curso e avaliação de fundamentos de SQL da Softblue, que também disponibilizava treinamentos de Java avançado na época.
No entanto, para que fosse possível manter o servidor on-line 24/7 com os plugins que eu estava desenvolvendo, era necessário manter um contrato mensal com um serviço de VPS Linux, então percebi que talvez seria o momento de encontrar um trabalho de jovem aprendiz ...