agosto 2009 – Blog do Márcio d'Ávila
Leave a comment on Ferramentas Java
Mais uma linguagem para a Java Virtual Machine (JVM): Clojure.
Clojure é uma linguagem de programação predominantemente funcional, e provê um rico conjunto de estruturas de dados imutáveis e persistentes. Clojure é um dialeto da linguagem de programação Lisp, e compartilha com Lisp a filosofia de código-como-dado e um poderoso sistema de macro. Clojure compila diretamente para bytecode da JVM.
Eis uma apresentação segundo o artigo Clojure: Challenge your Java assumptions, por Joshua Fox, 2009-05-12 em JavaWorld.com:
Clojure é uma linguagem funcional dinâmica para a Máquina Virtual Java (JVM), lançada em versão 1.0 em maio de 2009. Clojure oferece um novo conjunto de técnicas de programação visando código robusto e desenvolvimento rápido. Em particular, ela oferece novas soluções para computação multicore. Não importando se você adere a Clojure ou permanece com Java, aprender sobre esta nova linguagem pode desafiar suas assunções sobre a melhor forma de projetar software.
O projeto da linguagem de programação Clojure é software livre sob licença Eclipse Public License (EPL) 1.0. Está hospedado em Google Code e seu desenvolvimento mais recente é mantido em GitHub e Assembla.
Veja também o blog Clojure com novidades sobre esta linguagem de programação.
Uma boa referência para novidades em ferramentas de desenvolvimento no universo Java é a newsletter do Java Tools Community. Você pode ler o boletim on-line no portal do projeto, ou se inscrever na lista de anúncios para receber por e-mail.
Por falar em ferramentas, Java Power Tools é o nome do livro de John Ferguson Smart, publicado pela O'Reilly Media – ISBN-13: 9780596527938, 910 páginas, abril de 2008.
Em seu blog, Smart divulgou o recente lançamento da segunda Java Power Tools Newsletter, tendo como tópico em discussão os frameworks de teste web que podem ser usados com Java: Selenium, HTMLUnit, WebDriver, JWebUnit.
Saindo de um blog em java.net para outro, a dica do dia (Tip Of The Day – TOTD) de Arun Gupta de 13 de agosto foi: TOTD #93: Getting Started with Java EE 6 using NetBeans 6.8 M1 & GlassFish v3 – A simple Servlet 3.0 + JPA 2.0 app.
Em oito passos simples, Gupta mostra como é fácil criar um exemplo de aplicação Java EE 6 no NetBeans 6.8 (atualmente em Milestone 1) e GlassFish v3 utilizando as especificações atualizadas Servlet 3.0 e Java Persistence API (JPA) 2.0, da iminente plataforma Java EE 6.
Saindo do java.net mas ficando nos frameworks web… O incansável Matt Raible, criador do AppFuse e constante avaliador de frameworks Java para web, fala no artigo My Experience with Java REST Frameworks (specifically Jersey and CXF), 2009-08-27 (também em Javalobby), de suas experiências com os frameworks REST.
Para uma introdução sobre REST, recomendo meu artigo REST e a evolução da arquitetura de software, atualizado em 2008-10-18.
Veja também o anúncio The Apache Wink project has released its first version, por Eli Baram 2009-08-28, em TheServerSide.COM, sobre o lançamento do framework de construção RESTful Web services Apache Wink.
E assim como vem aí o Java EE 6, está a caminho também o Java SE 7.
O artigo Java 7 What's New, Performance Benchmark – 1.5, 1.6, 1.7, por Taranfx.com, 2009-08-29, traz uma análise do desempenho da nova versão do JDK 7, em comparação com Java SE 5 e 6. Java 7 ficou bem na fita.
E voltando aos blogs do java.net, é também sobre Java 7 o artigo The seven small language changes that will be in JDK7, por Rémi Forax, 2009-08-29, comentando a divulgação de Joe Darcy das sete mudanças aceitas para inclusão no JDK7 no projeto coin-dev.
E para fechar o post sobre ferramentas Java, meus últimos achados no assunto:
Top 100 Free Java Books to Download, 2009-08-28.
Crítica do livro DWR Java AJAX Applications, por Manuel Jordan, 2009-08-28, em Javalobby.
Artigo JPA Performance, Don't Ignore the Database, por Carol McDonald, 2009-08-28.
New Monitoring Capabilities in GlassFish v3, no java.net Editor's Daily Blog de 2009-08-27.
Implementing composite keys with JPA and Hibernate – The issue of the legacy database schema, artigo por Stephen B. Morris, 2009-08-25, em IBM developerWorks.
GMaps4JSF in the JSF 2.0 Ajax world, por Hazem Saleh, Staff Software Engineer, IBM, 2009-08-25, também em IBM developerWorks.
Leave a comment on Software Patterns e Frameworks
Arquitetura TI, FAQ, Software
O mundo do software vem ficando cada vez mais amplo, abrangente e complexo. Se você olhar o universo abrangido por tecnologias como Java, verá que é difícil "enxergar até o fim de seu horizonte".
Com isso, a curva de aprendizagem de tecnologias para desenvolvimento de software cresce muito. Em contrapartida vão surgindo iniciativas de melhores práticas e modelos prontos para simplificar situações comuns.
Duas forças nesse sentido da simplificação ou organização de situações comuns em software são os Patterns e os Frameworks.
Software Patterns são padrões conceituais que documentam a caracterização e a solução para problemas comuns (genéricos) de construção de software. Visam definir um idioma comum para estas situações (em vez de descrever a situação/problema/solução, você cita o nome dado a ela) e evitar que se "reinvente a roda".
Existem patterns voltados para modelagem/desenho — design patterns, arquitetura de software — architectural patterns, integração — integration patterns. Embora não sejam específicos do paradigma orientado a objetos, os design patterns surgiram na área de software contemporâneos a esse paradigma e por isso muitas vezes são definidos usando conceitos de OO e mais facilmente aplicáveis em linguagens com suporte a OO.
Frameworks são arcabouços de construção de software. Ainda não encontrei grandes definições para frameworks, mas eu entendo framework como um modelo de trabalho predefinido para implementação de determinado aspecto de software. Um framework costuma englobar bibliotecas, componentes, APIs, estruturas, mecanismos e uma proposição (ou às vezes imposição) de forma de trabalho.
Enquanto patterns são modelos conceituais, frameworks são soluções práticas e específicas para determinada situação e tecnologia/linguagem. Freqüentemente um framework se baseia ou implementa um ou mais patterns aplicáveis àquela situação. Frameworks visam facilitar e acelerar o desenvolvimento de software.
[Texto originalmente postado na lista de discussão MGJUG-users, em 26/jul/2008.]
Livros sobre software patterns:
Padrões de Projeto: Soluções Reutilizáveis de Software Orientado a Objetos [Design Patterns: Elements of Reusable OO Software]. Gang of Four ("GoF"): Gamma, Helm, Johnson, Vlissides. Bookman, Brasil, 2000, ISBN 85-7307-610-0. [Addison-Wesley, EUA, 1995].
Patterns of Enterprise Application Architecture. Martin Fowler. Addison-Wesley, EUA, 2002. Web: Patterns in Enterprise Software – catálogos e aspectos.
Pattern-Oriented Software Architecture ("POSA" 1 e 2). Buschmann, Meunier, Rohnert, Sommerlad, Stal. Wiley, EUA, 1996.
Enterprise Integration Patterns. Hohpe, Woolf. A.-Wesley, EUA, 2004.
Sun Java BluePrints Solutions Catalog e Core J2EE Patterns – bpcatalog.dev.java.net. Alur, Crupi, Malks. Prentice Hall, EUA, 2003.
Arquitetura de Software – Padrões de Desenho/Projeto (Design Patterns) e de Arquitetura, referências por Márcio d'Ávila.
Java Server Info – Java EE Patterns e Melhores Práticas, referências por Márcio d'Ávila.
Livros sobre Engenharia e Arquitetura de Software – Padrões de Projeto/Desenho (Design Patterns), Arquitetura Orientada a Serviços (SOA) e Integração de Aplicações Corporativas (EAI); referências por Márcio d'Ávila.