wpjr2’s Weblog

Artigos e tutoriais úteis

Archive for the ‘Curso de Programação Java’ Category

Swing/OpenGL Photo Viewer

Posted by wpjr2 em julho 7, 2008

Encontrei um projeto baseado em Swing e OpenGL muito interessante que apresenta fotos em 3 dimensões, conforme mostrado na gravura abaixo. O projeto é open-source e o seu código pode ser abaixado gratuitamente.

Link

Anúncios

Posted in Curso de Programação Java | Etiquetado: , | Leave a Comment »

JavaSE: Demos

Posted by wpjr2 em julho 7, 2008

Não sei se todos sabem, mas na instalação do JavaSE existe um diretório contendo diversos demos interessantes. dentre estes, se destacam:

  • SwingSet2: <DIRETORIO_INSTALACAO_JAVA>\demo\jfc\SwingSet2

  • Java2D: <DIRETORIO_INSTALACAO_JAVA>\demo\jfc\Java2D

  • MetalWorks: : <DIRETORIO_INSTALACAO_JAVA>\demo\jfc\MetalWorks

  • Notepad: : <DIRETORIO_INSTALACAO_JAVA>\demo\jfc\Notepad
  • Table Example: : <DIRETORIO_INSTALACAO_JAVA>\demo\jfc\TableExample

Artigos Úteis:

Posted in Curso de Programação Java | Etiquetado: , | Leave a Comment »

Swing Explorer

Posted by wpjr2 em junho 3, 2008

Um Projeto muito interessante no Java.net é o Swing Explorer que apresenta os componentes Swing disponíveis no JavaSE.

De acordo com o site:

“SwingExplorer is a tool for Swing developers intended for visual exploring of Swing-based application internals. It finds all windows in explored Swing application and displays their component hierarchies as a tree. Each component in the tree can be displayed in the Swing Explorer’s work area and visually inspected. Swing Explorer helps to determine sub-components when user moves mouse over them and provides additional information about currently selected component (layout, size, coordinates, border and other things). Additionally it allows to view basic graphical operations used to draw swing components like DebugGraphics does, but in more convenient way. The screenshot illustrates how Swing Explorer looks like. ”

Segue abaixo um screenshot da tela da aplicação.

O projeto está sob a liçença GNU General Public License (GPL v. 2.0) e pode ser baixado gratuitamente.

Link

Posted in Curso de Programação Java | Etiquetado: | Leave a Comment »

AWT/Swing

Posted by wpjr2 em maio 26, 2008

Segue abaixo alguns links úteis relacionados às bibliotecas AWT e Swing para o desenvolvimento de aplicações utilizando interfaces gráficas de usuário no desktop:

http://java.sun.com/docs/books/tutorial/ui/index.html
http://www.apl.jhu.edu/~hall/java/Swing-Tutorial/
http://java.sun.com/docs/books/tutorial/uiswing/
http://java.sun.com/docs/books/tutorial/ui/features/components.html

Posted in Curso de Programação Java | Etiquetado: , | Leave a Comment »

Padrões de Projeto: Introdução

Posted by wpjr2 em maio 23, 2008

