sexta-feira, 31 de maio de 2013

Usando canvas (ou java.awt.Graphics) - Parte 4

Vamos agora ver como desenhar quadrados, retângulos e outras figuras com 4 lados (quadriláteros):


Usando canvas (ou java.awt.Graphics) - Parte 3

Vamos ver agora como desenhar círculos no canvas em continuação ao post anterior:



Usando canvas (ou java.awt.Graphics) - Parte 2

Continuando o post anterior, vamos ver agora como desenhar um ponto na tela:



Usando canvas (ou java.awt.Graphics) - Parte 1

Se você quiser fazer um jogo em Java outra aplicação gráfica que contenha interação com imagens, figuras e animações, você irá precisar de acessar objetos que não são swing ou awt.

Para isto temos que interagir com a classe Graphics.

A classe Graphics do java.awt é uma classe base (abstrata) para todos os contextos gráficos que permitem um aplicativo desenhar os componentes que são utilizados em vários dispositivos, bem como em imagens fora da tela. Encapsula as informações sobre o estado necessário para as operações de processamento básicas que Java suporta.

Neste primeiro post vamos preparar nosso ambiente, isto é, criar as classes básicas que nos permitirão fazer os desenhos na tela. Veja o vídeo:


quinta-feira, 30 de maio de 2013

Injeção de dependência em Spring

O Spring é um framework que permite uma melhor programação e fornece um modelo de configuração para aplicações empresariais em Java. Segundo a própria Springsource, o objetivo é que as equipes possam se concentrar na lógica de negócios em nível de aplicativo, sem vínculos desnecessários para ambientes específicos de implantação.

As principais características do Spring Framework são:

  • Injeção de dependência utilizando configuração XML e/ou baseada em anotações;
  • Suporte avançado para programação orientada a aspectos com variantes baseadas em proxy e em AspectJ
  • Suporte para transações declarativas, caching declarativo, validação declarativa e formatação declarativa
  • Abstrações para trabalhar com especificações comuns do Java EE (JDBC, JPA, JTA e JMS)
  • Suporte a Hibernate e Quartz
  • Fornece um framework para aplicações web MVC, RESTful e webservices
  • Fornece ambiente para realização de testes de unidade e de integração
  • Suporte a ambiente de cloud computing como Heroku, Google App Engine, Amazon Elastic Beanstalk eVMware's Cloud Foundry

Vamos ver neste vídeo um pouco de injeção de dependência:
 


Fazendo um programa com JDBC - Parte 5

Oi Pessoal,



Continuando a saga da construção de uma aplicação utilizando somente JDBC com MS Access apresento agora Parte 5. Você pode buscar a parte anterior no link.

Vamos ver agora como implementar a classe Contato. Nosso desenvolvimento agora busca conseguir colocar as classes relacionadas abaixo funcionando em conjunto, sendo os dados persistidos (gravados) no banco de dados:
Nosso objetivo neste post é ver como fazer as principais relações entre as telas que permitem cadastrar um contato bem como trocar a senha do usuário logado no sistema.

As interações que verificaremos são:

Vamos ao nosso vídeo:




Se você já acabou de assistir, deve ter percebido o trabalho que gerar uma aplicação completa em JDBC é trabalhosa. Uma aplicação JDBC-ODBC com MS Access é ainda pior, pois tem algumas classes úteis que não são implementadas pelo driver como por exemplo PreparedStatement.


segunda-feira, 27 de maio de 2013

Fazendo um programa com JDBC - Parte 4

Continuando nosso desenvolvimento em JDBC achei que valia a pena discutirmos dois tópicos antes de terminar a programação. Este post pode ser lido como uma continuação de Fazendo um programa com JDBC - Parte 3 ou como uma parte independente.

Primeiro apresento um vídeo tratando dos 4 comandos SQL para manipulação de dados - SELECT, INSERT, UPDATE e DELETE que em português representando o chamado CRUD.



O desenvolvimento que estamos realizando neste blog é bastante básico mas é interessante destacar que para um projeto comercial precisamos preocupar com mais do que fazer o programa funcionar. Um ponto importante e bastante negligenciado principalmente por programadores iniciantes é a possibilidade de ataque aos mecanismos de acesso da aplicação. Uma das formas negligenciadas é o chamado SQL INJECTION.

Veja o vídeo e me diga se você não consegue identificar uma forma de burlar o login simples que fizemos no post anterior.



quinta-feira, 23 de maio de 2013

Fazendo um programa com JDBC - Parte 3

Agradeço ao colega Thiago Aderaldo pela dica deste post. Normalmente devemos utilizar PreparedStatement para executar comandos SQL que são repetidos diversas vezes como por exemplo a atualização da data do último login do usuário que vimos no nosso post anterior.

Porém no caso do MS Access com JDBC esta funcionalidade não está disponível e obtemos um erro ao tentar utilizar.

Vamos ao vídeo


Apesar disto, sigam sempre o conselho do Thiago. Se puderem, usem PreparedStatement para comando repetitivos. Se você estiver utilizando um bom banco de dados, como Oracle, este é o comando certo para utilizar.

quarta-feira, 22 de maio de 2013

Fazendo um programa com JDBC - Parte 2

Continuando o post da Parte 1 vamos ver agora como resolver alguns problemas que criamos na primeira parte. Neste vídeo faremos:

  • criaremos as duas outras tabelas no MS Access necessárias para o funcionamento do programa, são elas Contatos e Comentários
  • criaremos as relações entre as tabelas, ou menor, definiremos as regras de integridade indicando quais são as chaves estrangeiras de cada tabela
  • no programa anterior, o acesso ao banco de dados ficou todo misturado com a parte de interface com usuário na nossa tela de login, iremos neste post fazer a separação entre a tela de login e o acesso a tabela de usuários
  • faremos com que a data de último login seja registrada no banco de dados, toda vez que o usuário realizar um login. Esta é a principal novidade no que diz respeito ao acesso JDBC, pois agora estaremos utilizando um comando UPDATE. Anteriormente vimos como utilizar o SELECT


