Últimas notícias do evento

Como construir um bom sistema?

Postado em

Você sabe o que é desenvolver e entregar um bom sistema? Não estou falando do ponto de vista do consumidor, estou falando do ponto de vista do desenvolvedor. Estou me referindo da qualidade das “estruturas internas” que suportam a existência de um sistema, muitas das vezes chamado de “arquitetura de software”. O legal do assunto, é que não precisa ser respondido por nenhum ser humano, sendo que o próprio código da solução fala por si. Como?

  • A solução esta fácil de alterar?
  • Esta fácil localizar itens internos?
  • Esta fácil trocar componentes velhos por novos?
  • Esta fácil trocar frameworks velhos por novos?

Se sim, o sistema esta muito bem! Parabéns!!! E se:

  • Não esta fácil de alterar.
  • Não se acha nada.
  • Não da para trocar nada, tudo amarrado.
  • Sistema funcionando não se mexe!
  • Ninguém quer assumir a bucha?
  • Toda vez que mexe quebra alguma coisa?

Ai meu querido, “azedou o pé do frango”. Esse sistema ta ruim 😦 .

Um bom sistema, cresce e evolui de complexidade ao longo do tempo, dentro de um controle e de uma gestão. Um sistema ruim, cresce e aumenta de complexidade ao longo do tempo fora de controle, ficando pior a cada dia, como se fosse uma “bomba relógio”.

Aprenda a lidar como essa situação fazendo nosso curso ead de AQT M1 – Introdução a Arquitetura de Software com Java e venha entender os fundamentos de como construir um bom sistema!

Sorteio Grátis Do Curso

Nossa promoção do mês de maio sera o sorteio desse curso no dia 31/05/17. Compartilhe esse post no seu facebook, faça um print e envie juntamente com seu nome para fernandofranzini@gmail.com. Boa sorte a todos!

“Por isso, não fiquem preocupados com o dia de amanhã, pois o dia de amanhã trará as suas próprias preocupações. Para cada dia bastam as suas próprias dificuldades.” Mateus 6:34

Solução de mensageira não é um bicho de 7 cabeças # 1

Postado em Atualizado em

activemq-5-x-box-reflectionVocê já ouviu falar de MOM?

Message oriented middleware (MOM) é servidor de aplicação (infra-estrutura de software + hardware) idealizado exclusivamente para suportar o envio e recebimento de mensagens entre sistemas distribuídos. É um serviço utilizado para intermediar a troca de mensagens entre sistemas, com o objetivo de fazer integração de serviços.

Para que serve um MOM?

Serve para dar solução robusta e confiável na integração entre duas ou mais diferentes soluções. Integrar sistemas hoje é um desafio imenso, diferentes plataformas, diferentes tecnologias, diferentes protocolos, diferentes mecanismos de persistências, assim, se faz necessario garantir serviços dentro da solução de integração como por exemplo: desacoplamento, entrega de mensagem, persistência de mensagem, politicas de retry, processamento assíncrono, escalabilidade, confiabilidade, transação, interrupções, segurança, clusterização e muito etc. Um MOM já faz tudo isso e muito mais.

MOM é para ser utilizado em soluções de grande porte?

Essa é justamente meu ponto: você lendo tal definição, tem a falsa impressão que só usaria um MOM para fazer coisas gigantescas e exorbitantes!!! Mas depois de conhecer Apache ActiveMQ e Spring JMS, você vera que é muito fácil e pode usar para fazer coisas pequenas também. Como diria um amigo meu, “só na manteguinha….. 🙂 “.

Você já ouviu falar de ActiveMQ?

ActiveMQ é uma implementação de um middleware completo (MOM), open source e grátis. Ele possui todas as grandes features necessários para dar solução em coisas de “grande porte”, mas o que o pessoal desconhece é que ele tem um arquitetura tão flexível e é tão bem feito que oferece diversas opções de uso e configurações flexíveis. Umas delas é usar o serviço de MOM de forma “embarcada”, dentro da sua própria instancia da JVM e da solução, não precisando criar um servidor remoto exclusivo para isso. Juntamente com isso, você desabilita as chamadas remotas e questões de persistência, e assim, acaba ficando com um mini-serviço de MOM simples, local com suporte a filas(Queue) e tópicos (Topics) que é justamente a “cereja de bolo” desse tipo de serviço.

Você já ouviu falar de Spring JMS?

Spring JMS é kit de desenvolvimento arquitetural que faz parte do framework spring criado exclusivamente para se trabalhar com integração de sistemas usando MOM. Esse produto abstrai toda a infra-estrutura de código utilizada para programar esse tipo de solução, criando uma facade de serviços rápida, produtiva e fácil de usar, retirando a necessidade de fazer código sujo e infraestrutural (boilepart) necessário para se configurar, enviar e consumir mensagens de um MOM.