Extraído da Wikipedia (http://pt.wikipedia.org/wiki/Padr%C3%B5es_de_projeto)

Os padrões de projeto de software ou padrões de desenho de software, também muito conhecido pelo termo original em inglês: Design Patterns, descrevem soluções para problemas recorrentes no desenvolvimento de sistemas de software orientados a objetos. Um padrão de projeto estabelece um nome e define o problema, a solução, quando aplicar esta solução e suas conseqüências.

Os padrões de projeto visam facilitar a reutilização de soluções de desenho – isto é, soluções na fase de projeto do software, sem considerar reutilização de código. Também acarretam um vocabulário comum de desenho, facilitando comunicação, documentação e aprendizado dos sistemas de software.
História

O conceito de padrão de projeto foi criado na década de 70 pelo arquiteto Christopher Alexander. Em seus livros Notes on the Synthesis of Form, The Timeless Way of Building e A Pattern Language, ele estabelece que um padrão deve ter, idealmente, as seguintes características:

* encapsulamento; um padrão encapsula um problema/solução bem definido. Ele deve ser independente, específico e formulado de maneira a ficar claro onde ele se aplica.
* generalidade; todo padrão deve permitir a construção de outras realizações a partir deste padrão.
* equilíbrio; quando um padrão é utilizado em uma aplicação, o equilíbrio dá a razão, relacionada com cada uma das restrições envolvidas, para cada passo do projeto. Uma análise racional que envolva uma abstração de dados empíricos, uma observação da aplicação de padrões em artefatos tradicionais, uma série convincente de exemplos e uma análise de soluções ruins ou fracassadas pode ser a forma de encontrar este equilíbrio.
* abstração; os padrões representam abstrações da experiência empírica ou do conhecimento cotidiano.
* abertura; um padrão deve permitir a sua extensão para níveis mais baixos de detalhe.
* combinatoriedade; os padrões são relacionados hierarquicamente. Padrões de alto nível podem ser compostos ou relacionados com padrões que endereçam problemas de nível mais baixo.

Além da definição das características de um padrão, Alexander definiu o formato que a descrição de um padrão deve ter. Ele estabeleceu que um padrão deve ser descrito em cinco partes:

* nome; uma descrição da solução, mais do que do problema ou do contexto.
* exemplo; uma ou mais figuras, diagramas ou descrições que ilustrem um protótipo de aplicação.
* contexto; a descrição das situações sob as quais o padrão se aplica.
* problema; uma descrição das forças e restrições envolvidos e como elas interagem.
* solução; relacionamentos estáticos e regras dinâmicas descrevendo como construir artefatos de acordo com o padrão, freqüentemente citando variações e formas de ajustar a solução segundo as circunstâncias. Inclui referências a outras soluções e o relacionamento com outros padrões de nível mais baixo ou mais alto.

Em 1987, a partir dos conceitos criados por Alexander, os programadores Kent Beck e Ward Cunningham propuseram os primeiros padrões de projeto para a área da ciência da computação. Em um trabalho para a conferência OOPSLA, eles apresentaram alguns padrões para a construção de janelas na linguagem Smalltalk. [3] Nos anos seguintes Beck, Cunningham e outros seguiram com o desenvolvimento desta idéias.

O movimento ao redor de padrões de projeto ganhou popularidade com o livro Design Patterns: Elements of Reusable Object-Oriented Software, publicado em 1995. Os autores desse livro são Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides, conhecidos como a “Gangue dos Quatro” (Gang of Four) ou simplesmente “GoF”. Posteriormente, vários outros livros do estilo foram publicados, como Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development, que introduziu um conjunto de padrões conhecidos como GRASP (General Responsibility Assignment Software Patterns).

Padrões GoF

Os padrões “GoF” são organizados em famílias de padrões: de criação, estruturais e comportamentais. Os padrões de criação são relacionados à criação de objetos, os estruturais tratam das associações entre classes e objetos e os comportamentais das interações e divisões de responsabilidades entre as classes ou objetos.

Um padrão “GoF” também é classificado segundo o seu escopo; de classe ou de objeto. Nos padrões com escopo de classe os relacionamentos que definem este padrão são definidos através de herança e em tempo de compilação. Nos padrões com escopo de objeto o padrão é encontrado no relacionamento entre os objetos definidos em tempo de execução.

Padrões “GoF” organizados nas suas famílias:

Padrões de criação

* Abstract Factory
* Builder
* Factory Method
* Prototype
* Singleton

Padrões estruturais

* Adapter
* Bridge
* Composite
* Decorator
* Façade
* Flyweight
* Proxy

Padrões comportamentais

* Chain of Responsability
* Command
* Interpreter
* Iterator
* Mediator
* Memento
* Observer
* State
* Strategy
* Template Method
* Visitor

Padrões GRASP

* Controller
* Creator
* Expert
* Law of Demeter
* Low Coupling/High Cohesion
* Polymorphism
* Pure Fabrication

Posted in Curso de Programação Java | Etiquetado: , | Leave a Comment »

Java Swing: Calculadora 2.0

Posted by wpjr2 em maio 13, 2008

Postei no Google groups do curso de programação Java um arquivo contendo o código fonte de uma segunda versão da calculadora desenvolvida em Java Swing. Na nossa primeira versão, senti falta de alguns botões, como o de limpar a tela, raiz quadrada, etc.

Link do código fonte

Enjoy!

Posted in Curso de Programação Java | Etiquetado: , | Leave a Comment »

Projetos do Curso de Programação Java

Posted by wpjr2 em maio 13, 2008

Acabei de postar no Google Groups os arquivos relacionados aos projetos que desenvolvemos no ultimo sábado de curso (10/05/08). Estes arquivos são:

banco_java_bin_JAR.zip: Banco Java binário em formato JAR que pode ser executado diretamente. As instruções de como executá-lo estão dentro do arquivo JAR. Lembrando que este binário somente irá executar no JDK 6.0 ou superior. Caso seja necessário executar em versões anteriores, uma recompilação das classes a partir do código fonte será necessária. Por isto, verifiquem a versão do JDK instalado no PC antes de executar (java -version).

bancoJava20080512.zip: Banco Java em forma de projeto do eclipse. Removi a bibiloteca JavaUtils e apenas copiei as duas classes que estávamos utilizando desta (TelaDialogo e FormulaUtil) para o projeto do Banco Java.

clientes_Calculadora.zip: projeto cliente (conecta a aplicação Java com um banco via JDBC) e projeto calculadora (criação da GUI de uma calculadora simples).

Posted in Curso de Programação Java | Etiquetado: , , , | Leave a Comment »

AWT, Swing e SWT: Comparação

Posted by wpjr2 em maio 12, 2008

Segue abaixo alguns links interessantes sobre as principais bibliotecas de interface gráfica no JavaSE:

Comparação:

SWT:

Outras alternativas:

Posted in Curso de Programação Java | Etiquetado: , , | Leave a Comment »

JDBC: Tipos de Drivers

Posted by wpjr2 em maio 12, 2008

JDBC driver types

JDBC drivers are divided into four types or levels. Each type defines a JDBC driver implementation with increasingly higher levels of platform independence, performance, and deployment administration. The four types are:

  • Type 1: JDBC-ODBC Bridge
  • Type 2: Native-API/partly Java driver
  • Type 3: Net-protocol/all-Java driver
  • Type 4: Native-protocol/all-Java driver

Type 1: JDBC-ODBC Bridge

The type 1 driver, JDBC-ODBC Bridge, translates all JDBC calls into ODBC (Open DataBase Connectivity) calls and sends them to the ODBC driver. As such, the ODBC driver, as well as, in many cases, the client database code, must be present on the client machine. Figure 1 shows a typical JDBC-ODBC Bridge environment.

Figure 1. Type 1: JDBC-ODBC Bridge

Pros

The JDBC-ODBC Bridge allows access to almost any database, since the database’s ODBC drivers are already available. Type 1 drivers may be useful for those companies that have an ODBC driver already installed on client machines.

Cons

  • The performance is degraded since the JDBC call goes through the bridge to the ODBC driver, then to the native database connectivity interface. The result comes back through the reverse process. Considering the performance issue, type 1 drivers may not be suitable for large-scale applications.
  • The ODBC driver and native connectivity interface must already be installed on the client machine. Thus any advantage of using Java applets in an intranet environment is lost, since the deployment problems of traditional applications remain.

Type 2: Native-API/partly Java driver

JDBC driver type 2 — the native-API/partly Java driver — converts JDBC calls into database-specific calls for databases such as SQL Server, Informix, Oracle, or Sybase. The type 2 driver communicates directly with the database server; therefore it requires that some binary code be present on the client machine.

Figure 2. Type 2: Native-API/partly Java driver

Pros

Type 2 drivers typically offer significantly better performance than the JDBC-ODBC Bridge.

Cons

The vendor database library needs to be loaded on each client machine. Consequently, type 2 drivers cannot be used for the Internet. Type 2 drivers show lower performance than type 3 and type 4 drivers.

Type 3: Net-protocol/all-Java driver

JDBC driver type 3 — the net-protocol/all-Java driver — follows a three-tiered approach whereby the JDBC database requests are passed through the network to the middle-tier server. The middle-tier server then translates the request (directly or indirectly) to the database-specific native-connectivity interface to further the request to the database server. If the middle-tier server is written in Java, it can use a type 1 or type 2 JDBC driver to do this.

Figure 3. Type 3: Net-protocol/all-Java driver

Pros

The net-protocol/all-Java driver is server-based, so there is no need for any vendor database library to be present on client machines. Further, there are many opportunities to optimize portability, performance, and scalability. Moreover, the net protocol can be designed to make the client JDBC driver very small and fast to load. Additionally, a type 3 driver typically provides support for features such as caching (connections, query results, and so on), load balancing, and advanced system administration such as logging and auditing.

Cons

Type 3 drivers require database-specific coding to be done in the middle tier. Additionally, traversing the recordset may take longer, since the data comes through the backend server.

Type 4: Native-protocol/all-Java driver

The native-protocol/all-Java driver (JDBC driver type 4) converts JDBC calls into the vendor-specific database management system (DBMS) protocol so that client applications can communicate directly with the database server. Level 4 drivers are completely implemented in Java to achieve platform independence and eliminate deployment administration issues.

Figure 4. Type 4: Native-protocol/all-Java driver

Pros

Since type 4 JDBC drivers don’t have to translate database requests to ODBC or a native connectivity interface or to pass the request on to another server, performance is typically quite good. Moreover, the native-protocol/all-Java driver boasts better performance than types 1 and 2. Also, there’s no need to install special software on the client or server. Further, these drivers can be downloaded dynamically.

Cons

With type 4 drivers, the user needs a different driver for each database.

Posted in Curso de Programação Java | Etiquetado: , , | Leave a Comment »

Aplicação Tela Calculadora

Posted by wpjr2 em maio 12, 2008

Nas últimas duas turmas do curso de programação em Java, iniciamos no último
capítulo do curso a construção de uma aplicação bem simples utilizando o
plug-in do Eclipse chamado Eclipse Visual Editor para a construção de
interfaces gráficas.

O conceito que usamos foi a criação de uma calculadora que fizesse as
operações básicas de soma, subtração, multiplicação e divisão.

Segue abaixo um link contendo o projeto Eclipse de um exemplo de implementação com a calculadora funcionando. É provável que haja bugs ainda.

Link

O processo de importação é o mesmo que fizemos em sala de aula (FILE,
IMPORT, PROJECT, EXISTING PROJECTS INTO WORKSPACE, ARCHIVE FILE, selecionar
o zip, clicar em OK).

Quem quiser extendê-la, fique a vontade. Algumas das funcionalidades
adicionais interessantes incluem:
– botão para casas decimais
– raiz quadrada, elevar um número ao quadrado, elevar um numero a n potência
– trigonométricas (seno, coseno, tag, etc).
– registros de armazenamento (botão M)

Para quem não conseguir baixar o arquivo zip contendo o projeto, o link para o arquivo no grupo está abaixo:

http://groups.google.com/group/cursojavaoo/web/calculadora.zip

Posted in Curso de Programação Java | Etiquetado: , , | Leave a Comment »