Deste vídeo uma atividade importante é a separação que conseguimos fazer da interface gráfica e do objeto que acessa o banco de dados. Com este tipo de separação podemos ter este objeto agora em um servidor de aplicações e a interface em um cliente, gerando facilmente uma aplicação em três camadas. Da forma que a aplicação foi desenvolvida na primeira parte de tutorial, não conseguiríamos fazer mais que duas camadas.

sexta-feira, 17 de maio de 2013

Configurando CLASSPATH

Um dos erros que acontece quando tentamos ativar a classe servidora com RMI, como por exemplo no nosso post Acessando arquivos e diretórios remotos via RMI decorre da definição da variável de ambiente CLASSPATH. Se o caminho para a classe não estiver configurado pode ser que rmiregistry não consiga localizar a STUB.

Como ainda não coloquei nada a este respeito no blog, vou aproveitar para apresentar para vocês o básico de configuração do CLASSPATH no vídeo abaixo:


quarta-feira, 15 de maio de 2013

Acessando arquivos e diretórios remotos via RMI

Continuando a série de artigos sobre uso de RMI para acessar informações remotamente que começamos em Utilizando RMI para comunicação remota. Neste post iremos ver como acessar arquivos e diretórios remotamente, inclusive como ler e escrever arquivos remotamente.

É interessante ver que depois das partes específicas da comunicação RMI, ao conseguirmos o acesso ao objeto que implementa a interface remota, as operações são simplesmente a execução dos métodos como se o objeto estivesse na máquina local.

Em função do tamanho da apresentação dividi os vídeos em duas partes:
  1. na primeira parte mostro como criar a interface remota, a classe que implementa esta interface e a classe básica do cliente
  2. na segunda parte mostro a classe servidora e fazemos diversos testes na classe cliente.
 Destaco duas tarefas importantes que você tem que fica atento:
  • a necessidade de rodar rmiregistry para permitir o registro da classe e garantir a comunicação
  • voce tem que gerar uma classe stub que é compilada via rmic a partir da classe que implementa a interface remota
Parte 1

Parte 2

domingo, 12 de maio de 2013

Fazendo um programa com JDBC - Parte 1

Vamos ver como utilizar o JDBC-ODBC para acessar um banco de dados em Microsoft Access que nos permitirá persistir os dados. Nosso exemplo será um programa simples de contatos com 3 tabelas conforme explicado no vídeo. Como será um processo um pouco longo, dividi a construção deste projeto simples em algumas partes.

Nesta primeira parte veremos duas tarefas:
  1. como realizar a conexão com o banco de dados
  2. como realizar uma consulta SQL no banco de dados para validar o login de um usuário

sábado, 11 de maio de 2013

Explicando tipo de drivers JDBC


Existem diversas implementações de drivers JDBC, estas implementações são colocadas em 4 categorias ou tipos:

  • Type 1: são drivers que implementam a API JDBC como um mapeamento para outra API como por exemplo ODBC (Open Database Connectivity). Os drivers deste tipo são dependentes de uma biblioteca nativa limitando sua portabilidade. A ponte JDBC-ODBC é um exemplo deste tipo e em função do ODBC só roda em ambiente Windows que tenha o ODBC e seus drivers instalados.
    • O Java considera a ponte JDBC-ODBC como uma solução de transição, não sendo suportada pelo Java.
    • Este tipo de driver deve ser utilizado somente em situações onde não exista um driver JDBC tipo 2, 3 ou 4.
  • Type 2: são drivers escritos parcialmente em linguagem Java e em código nativo. Estes drivers utilizam uma biblioteca para a parte cliente específica para a fonte de dados que conectam, limitando por esta razão sua portabilidade para os ambientes onde o código nativo roda.
    • Um exemplo deste tipo é o driver OCI (Oracle Call Interface) para bancos de dados Oracle.
  • Type 3: são drivers que utilizam um cliente totalmente Java e se comunicam com um  servidor middleware que utilizar um protocolo independente, desta forma o cliente é puramente Java e pode ser portado para todos os ambientes onde roda a JVM. Cabe ao middleware realizar a comunicação com o banco.
  • Type 4: são drivers Java puros e que implementam o protocolo de rede para uma fonte de dados, desta forma o cliente conecta diretamente ao banco.





Veja o vídeo para mais detalhes....

quinta-feira, 9 de maio de 2013

Instalando o Java 7, o SDK do Java e o Netbeans 7.3

Oi Pessoal,

Aproveitei que resolvi reinstalar do zero minha máquina de desenvolvimento e refiz meu vídeo ilustrando como são instalados os Java JRE 7, JDK 7 e o Netbeans 7.3. O vídeo com todo o processo pode ser visto abaixo:


Este é um post com informações básicas para quem está querendo iniciar em Java e precisa montar um ambiente de desenvolvimento.

segunda-feira, 6 de maio de 2013

Lendo um QrCode em Java

Oi Internautas!

Em atenção ao nosso colega Igor Farias estou escrevendo este post. Ele é tipo uma continuação do post  Gerando QrCode em Java que você pode achar neste blog. O Igor perguntou como fazer para ler um qrcode que geramos na classe do post anterior.

Vou mostrar no vídeo uma classe simples que permite ler o qrcode e interpretar os dados. Vamos a ela:

As bibliotecas necessárias para a criação do código estão aqui.