Vamos fazer um exemplo prático?

Segue abaixo um exemplo real dessa simples e robusta solução:

Ferramentas:

  • Maven
  • Eclipse Java EE IDE for Web Developers – Versão Neon.1
  • Groovy-Eclipse plugin

Projeto:

Segue os passos resumido do projeto:

Crie um projeto java maven: New project -> Maven Project. Adicione groovy no projeto: botão direto no projeto -> configure -> Convert to groovy project. Configure o pom para baixar as dependências básicas: groovy, spring, cdi e activemq:

1

Configurar o spring.xml, subindo o activemq local, sem persistência, sem jmx, sem chamada remota. Configurar uma fila simples e um listener de fila. Configuramos também um jmsTemplate que é a facade de serviços spring que esconde a código sujo de MOM e JMS.

2

Criar um bean que envia a mensagem da fila:

2

Criar um bean que consome as mensagens da fila:

3

Fazer uma classe simples com main para testar o envio e o consumo da mensagem:

3

Execute a solução e teremos a saída:

3

E assim, com  menos de 5 minutos, e poucas linhas de código você consegue embarcar e reusar um MOM completo fazendo filas, tópicos, sem persistência, sem chamada remota, sem gastar muita memoria, rápido, fácil e sem perder tempo fazendo na unha qualquer coisa do tipo. Sem contar que você pode evoluir mais esse produto, habilitando serviço por serviço, tudo de acordo com sua necessidade.

Aonde eu uso isso?

Precisou integrar sua solução java com e-mail?, web services soap? web services rest?, banco de dados legados? ou quer gerar um relatório pesado assíncrono? Esta ai seu ponto de partido. ActiveMQ + Spring JMS = Solução simples e rápida com todos os sabores de processamento assíncrono usando filas e tópicos 100% MOM.

Como eu aprendo mais sobre esse assunto?

Tudo isso e muito mais pode ser encontrado no livro ActiveMQ in Action. Excelente livro sobre conceitos de mensageria, JMS e integrações em geral.

Github

Se te interessar, baixe esse projeto no meu git. Até a próxima 😉 !

“Mas tu, ó SENHOR, me proteges como um escudo. Tu me dás a vitória e renovas a minha coragem.” Salmos 3:3

Maven usando repositório HTTP

Postado em

Muitas corporações bloqueiam via proxy endereços HTTPS, fazendo um base local temporária de certificados SSL. Para quem desenvolve Java dentro dessas empresas podem não conseguir usar o Maven, uma vez que o endereço de repositório padrão é SSL. O erro desse caso fica assim:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1]

Para contornar isso, é possível configurar o Maven para baixar as dependências em um repositório alternativo HTTP, sem SSL. Acrescente no seu pom a seguinte configuração e seja feliz:

Baixe esse projeto no meu git padrão. Até a próxima 🙂 !

“Guardo a tua palavra no meu coração para não pecar contra ti.” Salmos 119:11

Feedback Livro: Aplicações mobile híbridas com Cordova e PhoneGap

Postado em

Hoje eu terminei de ler o livro Aplicações mobile híbridas com Cordova e PhoneGap e gostaria de dar meu feedback: Achei o livro curto, bem resumido, mas muito esclarecedor. Livro indicado para quem deseja iniciar seus conhecimentos e a carreira a respeito de app mobile hibridas com Cordova e Ionic. Show de bola 😉 !

“Deus é o meu Salvador; eu confiarei nele e não terei medo. ” Isaías 12:2

Porque eu uso Groovy? # 2

Postado em

Estes dias me perguntaram o por que eu parei de escrever meus programas Java com a linguagem Java e passei a utilizar a linguagem alternativa de Java chamado de Groovy. São vários os motivos, e hoje quero falar de alguns.

Dont Repeat Yourself – DRY

DRY é uma abreviação para o inglês Don’t Repeat Yourself, “Não se Repita”. É o primeiro princípio do desenvolvimento de software mencionado por Andy Hunt e Dave Thomas no clássico livro O Programador Pragmático. O princípio basicamente declara que não se pode fazer coisas repetidas ou duplicadas ao longo do desenvolvimento de software. Isso ocasiona alta manutenção, aumenta a complexidade, reduz a qualidade da solução final e deixa a coisa extremamente chato e cansativo de fazer.

Linguagem Java é repleta de DRY

Se você ainda não reparou, a linguagem Java padrão esta repleta de DRY, obrigando o desenvolver que a usa todos dias fazer a mesma coisa de sempre. E depois de 12 anos fazendo, eu simplesmente canseiiiiiiiiiiiiiiiiiiiiii 😦 .

Vamos a fatos?

Segue abaixo um simples POJO escrito na linguagem Java:

Segue abaixo o mesmo pojo escrito em groovy:

