Configurando o Wildfly 10 no Eclipse Mars

Neste tutorial, vou assumir que o servidor de aplicação já foi descompactado em algum diretório da sua máquina.

O Wildfly 10 está suportado no Eclipse Luna através do pacote JBossAS Tools.

Leia mais

Configurando o Wildfly 8 no Eclipse Kepler

Neste tutorial, vou assumir que o servidor de aplicação já foi descompactado em algum diretório da sua máquina.

O Wildfly 8 está suportado no Eclipse Kepler através do pacote JBossAS Tools.

Leia mais

Java é mais rápido que outras linguagens para aplicações server-side web

Em novembro/2013 foi publicada uma notícia na InfoWorld a respeito do desempenho de frameworks e ambientes para aplicações server-side web. A grande surpresa foi que o Java despontou como a melhor performance entre vários produtos testados. As simulações envolveram serialização JSON, acesso a banco de dados, composição de templates no servidor, entre outros. Os procedimentos foram divididos em etapas e na sétima os ambientes envolvendo Grizzly, Gemini, Undertow (o novo servidor web do Wildfly) e Vertx foram os grandes destaques.

Particularmente acho isto muito bom, porque ainda existe um senso comum que o Java tem performance ruim.

Para ver os testes realizados, clique aqui.

 

Configurando o Glassfish 4 no Eclipse Kepler

Neste tutorial, vou assumir que o servidor de aplicação já foi descompactado em algum diretório da sua máquina. Se você ainda não fez a instalação, consulte a seção Installing Glassfish Server from a Zip File do documento oficial Installation Guide, encontrado no link https://glassfish.java.net/docs/4.0/installation-guide.pdf.

O Glassfish 4 está suportado no Eclipse Kepler através do pacote Glassfish Tools.

Leia mais

Você é realmente um bom desenvolvedor Java?

Para ser um bom desenvolvedor Java é preciso, acima de tudo, ter experiência. Em geral, os anos de mercado levam a boas práticas que fazem com que o código seja mais limpo, fácil de dar manutenção e mais simples de entender. No entanto, nem sempre isso é verdade. Estou acostumado a ver código de pessoas com muito tempo de programação que não possui uma boa estruturação e com erros básicos como, por exemplo, a criação de classes com baixa coesão.

Nesse post mostro algumas técnicas que você deve aprender (e algumas falhas que precisa evitar) para que suas aplicações sigam bons princípios e aproveitem ao máximo os recursos nativos que o Java pode te oferecer (não abordo recursos de frameworks ou bibliotecas). Todas as dicas estão relacionados a aspectos técnicos da linguagem, portanto não me prendi a outros fatores, como uso de recursos de IDE’s ou metodologias de desenvolvimento. Vamos a elas:

  1. Strings

O erro mais comum cometido por programadores que estão começando é a criação desenfreada de Strings. Em Java o objeto String é imutável, o que significa que uma vez criado, não pode ser modificado. Portanto, não cometa erros como o de abaixo, em que vários objetos são criados para gerar uma grande String com letras de ‘a’ a ‘j’, consumindo recursos de memória que poderiam estar livres. Observação: a partir do Java 1.6, a concatenação de Strings passou a ser feita através de StringBuilder de forma automática pelo Java, porém um novo objeto StringBuilder é criado e o método append() é chamado a cada concatenação, levando também a um grande desperdício de memória. Assim, use sempre StringBuffer ou StringBuilder quando for efetuar concatenações de Strings.

String todasAsLetras = "a";

// a cada iteração, um novo objeto String é criado
for(char letraAtual='b'; letraAtual<='j'; letraAtual++) {
   todasAsLetras = todasAsLetras + "-" + letraAtual;
}

System.out.println(todasAsLetras); // imprime a-b-c-d-e-f-g-h-i-j

Solução: use a classe StringBuffer ou StringBuilder.

  1. Operadores

A utilização de operador ternário deixa seu código menor e mais legível. Exemplo:

Leia mais

Conversão de números entre bases (binário, decimal, octal, hexadecimal)

Há alguns dias recebi e-mail de uma pessoa com um pedido para ajudar na conversão de números entre bases utilizando Java. Claro que não poderia ser utilizada nenhuma classe já existente na JVM, pois a ideia era criar um código que efetuasse a transformação de forma manual. Assim, até como uma forma de exercício mental, elaborei as conversões abaixo.

Atenção: você encontrará alguns trechos de código repetido, mas isso acontece porque quis fazer com que cada método (com algumas exceções) pudesse ser executado de forma atômica.

Decimal

Decimal para Binário

/**
* Converte decimal para binário. A regra é ficar dividindo o valor por 2, pegar o resto de cada divisão e inserir o valor da direita para a esquerda na String de
* retorno. O algoritmo é executado até que o valor que foi sucessivamente dividido se torne 0. Obs.: assume que o valor passado é inteiro positivo.
* Exemplo: 13
* 13/2 = 6 -> resto 1 -> Resultado: 1
* 6/2 = 3  -> resto 0 -> Resultado: 01
* 3/2 = 1  -> resto 1 -> Resultado: 101
* 1/2 = 0  -> resto 1 -> Resultado: 1101
*
* Resultado: 1101
*
* @param valor número decimal a ser convertido
* @return String contendo o valor em binário
*/
public static String converteDecimalParaBinario(int valor) {
   int resto = -1;
   StringBuilder sb = new StringBuilder();

   if (valor == 0) {
      return "0";
   }

   // enquanto o resultado da divisão por 2 for maior que 0 adiciona o resto ao início da String de retorno
   while (valor > 0) {
      resto = valor % 2;
      valor = valor / 2;
      sb.insert(0, resto);
   }

   return sb.toString();
}

Leia mais

Bibliotecas de Interface Rica no JSF 2

Aprenda um pouco do que é RIA (Rich Internet Application) e veja um comparativo entre as três soluções de bibliotecas de interface rica para JSF: PrimeFaces, RichFaces e ICEfaces.

Essa palestra foi apresentada no CCT de maio do CEJUG e teve como base um artigo de minha autoria, intitulado Bibliotecas de Interface Rica no JSF 2, que saiu na edição 114 da Revista Java Magazine.