Pular para o conteúdo principal

Postagens

REST Assured

Recentemente, fiz uma apresentação no meu trabalho falando sobre o framework REST Assured, que permite construir testes unitários que verificam o funcionamento de serviços REST. Confira a apresentação abaixo!

JBoss EAP - Servidor de Aplicação Java

  Se você é um desenvolvedor Java, saiba que a Red Hat fornece um servidor de aplicação que implementa os padrões Java EE / Jakarta EE . Existe a versão open source - o Wildfly - e a versão paga, que dá direito a suporte da Red Hat - o JBoss EAP . Recentemente, fiz uma apresentação no meu trabalho falando sobre este servidor de aplicação, e compartilho aqui com vocês. Aproveitem!

Jakarta EE 10, A nova versão corporativa do Java

Mais de um ano atrás, fiz um post sobre o lançamento da versão 9.1 do Jakarta EE (confira esse post aqui ). Nesse post, eu expliquei um pouco sobre a transferência do Java EE da Oracle para a Eclipse Foundation e a mudança necessária ocorrida nessa versão no nome dos pacotes: de javax para jakarta . Agora, acabou de sair uma nova versão do Jakarta EE , versão 10 , a primeira versão que verdadeiramente traz novidades nas especificações que tanto conhecemos: JPA agora evoluiu para a versão 3.1; CDI para a versão 4.0; JAX-RS  para a versão 3.1; e assim por diante. Foram mais de vinte especificações atualizadas / evoluídas nesta versão, que criou também um novo perfil de implementação. Agora, temos três perfis para implementação do Jakarta EE :  Jakarta EE 10 Platform , o perfil completo com todas as especificações (este perfil somente os servidores de aplicação costumam implementar, como Wildfly e Glassfish ); Jakarta EE 10 Web Profile , um perfil com especificações volta...

Visual Studio Code - Enriquecendo com Extensões

Já falei em posts anteriores sobre essa grande IDE chamada Visual Studio Code , uma IDE que se propõe a ser livre, portável e para todas as linguagens. E no tocante a ser para todas as linguagens, como eles estão conseguindo atingir esse objetivo? Através de uma arquitetura de extensões, que aumenta consideravelmente o poder do editor e o torna habilitado para as principais linguagens de programação. Vou citar algumas extensões muito legais que já usei e que tem me permitido utilizar o VS Code tanto para desenvolvimento no frontend quanto no backend . Vamos separar por linguagem/framework: Angular : Angular Language Service - extensão fornecida pela própria equipe do Angular, enriquece o trabalho com o framework fornecendo auto complete, diagnósticos e muito mais. Para quem trabalha com o Angular, é uma extensão obrigatória! Auto Import - não só para quem trabalha com Angular , mas com a linguagem TypeScript de forma geral, a extensão facilita a importação de um recurso, aumentand...

Manifesto Tech

 Gostaria de elogiar publicamente o Manifesto Tech , iniciativa de diversos líderes do mercado de TI brasileiro, no sentido de incentivar a contratação de pessoas em desenvolvimento, para promover a cultura de crescimento com aprendizado contínuo. Algo muito importante no mercado brasileiro mesmo, as vagas de TI estão em alta e não temos tanta gente experiente assim. Além do mais, desenvolver os seus profissionais deveria ser uma meta para toda e qualquer empresa, não importa a área de atuação. Conheça o Manifesto Tec h, acesse este link:  https://manifestotech.org/ Um abraço e até o próximo post!

Versionamento Semântico

  Talvez este seja um assunto básico, mas nem por isso deixa de ser importante. O versionamento semântico é aquela sequência de números que determinam a versão de um programa. Esses números possuem um significado e você, desenvolvedor, deve respeitar essa semântica quando lançar uma nova versão de seu sistema ou de sua biblioteca. Uma versão padrão de programa deve conter três partes: major version , minor version e patch version . M.n.p , sendo que as três partes que compõem a versão devem conter números não negativos (o zero é permitido). E essas três partes devem ser incrementadas seguindo regras já bem estabelecidas no mundo do software: Incremente apenas a patch version se você realizou correções de bugs; Incremente a minor version se você criou novas funcionalidades ou fez melhorias no seu código; Por fim, incremente a major version se você criou alguma funcionalidade nova ou mexeu em alguma parte de seu programa / sistema que o tornou incompatível com a versão anterior. ...

