fev

28

Spring Framework Parte 7 -> Agendamento de Tarefas

By Felipe Saab

Algo um tanto quanto comum em aplicações de médio / grande porte é o agendamento de tarefas.

Exemplos: toda madrugada atualizar alguns registros que dependam de data (ex: contratos atrasados), todos os dias às 20:00h enviar e-mail para os clientes que façam aniversários no dia, todo domingo das 18:00h até  23:59h atualizar o data warehouse (DW) da empresa com as vendas da semana.

Surgem muitas e muitas idéias e possibilidades quando pensamos no agendamento de tarefas. Legal, na visão do cliente e do seu gerente é uma grande maravilha (de fato, realmente é) mas ai chega um requisito na tua mesa te falando pra magicamente fazer isso “pra ontem”.

E agora? Agora o Java Simples está aqui pra te ajudar! :D

Vamos criar um projeto utilizando o agendamento de tarefas provido pelo Spring pois é simples de usar e poderoso o suficiente para resolver a maioria das necessidades quando o assunto é agendamento.

Por que não utilizar o Quartz?

Pois  é uma ferramenta incrivelmente robusta que provê funcionalidades como suporte para clusterização e transações JTA. Na boa, na maioria dos casos o Quartz é um ferrari pra comprar pão na esquina – como dizia uma professora que tive.

Vamos manter as coisas simples até que seja realmente necessário complicá-las!

* Mas eu confesso, a imagem do post é do site do Quartz… hehehe :P

Read more »

abr

22

Java + FLEX Parte 1 -> Integrando Java e FLEX

By Felipe Saab

Hoje iremos abordar uma integração (que eu particularmente acho) fantástica: Java e FLEX (cuja versão mais atual se chama Flash Builder 4).

A primeira grande (super, ultra, …) vantagem que me vem na cabeça quando falo deste assunto é a facilidade para criar belas interfaces. Eu sou uma negação quando o assunto é criar interfaces, design me dá arrepios…

Outro ponto que é um grande vantagem é que toda a interface roda em cima do Flash, ou seja, basta ter o flash instalado no navegador e é certeza que o programa vai abrir exatamente do jeito que você o projetou! Não dá pau de navegador pra navegador!!!! Quem meche com CSS sabe do que eu estou falando, tua página está perfeita no Firefox e quando abre ela no IE dá até medo. Hahahaha quem nunca passou por isso que atire a primeira pedra.

Enfim, veremos como é possível ter uma interface fácil de desenvolver e ao mesmo tempo amigável para o usuário final com um backend poderosíssimo rodando o nosso bom e (não tão) velho Java e todos os frameworks que estamos acostumados a usar, como Spring e Hibernate.

Read more »

set

22

Spring Framework Parte 4 -> Integração com o Hibernate

By Felipe Saab

Antes de começarmos mais um post da série de tutoriais sobre o Spring Framework eu sugiro a leitura dos posts anteirores (caso você ainda não tenha conhecimento dos assuntos abordados):

Assumindo então que agora você já sabe sobre o Spring, vamos ver como ele facilita o uso do framework de mapeamento objeto-relacional Hibernate (versão 3.x).

OBS: Irei comentar detalhadamente apenas coisas relacionadas ao Spring, ou seja, espero que você já possua o conhecimento necessário do Hibernate.

Apenas para lembrarmos como o Spring tenta padronizar o acesso a dados em uma base de dados vamos dar uma olhada na imagem do post anterior (retirada do livro Spring in Action 2, Manning 2008):

Interpretando a figura a gente consegue chegar em algo assim: o nosso objeto responsável pelas operações de manipulação de dados irá utilizar um template (fornecido pelo Spring) que saiba interagir com o Hibernate (que conste no classpath e cuja versão seja 3.x) e que irá utilizar um DAO que saiba se comunicar com a base de dados (um data source).
Read more »

set

2

Spring Framework Parte 3 -> Java Database Connectivity (JDBC)

By Felipe Saab

Bem vindo leitor a mais um post da série Spring Framework.

Caso você ainda não leu os posts anteriores, por favor dê um pulinho bem rápido neles:

Vamos ao nosso próximo assunto então: JDBC e como o Spring facilita esse cara pra gente!

Tirando essa imagem do livro Spring in Action 2 (Manning, 2008) nós já conseguimos ver bem por cima como que o Spring pretende acessar de maneira padronizada a base de dados (Hitting the database) através de um objeto de acesso aos dados (DAO), um template (provido pelo próprio Spring) e caso nós quiséssemos, o Spring também oferece suporte padrão para alguns frameworks de persistência (será um dos próximos artigos desta série).

Tudo muito legal, muito bonito! Vamos tentar seguir este modelinho porque ele é bem bonitinho e vai nos ajudar um pouco. Apenas avisando que o jeito que descreverei neste tutorial não é o único jeito de acessar os dados através do seu driver JDBC, porém é um jeito que eu achei bem interessante e que vale a pena todos sabermos um pouquinho… =]
Read more »

ago

9

Spring Framework Parte 1 -> Dependency Injection

By Felipe Saab

Quem é dessa área e nunca ouviu falar de Spring Framework por favor levante a mão………….. Ótimo, todo mundo pelo menos já ouviu falar desse tal de Spring.

Durante esta série de tutoriais eu vou demonstrar o que é, pra que server e como vc pode utilizar o Spring para facilitar seus projetos.

Primeiramente, o que é esse tal de Spring afinal de contas? Spring é um framework que propicia um container para sua aplicação, ou seja, sua aplicação roda em cima do container do Spring. Tal container provê principalmente a Injeção de Dependência (ou Inversão de Controle, como era conhecido anteriormente) e a Programação Orientada a Aspectos.