Vejamos os Dry’s:

  1. Na linguagem java você é obrigado a importar pacotes básicos para outras classes como Date e BigDecimal, sendo que o único import padrão é o java.lang. No groovy não, pois por padrão o groovy define vários pacotes bases com importação automática, sendo estes já importados implicitamente java.math. e java.util.
  2. Na linguagem java você é obrigado a digitar ponto e virgula no final de cada instrução. No groovy não, ponto e virgula é obrigatório somente se você for colocar mais de uma instrução por linha.
  3. Na linguagem java você é obrigado a digitar private para declarar atributos privados. No groovy não, pois todos os atributos de uma classe são por padrão private. Você já parou para pensar nisso? Regra básica de encapsulamento OOP diz que todos atributo de uma classe deve ser privado, ou seja, 90% dos casos, mas a linguagem java usa como padrão default? Me perdoem a grosseria, mas é muita “bobeira” isso…
  4. Na linguagem java você é obrigado a digitar public para declarar a classe pública. No groovy não, pois todas as classes são por padrão publica, sendo que á maioria dos casos. Me perdoem novamente, mas é bobeira igual ao item 2…..
  5. Na linguagem java você é obrigado a criar manualmente os grupos de construtores que vc deseja usar para criar seu objeto. No groovy não, pois existe um recurso dinâmico chamado de “Named Parameter Constructors” que gera automaticamente e dinamicamente qualquer combinação de grupos de construtores na criação de objetos.
  6. Na linguagem java você é obrigado a digitar os get’s e set’s para expor os atributos. No groovy não, pois eles serão automaticamente e dinamicamente gerado para você.

Qual a diferença?

Parando por aqui, e pontuando somente estes 5 recursos de muitos outros existente no groovy, você já ficaria com o pojo em java com 49 linhas e o em groovy com apenas 7 linhas. Ou seja, 700% a mais de código!!!! Imaginando que faremos um sistema com 500 classes, multiplica ai amigo e veja quanto de DRY você vai perder o seu precioso tempo digitando nesse projeto.

Se liberte

Vamos a verdade? O que eu vou falar pode doer em muita gente mas é a mais pura verdade: a linguagem java é verbosa e improdutiva. Todos que começam na plataforma Java tem que aprende-la, mas depois de passar por essa fase inicial, você não é mais obrigado a usa-la. Se liberte! Seja feliz!

Dentro da plataforma Java (JVM) hoje nós temos a liberdade de usar centenas de linguagens de programação diferentes, a gosto de cada “freguês”. Veja aula grátis sobre linguagens na JVM.

Observação

Estou te dizendo para trocar de linguagem de programação e não de plataforma! Você continua usando a plataforma Java, JDK e todas as mesmas opções de sempre: Spring, JPA, Hibernate, JSF, IReport etc…! Só que ao invés de programar usando a “velhinha” linguagem Java padrão, você passa a usar Groovy 🙂 . Mas já vou te avisando que é um caminho sem volta kkkk 😀 , depois de que você aprender, vai ter raiva de não ter usado bem antes!

Gostaria de aprender Groovy?

Colocamos a disposição nosso Pacote com 2 cursos de Groovy básico + avançado com 10% de desconto para você aprender uma linguagem realmente moderna, dinâmica e produtiva.

Filho, preste atenção quando o SENHOR Deus o castiga e não se desanime quando ele o repreende. Porque o SENHOR corrige quem ele ama, assim como um pai corrige o filho a quem ele quer bem.” Provérbios 3:11-12

Novo Primefaces 6.1

Postado em Atualizado em

Voltando de férias já anunciando a nova versão 6.1-Final do PrimeFaces, a biblioteca de UI para JSF. No total, existem mais de 300 melhorias em comparação com a versão anterior, incluindo novos componentes, novos recursos importantes para DataTable, principais melhorias de acessibilidade e quantidade significativa de correções de defeitos. PrimeFaces tem 8 anos de idade ajudando desenvolvedores java na criação de front-end web, representando estabilidade e maturidade para criação de solução web com java. PDF Guia do Usuário do PrimeFaces é atualizado para 6.1 e disponível para download, disponível e disponível para download no maven central para toda a comunidade.

“Só eu conheço os planos que tenho para vocês: prosperidade e não desgraça e um futuro cheio de esperança. Sou eu, o SENHOR, quem está falando.” Jeremias 29:11

Férias em Abril

Postado em Atualizado em

Gostaria de avisar a todos que no mês de abril eu estarei de férias, cuidando da minha filha Rebeca que nasceu semana passada! Todas as atividades do blog e e-mail ficaram parados até dia 24/04. Deus abençoe e até lá!

“A­bençoou Deus o sétimo dia e o santificou, porque nele descansou de toda a obra que realizara na criação.” Gênesis 2:3