Bibliografia Spring comentada

Vire o Jogo com Spring Framework

Abandonei o blog por alguns meses para me dedicar à produção do meu livro “Vire o jogo com Spring Framework” pela editora Casa do Código. Foi um processo muito enriquecedor pois me permitiu reler vários textos (e conhecer novos) que de uma forma ou outra acabaram entrando neste trabalho.

Este post é sobre esta bibliografia, que, espero, possa guiar todos aqueles que assim como eu queiram se aprofundar nos conceitos básicos por trás do Spring que são a inversão de controle, injeção de dependências, AOP, arquitetura de sistemas, qualidade de software e até mesmo sobre o próprio Spring :).

Textos teóricos

The Dependency Inversion Principle – Robert C. Martin – Já falei sobre este texto em alguns pontos deste blog. É um daqueles que mudam sua visão a respeito do processo de escrita de software: você entenderá o que é a inversão de controle e quais os fatores fundamentais que determinam a qualidade de um sistema.

The Open Closed Principle – Robert C. Martin – Outro texto clássico, aonde é descrito o princípio de design “open closed”, segundo o qual nossas classes devem ser abertas para extensão e fechadas para modificação. É o princípio básico por tŕas do Spring MVC. Leitura obrigatória para quem quer modelar melhor seus sistemas.

The Liskov Substitution Principle – Robert C. Martin – O princípio de substituição de Liskov nos ajuda a entender o poder por trás de interfaces bem definidas. Está diretamente relacionado às bases por trás da Injeção de Dependências.

Design Principles and Design Patterns – Robert C. Martin – Robert C. Martin – O autor define o que é arquitetura de software e, ainda mais importante, o que são dependências e como nós podemos categorizá-las e resolver problemas que emergem conforme nossos sistemas evoluem. É um resumão dos três textos que mencionei acima.

Inversion of Control Containers and the Dependency Injection Pattern – Martin Fowler – Texto clássico, em que pela primeira vez (ao menos até aonde minha pesquisa bibliográfica foi) é feita a distinção entre inversão de controle e injeção de dependências. Dica: injeção de dependências é uma variação da inversão de controle.

Design Patterns: Elements of Reusable Object-Oriented Software – Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides – É o clássico que todo programador que trabalhe com orientação a objetos deve ter em sua biblioteca. Trata-se do livro que trouxe o conceito de padrões de projeto para o mundo do desenvolvimento. Quando lidamos com Spring, estamos o tempo inteiro lidando com um ou outro padrão, como por exemplo Facade, MVC, Template Method e muitos outros. Conhecê-los torna a leitura de qualquer texto muito mais simpels. (Editora Addison-Wesley)

No Silver Bullet – Essence and Accidents of Software Engineering – Fred Brooks – Outro daqueles textos que mudam a vida do desenvolvedor. Os conceitos apresentados neste texto são a base para a compreensão do porquê da qualidade ruim de nossos projetos e também uma excelente fonte de argumentos contra gerentes fanfarrões.

The Mythical Man-Month – Fred Brooks – O livro clássico no qual posteriormente foi incluído o “No Silver Bullet”. É fundamental para aqueles que queiram entender as dificuldades básicas, aplicáveis ainda hoje na escrita de qualquer sistema. (Editora Addison-Wesley)

The Mesa Programming Environment – Richard E. Sweet – Publicado em 1985 no SIGPLAN Notices, tem valor histórico inestimável. É a primeira vez que se fala alguma coisa sobre inversão de controle e injeção de dependências. Fascinante.

Expert One-To-One J2EE Design and Development – Rod Johnson – Publicado em 2002, expõe os principais problemas com o EJB da época e já expõe as bases que formarão o Spring Framework. É uma leitura riquíssima para todos aqueles que queiram conhecer as motivações por trás do framework. E tem dicas de arqutietura e design que ainda são aplicáveis hoje. Livro massa! (Editora Wrox)

