Happy New Year
Publicado por Wellington em Desenvolvimento, Java, Operando Datas em 29 de dezembro de 2011
Após muito tempo sem postar nada, consegui um breve momento para postar meus desejos de feliz ano-novo!
import java.util.Calendar;
public class HappyNewYear {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
int field = calendar.get(Calendar.YEAR) + 1;
System.out.printf("Happy New Year in %d\n", field);
}
}
Muito sucesso a todos neste ano novo que se segue, seja com a continuidade dos projetos que estamos tocando quanto aos novos projetos que planejamos começar (e isso vale tanto pessoal quanto profissionalmente).
Este post foi inspirado por este do VidaDeProgramador: http://vidadeprogramador.com.br/2011/12/22/previsoes-para-2012/
Por que é preferível utilizar BigDecimal a double.
Publicado por Wellington em Basicos, Desenvolvimento em 14 de junho de 2011
Para descontrair um pouco, vou colocar aqui um artigo onde descrevo minha predileção ao uso do BigDecimal ao uso da primitiva double ou de seu wrapper Double.
O texto é baseado num post que coloquei no forum da equipe que trabalho numa resposta que postei no GUJ.
JVisualVM – Parte 01
Publicado por Wellington em Avançado, Tecnologia em 13 de junho de 2011
Primeiramente, precisamos que esteja com o ambiente preparado.
Obs.: Para montar este tutorial, estou utilizando o sistema operacional Windows. Caso você utiliza-se de linux, pequenas diferenças devem ocorrer, mas você usa linux, logo, não terá dificuldades em adaptar-se.
Caso já possua a JDK 6 instalada, poderá encontrar uma versão da JVisualVM no caminho:
[caminho_de_instalacao_JDK]\bin\jvisualvm.exe
Não há versões da JVisualVM em versões anteriores do Java.
Caso prefira, também pode baixar a JVisualVM da internet através do site: http://visualvm.java.net/
A descrição que encontra-se em http://download.oracle.com/javase/6/docs/technotes/tools/share/jvisualvm.html diz bem o que a ferramenta faz:
“Java VisualVM is an intuitive graphical user interface that provides detailed information about Java technology-based applications (Java applications) while they are running on a given Java Virtual Machine (JVM*). The name Java VisualVM comes from the fact that Java VisualVM provides information about the JVM software visually.
Java VisualVM combines several monitoring, troubleshooting, and profiling utilities into a single tool. For example, most of the functionality offered by the standalone tools jmap, jinfo, jstat and jstack have been integrated into Java VisualVM. Other functionalities, such as some of those offered by the JConsole tool, can be added as optional plug-ins.”
Ok.
Feitas as devidas apresentações, utilizarei a VisualVM que encontra-se na própria JDK 6.
Leia o resto deste post »
Futuras publicações
Publicado por Wellington em Desenvolvimento, Java em 13 de junho de 2011
Pretendo começar uma série de artigos sobre assuntos que acho interessante e que sempre vejo alguém com dificuldade.
Minhas intenções não são esgotar esses assuntos, mas partilhar minhas experiências.
Assim que for tratando os assuntos, irei “linká-los” aqui.
- Profiling com JVisualVM – Parte 01
- Usando Eclipse
- Reflection
A ordem dos artigos será, quase certamente, aleatória e possivelmente serão abordados em mais de um post.
Também pretendo recomeçar um antigo projeto meu que sempre recoloco na geladeira…
Mas issó é assunto para um post futuro (primeiro, quero tirá-lo da geladeira, depois sim, comentarei mais sobre o mesmo).
Falando sobre estruturas de repetição (Loop)
Publicado por Wellington em Basicos, Desenvolvimento em 10 de junho de 2011
Vi certa vez uma discussão sobre os tipos de loops (estruturas de repetição) do Java:
for, while e do-while.
O que tipicamente chamamos de foreach é um caso especial do for, que não tratarei neste post.
Por definição, todos são loops que finalizam sob uma certa condição, ou motivados por um break.
Mas há nuances que as diferenciam:
Algumas pré-definições são importantes:
- algoASerExecutadoAntesDeTudo: É alguma instrução que deve ocorrer antes da primeira validação da condição que indica se uma iteração ocorrerá ou não..
- condicaoDePermanencia: Erroneamente chamada de condição de saída (IMHO)¹, é a condição que indica se haverá iteração dentro do loop.
- iteracao: Alguma instrução que será repetida enquando a condicaoDePermanencia indicar que deve ser repetida.
- algoASerExecutadoAoFimDaIteracao: Ao final de cada iteracao e antes de uma nova validação da condicaoDePermanencia, as instruções contidas aqui serão executadas.
Destes itens, o único que eu diria ser obrigatório é a condicaoDePermanencia.
Todos os demais são opcionais E podem ser totalmente suprimidos.
FOR
Comumente associado a uma sequência definida de repetições, com um ponto de início indicando uma variável de controle (algoASerExecutadoAntesDeTudo),
uma condição comumente validada com a variável de controle (condicaoDePermanencia) e uma alteração da variável de controle (algoASerExecutadoAoFimDaIteracao).
Definem a execução das iterações.
Entretanto, a variável de controle pode ser suprimida, como quando utlizamos Iterator que tem esse controle internamente (mas ,ainda assim, somos obrigados a alterar a mesma com um iterator.next()).
A condicaoDePermanencia é verificada e pode impedir que a primeira iteração ocorra, finalizando o loop.
//Sintaxe do for
for(algoASerExecutadoAntesDeTudo; condicaoDePermanencia; algoASerExecutadoAoFimDaIteracao) {
iteracao
}
WHILE
É um loop clássico a ser executado por N motivos. Pode substituir um loop for em qualquer momento, mas sua leitura torna-se um pouco mais lenta, logo é preferível para casos menos específicos.
algoASerExecutadoAoFimDaIteracao é, geralmente suprimido ou está totalmente contido dentro da iteracao.
A condicaoDePermanencia é verificada e pode impedir que a primeira iteração ocorra, finalizando o loop.
//Sintaxe do while
algoASerExecutadoAntesDeTudo
while(condicaoDePermanencia) {
iteracao
algoASerExecutadoAoFimDaIteracao
}
DO-WHILE
É um tipo muito específico de loop, onde a primeira ocorrência SEMPRE ocorrerá, independentemente de qualquer coisa.
Apenas ao fim da primeira iteração que a condicaoDePermanencia é testada.
Porém, da mesma forma que o while, algoASerExecutadoAoFimDaIteracao é, geralmente suprimido ou está totalmente contido dentro da iteracao.
//Sintaxe do do-while
algoASerExecutadoAntesDeTudo
do {
iteracao
algoASerExecutadoAoFimDaIteracao
}while(condicaoDePermanencia);
Olhando desta maneira vemos que qualquer loop for pode ser traduzido para um loop while e vice-versa. A única alteração se dá pela clareza da leitura do código.
Já o do-while possui uma pequena diferença em relação aos outros dois. A primeira iteração SEMPRE irá ocorrer, enquanto que, para o while e o for, a condicaoDePermanencia será executada antes da primeira iteração e poderá impedir que qualquer iteração ocorra.
¹ Eu chamo de condição de permanência, pois para ser válida precisa ter um valor verdadeiro. Ou seja, só vai terminar o ciclo de iterações quando a condição for falsa.