Archive

Posts Tagged ‘java’

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.

 

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

Como adicionar a classe String como opção de tipo de atributo no Enterprise Architect

Quem trabalha com o Enterprise Architect sabe que o produto não mostra a opção String ao especificar o tipo do atributo de uma classe, como a imagem abaixo mostra.

Tipos de Atributos para Projeto Java sem a opção String

Tipos de Atributos para Projeto Java sem a opção String

A solução é adicionar a opção ao projeto. O procedimento é muito simples, conforme mostrado abaixo:

Leia mais

Artigo: Seria a Oracle o novo Darth Vader do mundo da tecnologia?

No site do IDG Now! tem um artigo muito legal sobre a posição atual da Oracle no cenário da tecnologia.

Clique aqui para ver.

Categorias:tecnologia Tags:, ,

50 dicas práticas para o exame OCJP Java 6

Motivado por ter passado no exame da SCJP recentemente, publico abaixo 50 dicas práticas para o exame da versão 6. Elas foram retiradas e adaptadas do livro  Certificação SUN para Programador Java 6, de Kathy Sierra e Bert Bates, adicionadas em muitos casos de exemplos e comentários úteis.

  1. Saiba tudo sobre controle de acesso para o exame. Haverá uma boa quantidade de perguntas para as quais você deverá usar o seu conhecimento sobre o assunto. Quando vir uma questão com lógica complexa, certifique-se de olhar os modificadores de acesso primeiro;
  2. Procure questões com uma declaração de método que termine com ponto-e-vírgula em vez de chaves. Se o método estiver em uma classe – e não em uma interface -, então tanto o método como a classe devem ser marcados como abstract;
  3. Quando pensar em acesso padrão (default), pense em restrições de pacote, sem exceções. Mas quando pensar em protected, pense em pacote + filhos;
  4. Procure por classes concretas que não forneçam implementações para métodos abstratos da superclasse;
  5. Enums fora de uma classe só podem ser declarados com acesso public ou default, assim como uma classe não interna;
  6. As chamadas de métodos polimórficos se aplicam somente a métodos de instâncias;
  7. Procure classes que afirmam implementar uma interface, mas não fornecem as implementações de método corretas. A menos que a classe de implementação seja abstract, ela terá que fornecer implementações de todos os métodos definidos na interface;
  8. Lembre-se: um método static de uma classe não pode acessar um membro – método ou variável – não estático (de instância) de sua própria classe;
  9. Procure perguntas que usem números onde os booleanos seriam obrigatórios. Você pode ver uma avaliação de instrução if que use um número, como na linha a seguir:
int x = 1;
if (x) { } // Erro do compilador

Leia mais

Como forçar download de arquivo em JSF / Struts

Estou implementando uma aplicação em JSF que gera um arquivo texto em uma pasta da aplicação. Esse arquivo deve ser baixado para a máquina do usuário para que ele faça sua importação no servidor.

Para forçar o usuário a baixar o arquivo – e não deixar que o conteúdo dele aparecesse na tela do browser – desenvolvi uma solução muito simples que gira em torno de uma única JSP. O legal é que ela serve para JSF, Struts e Servlets (acredito que com o Seam também funcione), a extensão do arquivo a ser baixado pode ser qualquer uma e ele pode inclusive estar em qualquer pasta do servidor (dentro ou não do contexto web).

O código da página JSP downloadArquivo.jsp que efetuará todo o processo de download está logo abaixo:

Leia mais

Tutorial: Técnicas de Geração de Relatórios com JasperReports / iReport

Uma abordagem utilizando a ferramenta de design iReport

Por diversas vezes tenho me deparado com pessoas no CEJUG e em diversos fóruns Java com dificuldades na geração de relatórios com o JasperReports ou na utilização do iReport como ferramenta visual de diagramação dos documentos.

Foi então que tive a idéia de disponibilizar esse tutorial no meu blog que mostra como criar relatórios no iReport através de três técnicas: passando uma conexão com o banco de dados, passando um ResultSet (encapsulado na classe JRResultSetDataSource) e passando uma lista de objetos (encapsulada na classe JRBeanCollectionDataSource).

Além da demostração de como gerar os relatórios, mostro também o código Java correspondente de cada método, dou algumas dicas para modificar os textFields dos relatórios e outras de utilização do próprio iReport.

Resolvi também disponibilizar a aplicação que criei em JSF no formato zip e war. Bom proveito a todos.

Clique aqui para baixar o PDF do tutorial.

Clique aqui para baixar o projeto do Eclipse compactado (zip).
Clique aqui para baixar o projeto no formato war.