Não ignore linguagens de programação das antigas

  Quando começamos a aprender linguagens de programação, vamos atrás das linguagens mais badaladas, que oferecem mais oportunidades de emprego/estágio. Ignoramos totalmente linguagens mais antigas, reclamamos da grade de matérias da faculdade que tentam nos ensinar essas linguagens chatas. A moda atual é estudar Python , TypeScript , React . Todos só querem aprender essas linguagens / frameworks principais. Python é a atual queridinha da molecada, graças a seus talentos na área de ciência de dados, área que está pagando muito bem. Nada contra, mas deixa eu dar uma dica de quem já viu muitas linguagens se tornarem queridinhas e afundarem no esquecimento em poucos anos depois: não ignore outras linguagens, sejam elas antigas ou pouco populares. Todos dizem que a história se repete, que é importante conhecermos a história para não repetimos os erros do passado, certo? (o Brasil é um perfeito exemplo, não é mesmo?) Então vamos contar algumas histórias de linguagens super populares que ...

Visual Studio Code - Uma IDE para todas as linguagens

 Se você é um desenvolvedor, a chance é grande de conhecer o Visual Studio Code , uma IDE open source desenvolvida pela Microsoft e que vem crescendo bastante em popularidade. Recentemente, fiz uma apresentação no meu trabalho falando sobre extensões, teclas de atalho e outras características dessa ferramenta e compartilho aqui no blog para vocês!

