Pular para o conteúdo principal

Postagens

Mostrando postagens com o rótulo Eder

NIO.2 do Java 7: uma nova API do Java para file system

Uma das novidades mais importantes e aguardadas do Java 7 foi a NIO.2, a nova API para a manipulação I/O com Java. A NIO.2, também conhecida como JSR 203 , disponibiliza um conjunto de novos componentes, projetados para melhorar caracterísiticas de I/O com Java como por exemplo: uma nova API para o acesso e manipulação de conteúdo do file system (sistema de arquivos); outra API para operações assíncronas com I/O; e a atualização da API para comunicação via sockets ( channel sockets ).   O Java, antes da versão 7, tratava a manipulação do sistema de arquivos de forma primitiva. O programador tinha de trabalhar com a classe File para representar arquivos e/ou diretórios, com um número escasso de funcionalidades. Uma operação simples como copiar um arquivo demandava um código relativamente grande. Outras funcionalidades triviais, como por exemplo o uso de links simbólicos, não eram suportadas. Esses são alguns dos motivos para justificar o uso de bibliotecas terceiras...

Type Inference no Java 7, generics com código compacto

O suporte a tipos genéricos, bastante conhecido pela comunidade como Generics , foi uma das mudanças mais importantes do Java, realizada  na versão 5 da linguagem. Com essa funcionalidade os programadores Java passaram a contar com a checagem do tipo dos objetos realizada pelo compilador em estruturas flexíveis. No framework Collections do Java, por exemplo, faz muito sentido usar tipos genéricos para determinar qual tipo de objetos serão armazenados por uma coleção. Delegando ao compilador a validação desse código, sem a necessidade do programador escrever código para validação ( instanceof ) e conversão ( casting ) dos tipos. Por outro lado, a utilização de tipos genéricos pode aumentar a complexidade e verbosidade do código! Nesse post vou demostrar as mudanças do Java 7, como a Inferência de Tipos ( type inference ) e o operador diamond , para deixar o código de tipos genéricos um pouco mais limpo. Criar Coleções O código a seguir demonstra como relacionar uma...

O novo try no Java 7, por uma linguagem mais simples

O Java 7, lançado em Julho, além de reviver mudanças no Java também trouxe novas características afim de tornar a linguagem um pouco mais simples e menos verbosa, ou seja, as instruções podem ser escritas com um volume menor de código. Nós da Globalcode adoramos novidades, ainda mais relacionada ao Java, usamos e incentivamos nossos alunos e clientes a experimentarem o Java 7. Nesse post vou comentar sobre as características do novo bloco try do Java. Para começar, primeiro, vamos analisar uma demonstração simples de um programa Java que lê o conteúdo de arquivo texto linha a linha: import java.io.*; public class DemoTryAntigo { public static void main(String[] args) { FileReader in = null; BufferedReader buff = null; try { in = new FileReader("/home/yaw/teste.txt"); //caminho do arquivo buff = new BufferedReader(in, 1024); StringBuilder builder = new StringBuilder(); String s = null; while ((s = buff.r...

RichFaces 4: Bean Validation no lado cliente para campos na tela, simples e fácil

No TDC2011 (SP) além de me divertir e aprender bastante também apresentei, na trilha Java EE , a palestra: " RichFaces 4: Desenvolvimento Web com JSF2 mais rico ". Iniciei a palestra comentando sobre as vantagens em adotar uma suíte de componentes UI (User Interface) terceira no desenvolvimento de aplicativos web com JavaServer Faces versão 2. Mas o foco da palestra foi explorar os novos recursos do RichFaces 4, uma das mais famosas suítes para desenvolvimento JSF, a nova versão recentemente lançada completamente compatível com JSF 2. Nesse post vou explorar um pouco mais algumas uma funcionalidades citadas na palestra: RichFaces Client Side Validation (CSV), a validação de campos do RichFaces 4 com Bean Validation. Mais uma vez utilizei nossa cobaia para experiências com JSF, o ScrumToys . Bean Validation no lado cliente O novo componente rich:validator , do RichFaces 4, pode ser vinculado a componentes inputs em uma tela para aplicar validações de acordo com as rest...

Geração de classes persistentes com a engenharia reversa no SpringRoo

Fechando uma série com 3 posts que descrevem algumas características do Spring Roo   para a camada de persistência, neste último post vou demonstrar como criar entidades persistentes a partir de uma base de dados relacional, utilizando engenharia reversa via o add-on DBRE (Database Reverse Engineering ) do Spring Roo. O diferencial do Roo, em relação a outras ferramentas de engenharia reversa, é a possibilidade de re-utilizar essa funcionalidade durante todo o ciclo de desenvolvimento, não se limitando apenas na fase inicial de codificação. Modelo de dados Vou usar o mesmo projeto demonstração dos outros dois posts, um CRUD de produtos, no MySQL com as seguintes tabelas: Projeto Roo Para experimentar a engenharia reversa do Spring Roo é interessante começar um projeto novo. A seguir, as instruções necessárias para montar o projeto: roo> project --topLevelPackage br.com.yaw.produtos roo> persistence setup --provider HIBERNATE --database MYSQL --databaseName roodb ...

Criação de consultas com o Spring Roo

No post Bastidores do Spring Roo: A camada de persistência descrevi como o Spring Roo cria e mantém a camada de persistencia de um aplicativo Java para Web, usando como exemplo um CRUD de Produtos. Porém, deixei de fora propositalmente, algumas funcionalidades interessantes do Roo ainda na área de persistência. Nesse post vou demonstrar como implementar funcionalidade de pesquisa em uma aplicação através do Spring Roo . O Spring Roo disponibiliza o comando finder para criar consultas via linha de comando , no shell. O finder gera toda estrutura necessária para implementar uma funcionalidade de pesquisa em uma entidade, desde o método Java com código JPA-QL , passando pela controller até chegar na página web. Demo: a entidade Produto Para testar essa funcionalidade do Roo, vou relembrar um trecho do exemplo usado no post anterior, a criação da entidade Produto. Os comandos a seguir são executados no shell do Roo para criar Produto com descrição e o valor : roo> entity --cl...

Bastidores do Spring Roo: A camada de persistência

Como funciona a criação e manutenção da camada de persistência de uma aplicação desenvolvida com Roo? Esse post demonstra como o Spring Roo configura a camada de persistência, descreve os comandos de persistência e como eles funcionam, além de esclarecer como o Spring Roo atua sob as entidades no decorrer do desenvolvimento. Esse texto complementa o conteúdo postado em Aventuras com Spring Roo no mundo real . O Spring Roo é uma ferramenta RAD (Rapid Application Development) para desenvolvimento de aplicativos para Web, usando a linguagem Java. Se você nunca ouviu falar sobre o Spring Roo, leia  Hello Roo . Projeto demo O exemplo usado como demonstração é bem simples, um CRUD de Produtos usando o HSQLDB , em poucos passos e sem burocracia o aplicativo poderá ser testado.  Considerando que a instalação e configuração do Roo  já foram concluídas, para criar o projeto basta executar no shell do Roo: roo> project --topLevelPackage br.com.yaw.produtos Config...