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.

Escrito por 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.

Enviado em Curso de Programação Java | Tagged: OpenGL, Swing | Nenhum comentário »
Escrito por 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:



Artigos Úteis:
Enviado em Curso de Programação Java | Tagged: Demos, JavaSE | Nenhum comentário »
Escrito por 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.
Enviado em Curso de Programação Java | Tagged: Swing Explorer | Nenhum comentário »
Escrito por 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
Enviado em Curso de Programação Java | Tagged: AWT, Swing | Nenhum comentário »
Escrito por 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
Enviado em Curso de Programação Java | Tagged: Design Patterns, Padrões de Projeto | Nenhum comentário »
Escrito por 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.
Enjoy!
Enviado em Curso de Programação Java | Tagged: Swing, Calculadora | Nenhum comentário »
Escrito por 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).
Enviado em Curso de Programação Java | Tagged: BancoJava, Calculadora, Clientes, Projetos | Nenhum comentário »
Escrito por 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:
Enviado em Curso de Programação Java | Tagged: Swing, AWT, SWT | Nenhum comentário »
Escrito por wpjr2 em Maio 12, 2008
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:
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
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.
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
Type 2 drivers typically offer significantly better performance than the JDBC-ODBC Bridge.
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.
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
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.
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.
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
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.
With type 4 drivers, the user needs a different driver for each database.
Enviado em Curso de Programação Java | Tagged: JDBC, SQL, Type | Nenhum comentário »
Escrito por 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.
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
Enviado em Curso de Programação Java | Tagged: Swing, AWT, Calculadora | Nenhum comentário »