Expert One-To-One J2EE Development Without EJB – Rod Johnson – Publicado em 2004, podemos dizer que o Spring aparece oficialmente pela primeira vez neste livro. O autor apresenta aqui algumas alternativas ao EJB (adivinha qual a mais popular?) e, de novo, vemos algumas práticas de arquitetura fundamentais que nos fazem entender bem aquela história da “ferramenta certa pro problema certo”. Excelente leitura. Assim como o livro anterior, não o considero ultrapassado e, numa boa? São clássicos que valem muito à pena ter na sua biblioteca mesmo daqui a uns 20, 30 anos. (Editora Wrox)

The Composite View Pattern – Time de desenvolvimento do Apache Tiles – Ao tratar do Spring MVC, gasto algumas páginas falando a respeito do Tiles, que é baseado no padrão de visualização composto. Este é sem dúvidas o melhor texto que conheço sobre a descrição deste padrão.

JSR-299: The new Java standard for dependency injection and contextual lifecycle management – Gavin King, Pete Muir, Dan Allen, David Allen – A documentação do Weld, que é uma implementação de referência do CDI, em teoria concorrente do Spring foi o melhor texto que já li sobre a descrição dos contextos. Perguntas do tipo: “o que ganho com um contexto prototype ou singleton?” são respondidas neste texto.

Java Transaction Design Strategies – Mark Richards – Este livro publicado em 2006 pela InfoQ é o livro sobre transações em Java, e é de valor inestimável para qualquer desenvolvedor que queira ter um conhecimento mais sólido sobre o assunto.

Na prática

Spring Reference Documentation 3.1 – SpringSource – Em teoria deveríamos encontrar tudo na documentação de referência oficial do framework. Infelizmente isto não é verdade: diversos dos problemas práticos com os quais o desenvolvedor precisa lidar no seu dia a dia não são tratados aqui, o que torna o aprendizado do framework muito frustrante quando usado como única fonte. Mas de qualquer maneira, é sempre bom dar uma conferida em caso de dúvidas.

Introduction to the Spring Framework – Rod Johnson – Este texto publicado em 2005 no site The Server Side ainda hoje – apesar de estar desatualizado – ainda é uma excelente justificativa para a adoção do framework segundo as palavras do seu próprio criador.

Spring in Action – Craig Walls – É dos poucos livros que li todas as edições. A última – terceira – foi publicada em 2011 e é considerado um dos melhores livros sobre o assunto. No entanto observei que já está desatualizado em relação a 2012. Este trata da versão 3.0, eu trato da 3.1. Algumas classes foram consideradas deprecated de lá pra cá. Não gosto do modo como a AOP é descrita (pra que afogar o leitor em conceitos de cara se posso ir apresentando-os de forma mais suave?), e diversos problemas práticos que enfrentamos com o Spring MVC simplesmente não são tratados. Interessante: ele sequer explica direito o porquê dos contextos do container. Bom: é um texto introdutório, com certeza farão críticas similares ao livro que escrevi. :) (Editora Manning)

Injecao de Dependencias com Spring Framework 3 – Henrique Lobo Weissmann – Neste texto eu procuro explicar como funciona o container de inversão de controle/injeção de dependências do Spring e os princípios por trás destes. Foi o que deu origem ao livro.

Use a Cabeça – Ajax – Bret Mclaughlin – É o melhor livro que conheço sobre o assunto. (Editora Altabooks)

Ajax: A New Approach to Web Applications – Jesse James Garrett – Um texto de imenso valor histórico. É neste texto que pela primeira vez a técnica Ajax é descrita. Ainda hoje é uma das melhores descrições que conheço sobre o assunto.

Spring 2.5 Aspect-Oriented Programming – Create dynamic, feature rich, and robust enterprise applications using the Spring Framework – Massimiliano Dessi – Livro interessantíssimo só sobre aplicações de AOP com Spring. É bacana porque podemos ver diversos exemplos e, com isto, entender melhor o quê é a AOP e, principalmente, para quê serve. (Editora PACKT Publishing)

