abr

21

Serialização – Transformando Objetos em Bytes

By Felipe Saab

Serialização… funcionalidade bem interesante do Java (e muitas outras linguagens).

Afinal, o que é a serialização?

Serialização é a técnica que permite transformar objetos em bytes, e uma vez que eles são bytes, eles podem ser salvos em disco ou enviados através de um stream (via HTTP, via socket, entre outros).

Vou exemplificar apenas como salvar e recuperar os objetos no disco, uma vez que eu não estou muito acostumado com os sockets e enviar requisições HTTP iria extender muito o tópico.

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 »

fev

18

Trabalhando com Datas… chega de trauma!

By Felipe Saab

Quem nunca teve que manipular datas em algum programa não é um programador poxa… O pior caso na minha opinião são aqueles bancos de dados desgraçados que não aceitam a data no formato padrão. Cá entre nós, é uma encheção de saco ficar invertendo a data. Vamos então a algumas dicas para não haver mais traumas quando o assunto em questão são as datas:

Read more »

fev

8

Reflexão Computacional – Exemplo prático

By Felipe Saab

E ae galera,
Primeiro de tudo, obrigado pelas visitas… estava vendo as estatísticas do site e todo dia tem alguém dando uma olhada no blog. Obrigado mesmo. :D

No último post eu mostrei uma técnica bem interessante da programação dinâmica: a reflexão, através da qual agente consegue perguntar pra um objeto qualquer quais são suas variáveis de instância (inclusive os seus valores) e seus métodos.

Beleza, daí um monte de gente me perguntou: “Pra que diabos eu preciso saber disso?” ou então “Quando eu vou usar?” entre outras… Para exemplificar o uso da reflexão vamos criar uma pequena aplicação. Nada muito complicado… uma agenda de contatos. OK, só mais um detalhe: não vou explicar nada sobre a conexão com o banco de dados, ou tratamento de erros ou outras coisas que vou utilizar no tutorial, o foco vai ser a reflexão. Qualquer dúvida é só deixar um comentário que a gente resolve.

Read more »

jan

23

Java e seus espelhos: Reflexão Computacional

By Felipe Saab

Hoje vou abordar um tema bem interessante: Reflexão Computacional e como o Java trata tal assunto.

Quem se diz “programador” e nunca ouviu falar disso tem que rever seus conceitos. Existe toda uma filosofia por trás do conceito de Reflexão Computacional (ou apenas reflexão), mas eu não vou falar muito sobre isso (até porque eu não sei muita coisa sobre a teoria… :D ), vamos mais a prática.

Bom, vamos viajar um pouquinho: imagine que vc tem a missão de construir um método que receba um objeto que você não sabe qual é, e tenha que aprender a usá-lo em tempo de execução, ou seja, descobrir quais métodos esse objeto possui, quais variáveis de instância e etc (CALMA! Eu sei que parece besteira e que vc deve estar pensando: “Onde diabos eu vou usar um troço desses?!?” mas CALMA, vou dar uns exemplos mais adiante e em outros posts).

Como Java é uma linguagem quase completamente orientada a objetos, presume-se que TUDO é um objeto: um método é representado por um objeto da classe java.lang.reflect.Method, toda variável de instância também é representada um objeto da classe java.lang.reflect.Field e uma classe (qualquer uma delas, seja String, Integer, Float, ou aquela que vc escreveu) é representado por um objeto genérico: o objeto Class<?>.

Read more »