Nesta primeira parte eu vou falar sobre o padrão Injeção de Dependência e os benefícios que ele provê. Vamos lá então:

Read more »

jun

25

Death to DefaultTableModel! AbstractTableModel Rulez!

By Felipe Saab

Antes que alguém venha dizer: ‘Olha o título, esse cara num sabe nada!’ ou ‘DefaultTableModel extends AbstractTableModel!! Asshole!!!’ eu já vou dizendo: Eu sei que DefaultTableModel herda de AbstractTableModel, a ideia do título é abandonar a DefaultTableModel e criar suas próprias classes utilizando os métodos da AbstractTableModel do jeito que nos servir melhor.

Dito isso, vamos  ao assunto de hoje: ‘DefaultTableModel e o porque de não utilizá-la’.

Quem já programou utilizando a API Swing e nunca utilizou a JTable que atire a primeira pedra.

Agora, quem já usou JTable e nunca utilizou a DefaultTableModel pode atirar pedras a vontade!

Aqui no blog mesmo… Eu já utilizei DefaultTabelModel em alguns posts. Mas pois bem, vamos abolir essa má prática. Seguem alguns motivos do porque não devemos utilizar a DefaultTableModel:

1. É mais difícil que escrever seu próprio TableModel;
2. É mais lento (usa classes sincronizadas);
3. Ocupa mais espaço em memória (duplica seus dados);
4. Deixa o código mais confuso e difícil de manter;
5. Usa casts inseguros;
6. Força que você tenha que exibir informações desnecessárias (como o ID) na tabela, ou controlar o ID numa lista separada;
7. Faz a sua mulher te deixar, o leite da sua geladeira azedar, e pessoas apontarem o dedo para você na rua.

Motivos muito bem explicados pelo ViniGodoy neste post do GUJ.

Mas se a DefaultTableModel é tão ruim assim, o que devemos fazer? Tudo se resume a uma classe: AbstractTableModel.

Read more »

jun

19

Web Services de um jeito bem simples

By Felipe Saab

Web Services (Serviços Web) são softwares que ficam esperando requisições de outros softwares. Uma vez que essas requisições são recebidas, é identificado o serviço que está sendo requisitado, o serviço é executado e finalmente a resposta é devolvida para quem pediu.

Em um resumo bem grosso, isso é um web service. Um programa que executa um método e devolve a resposta pra outro programa que pediu.

Por que eles são tão famosos? Uma das vantagens é a independência de linguagem, ou seja, um web service implementado em Java pode muito bem ser consumido (termo comum quando se fala em web services, equivalente a “usar”) por um outro software implementado em C# ou Python ou qualquer outra linguagem, pois o XML é adotado para garantir a comunicação padronizada.

Existem alguns tipos diferentes de web services onde, dentre eles, os que utilizam SOAP/ WSDL e os baseados no modelo arquitetural REST são os mais conhecidos. Neste post eu irei explicar como criar e consumir web services que utilizam SOAP e WSDL, e irei assumir que você já tenha pelo menos uma ideia do que estas siglas significam.

Eu poderia escrever uns dois ou três posts só sobre a teoria e aplicações, mas ficaria meio chato… Como o legal é a prática, vamos imaginar uma situação problema e criar um web service para resolver esse problema.

Read more »

abr

2

Annotations: O que é, pra que serve?

By Felipe Saab

Annotations… recurso interessante.

Sempre tive a curiosidade de saber como funcionavam, então fui perguntar pro Google. :D
Pretendo demonstrar aqui o que eu aprendi nas minhas pesquisas.

Annotations são… advinhem… anotações! É um jeito que você tem de fazer alguma marcação em um atributo, método, classe, entre outros.

Elas sempre devem ser digitadas antes do objeto que você queira anotar (método, atributo…) e o nome das anotações são sempre precedidos de @ (arroba). Ex:

@MinhaAnotacao
class MinhaClasse{
}


Até ai tudo bem, mas você deve estar se perguntando: “Pra que diabos eu vou usar isso? Pra que ficar enfeitando meu código?”. Calma. Tudo tem seu propósito.

Read more »

mar

20

Internacionalização – Um software, vários idiomas!

By Felipe Saab

Tudo bem, eu admito. Esse nome é muito grande e chato de pronunciar (porém muito útil!).

Imagine que você desenvolveu um super software (em Java é claro…) para atender um determinado nicho de mercado, levou 1 ano da sua vida para fazer isso. Quando você começou a vendê-lo foi o maior sucesso, seus clientes falaram bem do seu software pra todo mundo. Cada dia apareciam mais clientes, maravilha!

Até que um certo dia um americano ouviu falar do seu software e diz que paga um preço 5x maior do que você está acostumado a cobrar, porém o software tem que ser totalmente em Inglês…

E agora José???? Vai copiar o projeto e sair mudando todas as strings? Boa sorte…

Se tivesse pensado nisso antes, você teria planejado melhor o seu software e teria utilizado as facilidades que o Java oferece para Internacionalizar seu programa.

Mais chega de história, vamos a algo um pouco mais prático. Vamos criar uma pequena aplicação apenas para demonstrar como é fácil e útil internacionalizar seu programa em Java.

Read more »

mar

14

Robot ? O Que é isso?

By Felipe Saab

Tempo é um troço foda… Só falta… nunca tem sobrando…
Depois de muito tempo sem um post, aqui estamos nós.

Hoje a gente vai desvendar a classe Robot, muito útil para testes automáticos, criação de bots e outros.

Em resumo, a classe Robot simula eventos do teclado, mouse e outros.

É tudo muito fácil, vamos ao código:

Read more »