Spring Enterprise Recipes – A Problem-Solution Approach – Jan Machacek, Aleksa Vukotic, Anirvan Chakraborty, Jessica Ditt – É um livro no estilo “receita de bolo” só com problemas envolvendo o Spring. Muito interessante pra tirar aquela dúvida rápida que a documentação oficial não consegue atender. Foi publicado em 2009 pela Apress, então está um pouco desatualizado, mas ainda tem muita utilidade.

O Código fonte do Spring – Gastar horas entendendo como funcionam as vísceras do Spring é um exercício fantástico. Anos atrás acabei por implementar o meu próprio container assim, e repetir a experiência foi muito gratificante.

Concluindo

Estes foram os textos mais importantes que usei na escrita do livro. Como mencionei, foi um processo muito enriquecedor, e aconselho a qualquer um este tipo de pesquisa bibliográfica sempre que desejamos nos aprofundar em algum tema. Torço para que vocês gostem da “síntese” gerada após este trabalho.

17 thoughts on “Bibliografia Spring comentada

  1. Excelente punhado de links! De todos, só li até agora o do Martin Fowler sobre injeção de dependências… o resto já está no Instapaper, já que, embora não estude Java e suas tecnologias no tempo livre, boas técnicas se aplicam a qualquer linguagem.

    Curiosidade: não vejo muito as comunidades ruby e python comentando *explicitamente* sobre inversão de controle, no entanto, é comum encontrar códigos com esse tipo de característica, especialmente em bases orientadas a teste.

    Responda

    Kico (Henrique Lobo Weissmann) Reply:

    Que bom que gostou, valeu!

    Sabe, o grande lance do Spring pra mim é que conforme a gente se aprofunda nele, ele vai nos disciplinando, e conceitos como alto acoplamento, injeção de dependências, boa modularidade, padrões de projetos e muitos outros vão entrando no nosso dia a dia. Então sempre vale à pena estudar um pouquinho sobre ele, mesmo que você programe em qualquer outra coisa que não Java.

    Sobre injeção de dependências fora do Java, vi ontem um vídeo massa sobre Zend Framework em que o mesmo conceito é aplicado a PHP: http://www.youtube.com/watch?v=MwtklEhCdbY

    Responda

  2. Parabéns pelo trabalho, Kiko! Enriquecedor é ter um profissional dedicado e apaixonado pela nossa área como colega de trabalho!

    Responda

    Kico (Henrique Lobo Weissmann) Reply:

    Opa, valeu Matheus!

    Responda

  3. Parabéns!! Mandou ótimas recomendações.

    Sucesso com o livro! =)

    Responda

    Kico (Henrique Lobo Weissmann) Reply:

    Que bom que gostou, valeu!

    Responda

  4. Vem algum de Groovy/Grails por aí?

    Responda

    Kico (Henrique Lobo Weissmann) Reply:

    Pode apostar, inclusive já iniciei a pesquisa bibliográfica. :)

    Responda

  5. Nossa, Kiko, que bacana. Eu não estava sabendo que você estava escrevendo esse livro. Se o Adriano Almeida ou o Próprio Paulo tivessem me falado eu já teria feito uma pré-propaganda quando estive brincando de vendedora no Agile Brasil.

    Parabéns. Eu ando meio afastada do mundo Java/Grails nos últimos tempos, mas farei questão de comprar e ler esse livro para aprender com o senhor :) e me sinto na obrigação de voltar ao mundo Java/Grails com força total.

    Somente grandes nomes no Brasil são chamados para escrever na Casa do Código, fico feliz com a qualidade deles.

    E novamente parabéns :)

    Responda

    Kico (Henrique Lobo Weissmann) Reply:

    Opa, valeu Mayumi!
    Foi um segredo até o dia 11 de setembro deste ano, quando saiu o Beta. De lá pra cá tentei manter o sigilo porque meu foco estava só na finalização do trabalho.
    Agora tá na fase de revisão, e se tudo der certo a versão final já deve estar pra sair. :)

    E para de me chamar de Senhor que assim você me envelhece! Uah! ha ha ha ha ha ha! :D

    Responda

Leave a Reply

Your email address will not be published. Required fields are marked *