Bytecode Java

Introdução à arquitetura e design de software

Todo desenvolvedor Java logo aprende que o código-fonte Java é compilado e gera bytecodes que formam o executável Java. Mas o que são exatamente esses bytecodes e o que fazem já é um ponto que muitos desenvolvedores ignoram.

Quando trabalhamos com uma tecnologia é sempre útil entender melhor sua base, seus fundamentos. Com o Java, conhecer um pouco mais dos bytecodes pode ajudar em alguns momentos.

Por isso, segue abaixo uma explicação sobre o bytecode Java e exemplo comentado.

Continuar lendo

Resumo de estudo para certificação Java Business Component Developer 5 (SCBCD/OCPJBCD 5 – 1Z0-860)

Enterprise JavaBeans 3.0Em meus estudos para a certificação Java Business Component Developer (antiga SCBDC 5 na Sun e nova OCPJBCD 5 na Oracle), acabei criando um resumo a partir do meu livro guia de estudo Enterprise Java Beans 3.0 (Bill Burke, Richard Monson-Haefel) – 5a. edição.

A fim de me ajudar a revisar para o exame e pensando em disponibilizar este conteúdo para o público interessado, segue abaixo transcrito meu resumo. Bom proveito. 😉

Continuar lendo

JPA standalone (fora do servidor, container ou da IDE)

Neste post vou mostrar o exemplo mais básico de utilização de JPA, sem a utilização de qualquer servidor (de aplicação ou não) e sem os pulos do gato de uma IDE como o Eclipse.

Acredito que para qualquer iniciante no estudo de uma tecnologia é sempre bom ter contato com a tecnologia em seu formato mais cru, a fim de entender os cernes da questão e evitar as armadilhas da abstração no completo entendimento.

Para este post pegue apenas seu Java SE e vamos brincar.

Continuar lendo

Exemplo Spring JMS: envio de e-mail assíncrono

Ao desenvolver nossos sistemas, nos deparamos as vezes com um problema: alguma funcionalidade é muito pesada em termos de processamento e não precisa necessariamente ser feita de forma sincronizada com o resto da lógica de negócio, por exemplo, envio de e-mails, envio de SMS, etc.

Nestes casos, para diminuir o tempo que o usuário espera pela resposta do sistema, é conveniente tornar assíncrono o processamento destas tarefas em relação ao resto da lógica. Uma estratégia comumente usada é utilizar filas de mensagens. Nestes casos a lógica principal de negócio em vez de chamar a rotina que envia o e-mail, só chama uma rotina que insere uma mensagem na fila específica de envio de e-mails. Enquanto isso, temos uma rotina “consumidora” desta fila, desatrealada da lógica principal, que “consumirá” as mensagens, tratando-as de forma adequada conforme sua disponibilidade, de forma assíncrona ao resto da aplicação.

Spring provê um framework que abstrai e simplifica o uso da API JMS (Java Message Service). Particularmente para este post, utilizaremos este mecanismo do Spring em conjunto com o suporte do Spring para POJOs dirigidos a mensagens (um modo de receber mensagens que se parece com beans orientado a mensagens Message-Driven BeansMDBs da especificação EJB). mas, que ao contrário do MDB nos permite utilizar um servidor web comum, como Tomcat, por exemplo.

Continuar lendo

“Sanitizando” strings para URLs seguras

Neste post estou disponibilizando uma classe simples de referência para “sanitizarStrings a fim de torná-las url safe, por exemplo. Esta característica é desejável em URLs Rewrite, por exemplo, onde queremos que nosso artigo “Caminhão na contra-mão!” seja apresentado na URL como algo assim:

http://www.nessauepapost.com.br/artigo/7/caminhao-na-contra-mao

As características desejáveis neste caso são:

1– Somente letras minúsculas

2– Letras acentuadas substituídas pela mesma letra sem acento

3espaços substituídos por hífen “-”

4caracteres especiais removidos

Continuar lendo

Técnica mock em testes unitários

Uma das áreas mais subestimadas do desenvolvimento de software é, sem dúvida, a área de testes. Desde os primórdios do desenvolvimento de sistemas até os dias de hoje, testes são considerados dispendiosos e algo a ser feito depois (o que frequentemente é postergado até o ponto em que acabam não sendo feitos).

Desenvolvedores tendem a não usar testes, por acharem que muito tempo é gasto e que o custo benefício não compensa. Mas, conforme cada vez mais evoluem as técnicas e teorias por trás do desenvolvimento de software, mais e mais estudos confirmam que sim, vale a pena perder o tempo dispensado aos testes e vão além, sugerem que o desenvolvimento deve ser invertido, primeiro criar os testes e depois implementar o necessário para fazer o teste passar (esse método de desenvolvimento é conhecido como TDD = Test Driven Design).

Realmente o TDD é algo interessante e dá pano pra manga pra muito texto, que vou deixar para o futuro.

O que realmente queria falar neste post, é sobre a técnica de criar objetos “falsos” (objetos Mock) com comportamento igual aos objetos reais do seu sistema e que sejam dependências para seus testes, além de mostrar sua utilidade e aplicabilidade em testes funcionais, introduzindo um framework que auxilia na criação destes objetos Mock.

Continuar lendo