Uma nova versão do Java foi lançada. Uma versão bem importante!

  A última terça-feira viu o lançamento de mais uma versão do Java - a versão 17. Atualmente, esta não costuma ser uma grande notícia, já que com o atual ritmo de lançamentos da plataforma, temos duas versões por ano - em março e em setembro. Entretanto, esta versão é especial. Ela é uma versão LTS, que vem substituir a versão LTS anterior, a versão 11. E porque o lançamento das versões LTS é tão importante? Já falei um pouco sobre as versões LTS do Java no post sobre o lançamento do Jakarta EE 9.1 . LTS é uma sigla que significa Long Term Support , suporte de longo prazo em uma tradução livre. São versões que o fabricante se compromete a dar suporte por um período mais longo, se tornando mais indicadas para utilização pelas empresas, que precisam desse tipo de suporte para garantir o funcionamento adequado do seu negócio. O órgão onde trabalho utiliza esta estratégia e recentemente migramos para a versão 11 do Java (quem sabe ano que vem a gente consiga migrar para esta nova versã...

Maven - Versão nova lançada

  Saiu versão nova do Maven - 3.8.2. Esta foi apenas uma versão de correção de bugs, mas a versão anterior, a 3.8.l, foi uma versão importante e vou aproveitar para falar sobre ela. Quem acompanha o histórico de versões do Maven , deve ter percebido o pulo de versão, da 3.6.3 para esta 3.8.1. A razão está explicada neste link , e o grande motivo foi tentar evitar problemas de segurança pelo acesso a repositórios via protocolo HTTP. Por default, esta versão 3.8.1 do Maven bloqueia o acesso a repositórios HTTP - você precisa acessar repositórios HTTPS . O bloqueio acontece com a adição de um mirror chamado "maven-default-http-blocker", bloqueando todo e qualquer acesso a repositórios HTTP externos. <mirror>    <id>maven-default-http-blocker</id>    <mirrorOf>external:http:*</mirrorOf>   <name>Pseudo repository to mirror external repositories initially using HTTP.</name>    <url>http://0.0.0.0/</u...

Antes de debugar, tente logar - Um panorama do Log4J

Não pretendo, com este post, advogar contra o processo de depuração. Muitos erros só são resolvidos com uma boa debugada no código, não tem jeito. O objetivo aqui é incentivar a arte de logar. Logar em diversos níveis e em diversos pontos do seu projeto/sistema/API. Você não precisa acreditar em mim. Acredite em todas as bibliotecas que você utiliza, que emitem mensagens para te auxiliar o tempo todo. Não seria bom que quem usa suas bibliotecas e/ou APIs pudessem ter a seu dispor o mesmo nível de auxílio? Meu primeiro exemplo vem de um caso prático que passei. Estava passando por problemas no VRaptor (para quem não conhece, o VRaptor é um framework Java MVC que te auxilia magnificamente na construção de controllers , lidando muito bem com a camada Web e permitindo até a construção de serviços REST), e percebia que o debug não estava me dando as informações necessárias para resolver meu problema. Foi quando mexi no arquivo de configuração do Log4J e aumentei o nível de log do framewo...

Angular Coding Style Guide

Voltando à plataforma Angular, vou falar neste post sobre o Guia de Estilo Angular , um conjunto de recomendações que envolvem desde a nomenclatura dos arquivos e estrutura das pastas até tamanho das classes e funções para manter coesão. Esse guia está disponível neste link aqui . Muitas linguagens acabam orientando os seus programadores em uma direção de padronização. O antigo Delphi já trazia seu estilo PascalCase , também conhecido como UpperCamelCase , com letras prefixando os nomes identificando seu propósito (T para tipo, I para interface, etc.). Esse estilo acabou sendo adotado na plataforma .Net (alguns arquitetos da Borland foram contratados pela Microsoft exatamente para criar a sua nova plataforma na época, para rivalizar com a crescente tecnologia J2EE ...). Java e Javascript adotam o padrão CamelCase , e o Maven acabou padronizando a estrutura das pastas dos projetos Java pela sua adoção maciça pela comunidade. Essa padronização é algo bom e positivo e toda equipe de...

Angular e Lint: Análise de código

  A plataforma Angular costuma primar pelas boas práticas, sempre recomendando-as e reforçando-as em sua arquitetura. Um dos conceitos utilizados é o de lint , termo que ficou popular recentemente e que indica uma análise estática do código-fonte em busca de violações: no estilo, formato e em construções suspeitas. O conceito de lint não é novo: foi criado no final dos anos 70 ( Wikipedia ), para a linguagem C, e vem evoluindo desde então com ferramentas diversas para as mais variadas linguagens de programação. Na plataforma Angular, a ferramenta TSLint foi adotada desde as primeiras versões, fornecendo análises estáticas para manter o código desenvolvido mais robusto e padronizado entre as equipes. Quando criamos uma aplicação Angular a partir da ferramenta de linha de comando ( @angular/cli ), um comando é adicionado no arquivo package.json para realizar uma análise no código do projeto: ng lint . A saída do comando aponta possíveis violações nos padrões de projeto e nas conv...

Jakarta EE 9.1 foi lançado

Nesta semana, a Eclipse Foundation anunciou o lançamento da nova versão do Jakarta EE , a versão 9.1. O objetivo dessa versão foi tornar a plataforma Jakarta EE totalmente compatível com o Java SE 11. Importante frisar que foi mantida total compatibilidade com o Java SE 8. Vale aqui uma boa contextualização, para quem não tem acompanhado as notícias do mundo Java. O pessoal das antigas vai lembrar da diferenciação entre Java SE ( Standard Edition , o Java que sempre instalamos no computador) e Java EE ( Enterprise Edition , um conjunto de especificações que eram implementadas por servidores de aplicação). Essas plataformas eram controladas pela Sun , e passaram a ser controladas pela Oracle , quando esta última comprou a primeira. A plataforma Java SE viu uma evolução tremenda nos últimos anos. O ritmo de lançamento das novas versões passou a ser semestral, com pequenos avanços em cada versão. Assim, o Java SE agora se encontra na versão 16, com expectativa de lançamento da versão...

Angular Dev Tools

Aproveitando o frisson do lançamento de nova versão (ver o post anterior ), a equipe do Angular lançou também uma ferramenta chamada Angular Dev Tools - uma extensão para o Chrome que permite maiores informações de debug e performance de uma aplicação Angular rodando no browser. Mais um passo dado pela equipe de desenvolvimento do framework para melhorá-lo para a comunidade, conforme pesquisa realizada que apontou que uma ferramenta de debug e melhores mensagens de erro eram os maiores desejos dos desenvolvedores - veja o post oficial falando sobre isso aqui:  https://blog.angular.io/introducing-angular-devtools-2d59ff4cf62f . Para instalar a ferramenta, entre na Chrome Web Store e procure a extensão pelo seu nome (aqui o link direto ). Clique em "Add to Chrome" para instalá-la. Após a instalação, abra sua aplicação Angular no Chrome e entre na opção "Inspecionar" ( Chrome Dev Tools , acessível também pela tecla de atalho <F12> ). No mesmo lugar que voc...

Angular 12 foi lançado

Um post rápido para informar que a versão 12 do Angular saiu esses dias. Confira aqui as novidades desta nova versão:  https://blog.angular.io/angular-v12-is-now-available-32ed51fbfd49 Para quem não conhece, o Angular é um framework SPA ( Single Page Application ) open source , desenvolvido pelo Google para substituir o framework antigo, AngularJS , com conceitos bem modernos e utilizando a linguagem TypeScript . Esse movimento foi brusco e arriscado, pois não guardou compatibilidade, e assustou muita gente - eu incluído. Mas depois que ultrapassei o medo de aprender e venci a curva de aprendizado (o framework é muito bom, mas tem uma curvinha considerável de aprendizado), percebi que se trata de uma excelente ferramenta, muito bem estruturada e pensada, que te dá todas as condições para escrever aplicações de alto nível, bem estruturadas e baseadas em componentes. Em outro(s) post(s) eu me animo e explico um pouco mais sobre o Angular . Um dos recursos bem interessantes do Angula...

Implantando o Flyway em sistemas Java - Parte 4

 Neste quarto e último post da série sobre o Flyway , vamos falar sobre alguns recursos menos badalados da ferramenta, a saber: Como mudar o nome da tabela de controle do Flyway ; Como utilizar o recurso de placeholders , algo como variáveis de substituição para os scripts. Vamos lá! Como mudar o nome da tabela de controle do Flyway Alterar o nome da tabela de controle utilizada pelo Flyway para armazenar as versões das migrações é extremamente simples. Na seção de configuração do plugin no Maven , basta adicionar uma entrada <table> , com o nome da tabela. Exemplo : <plugin>    <groupId>org.flywaydb</groupId>    <artifactId>flyway-maven-plugin</artifactId>    <version>7.7.3</version>    <dependencies>       ...    </dependencies>    <configuration>       ...       <table> nome_diferente_tabela ...

Implantando o Flyway em sistemas Java - Parte 3

 Ao final do post anterior ( segunda parte da série sobre o Flyway ), deixamos três problemas para serem resolvidos na nossa implantação do Flyway no nosso projeto. Eis os problemas que foram expostos: Senhas expostas no arquivo pom.xml ; Como diferenciar ambientes diferentes para o projeto; Scripts incluídos no arquivo jar / war gerado. Vamos às soluções para esses problemas! Problema 1 - senhas expostas : A solução para este problema se dá em duas partes. Primeiramente, removemos as credenciais de acesso do pom.xml e colocamos no arquivo settings.xml do Maven . Esse arquivo traz toda a configuração do framework e fica localizado na subpasta conf da pasta de instalação. Localize a seção <servers> no arquivo, e adicione uma entrada <server> , contendo um identificador para essa entrada, mais o usuário e a senha. Como no exemplo abaixo: <server>    <id>ripando</id>    <username>usrmusica</username>    <...

Implantando o Flyway em sistemas Java - Parte 2

 Neste segundo post falando sobre o Flyway , vamos meter a mão na massa e trazer um exemplo para implementar a ferramenta em um projeto Java EE. Basicamente, mexeremos no arquivo pom.xml, então conhecimentos de Maven serão necessários. Tentarei explicar os principais conceitos ao longo do post. Vamos lá! (o post relativo a primeira parte pode ser lido aqui ) O primeiro passo é criar a pasta src/main/resources/db/migration , onde ficarão os scripts de banco de dados. Esses scripts deverão receber um padrão de nomeação especial: todos os scripts deverão conter o prefixo Vxx__ , com xx indicando a versão. Repare no duplo caractere underline . Se o script se referir à uma view ou stored procedure, o prefixo deve ser R__ . Alguns exemplos de nomes de scripts:  V01__criacao_tabelas.sql; V02__inclui_indice.sql; R__view_func_ativos.sql; R__sp_inclui_func.sql. No segundo passo, vamos mexer no pom.xml . Adicionaremos, na seção plugins , o plugin do Flyway . Os plugins são uma forma q...

Implantando o Flyway em sistemas Java - Parte 1

  Quando temos uma empresa terceirizada de fábrica de software desenvolvendo, geralmente especificamos no edital de licitação que essa empresa precisa entregar alguns artefatos obrigatórios para poder receber pelos serviços prestados: o código-fonte (óbvio!), diagramas UML (quando necessário), evidências de testes (artefato que cada vez mais me convenço que de nada serve)... e um plano de implantação. Esse plano de implantação precisa trazer os passos necessários para colocar o produto no ambiente de homologação (e, posteriormente, no ambiente de produção). Na maioria das vezes, um ou mais scripts de banco de dados que devem ser executados. Nós, servidores, tínhamos que abrir o plano de implantação, verificar os passos, acessar o versionador, abrir a ferramenta de banco de dados, copiar o(s) script(s), executá-los, tudo manualmente, gerando um trabalhinho chato e propenso a erros. Além disso, os scripts sempre ficavam meio perdidos: as vezes espalhados por pastas relativas às orden...