Caelum | Ensino e Inovação - Cursos de Java, Scrum, Ruby on Rails


Vídeo da palestra do JBoss Seam no Falando em Java 2009

Por Ricardo Nakamura em 18/08/09

Estamos disponibilizando uma das palestras do Falando em Java de 2009, e esta é sobre JBoss Seam, um dos frameworks que mais tem ganho popularidade, que tem como seu líder Gavin King, também criador do Hibernate! É uma introdução ao Seam, junto com uma visão sobre seu futuro.

JBoss Seam e WebBeans – Falando em Java 2009 from Caelum on Vimeo.

Aproveitem a palestra que dei junto ao Alessandro Lazarotti, da Red Hat/JBoss Brasil!

  • Share/Bookmark

Falando em Java 2009: eu fui!

Por Guilherme Silveira em 27/05/09

Falando em Java 2009 Este domingo aconteceu o Falando em Java 2009 com mais de 500 participantes, evento que nesta terceira edição trouxe o inglês Jim Webber, arquiteto global e diretor de serviços profissionais da ThoughtWorks. Jim falou de SOA e integração e encerrou o evento dando detalhes técnicos sobre restful webservices.

O próprio Jim postou a respeito do evento aqui, e suas palestras podem ser vistas neste link (Falando em Java Keynote e Caelum Tech Talk). Jim demonstrou-se um exímio palestrante, e foi o destaque do evento. Ele também participou de nosso evento interno, o Caelum Tech Day, que ocorreu na sexta feira dentro da empresa.


_MG_8950 _MG_8973
_MG_8962 _MG_9010

Tivemos importantes anúncios, como o livro de Arquitetura e Design de Software: uma visão sobre a plataforma Java, a futura Caelum Brasília, o novo curso de Flex em parceria com a pioneira DClick, além do estágio avançado do desenvolvimento do VRaptor3.

Já existe um post no GUJ discutindo como foi o evento e lá você pode deixar a sua opinião. Há também muitos posts em blogs comentando, criticando, elogiando e dando sugestões em relação ao evento, por enquanto temos nos seguintes blogs: Loiane Groner, Rafael Carneiro, Paulo Jeveaux,Alberto Leal, Alberto Souza, Eduardo Bregaida, André Pantalião e Rodrigo Ribeiro, Marcelo Madeira, Natanael Pantoja, Celso Martins, Valdemar Jr, Leandro silva, Rodrigo Lazoti, no blog da Go Now e da BlueEye

Confira também como foi o evento em 2007 e em 2008! Agradecemos aos nossos patrocinadores: a Globo.com, o grupo JBoss e a Locaweb. Agradecemos a todos vocês pela presença, e ficamos na certa de realizar o próximo evento ainda melhor, baseado na experiência e feedback de todos vocês!

  • Share/Bookmark

Falando em Java 2009: inscrições abertas

Por Sérgio Lopes em 14/04/09

Falando em Java 2009Estão abertas as inscrições para o evento Falando em Java 2009. O já consolidado evento organizado pela Caelum chega a sua terceira edição esse ano com duas atrações internacionais e palestras de alto nível. E o evento desse ano promete superar o sucesso de anos anteriores.

Jim Webber, diretor da ThoughtWorks, apresentará a palestra Guerrilha SOA. E Bill Burke, arquiteto da JBoss/RedHat e participante da JSR 311 do JAX-RS, apresentará Web Services Restful: Putting Java to REST. Além disso, contaremos com os instrutores e consultores da Caelum em palestras sobre Arquitetura, Plataforma Java, JavaTV, VRaptor 3 e JBoss Seam (essa última com participação de Alessandro Lazarotti, da RedHat Brasil). Veja a grade completa.

  • Share/Bookmark

Domain-Driven Design no Falando em Java 2008

Por Sérgio Lopes em 26/05/08


No Falando em Java 2008, apresentei uma palestra introdutória sobre Domain-Driven Design. Apesar do tempo curto, os comentários foram ótimos! Muito obrigado a todos os que comentaram: pessoas no evento, blogs e GUJ. Falar de DDD em 40 min foi meu maior desafio e acabou faltando um pouquinho de tempo no final, mas deu para passar a mensagem.

Domain e Ubiquitous Language

O ponto fundamental do DDD é o primeiro D, o Domain. Tudo gira em torno desse tal de Domínio. O domínio é, em poucas palavras, o problema que queremos resolver com o programa que estamos desenvolvendo. Alguém (um cliente) tem um problema na área de atuação dele (geralmente nada a ver com informática) e contrata uma equipe de programação para ajudá-lo (nós :) .

Segundo o DDD, é impossível resolver esse problema satisfatoriamente sem entender direito o que acontece no domínio do cliente. Não basta os desenvolvedores saberem mais ou menos: é necessário entrar fundo no domínio do cliente.

Mas é claro que nosso objetivo não é se tornar um especialista completo na área do cliente, mas apenas compreendê-la. A palavra-chave para isso acontecer é Conversa. Conversa constante e profunda entre os especialistas de domínio e os desenvolvedores.

Aqueles que conhecem o domínio em detalhes devem conversar com aqueles que conhecem programação em detalhes. Juntos, tentarão chegar a uma língua comum em que todos consigam se entender e que será usada em todas as conversas. É o que o DDD chama de Ubiquitous Language: uma língua baseada nos termos do domínio, não totalmente aprofundada neste, mas suficiente para descrever o problema satisfatoriamente.

Construção do Domain Model

Durante a conversa constante, todos juntos chegarão a um consenso sobre o Domínio. Os especialistas de domínio eventualmente criarão simplificações para facilitar a conversa; e os desenvolvedores podem introduzir conceitos técnicos simples.

Com isso, todos criam um modelo do domínio. É uma abstração do problema real, desenvolvida em conjuntos pelos especialistas do domínio e desenvolvedores. No DDD, é chamado de Domain Model.

É esse modelo que os desenvolvedores vão implementar em código. Literalmente. Item por item, como foi acordado por todos. Será desenvolvido um código limpo, com palavras do domínio, que representa, na programação, o domínio em discussão.
Foto do Sérgio no FJ2008
Usando DDD, seu programa orientado a objetos deve expressar a riqueza do domain model. Qualquer mudança no modelo (e, acredite, isso é muito comum) deve ser refletida imediatamente no código. Se algo do modelo torna-se inviável de se implementar tecnicamente, não se faz um “ajustezinho” no código; o modelo deve ser mudado para ser mais fácil de se implementar.

Ou seja, sempre seu código será expressão do modelo, que por sua vez é baseado totalmente no domínio.

Implementando o Domain Model

O DDD define uma série de patterns para facilitar a implementação do modelo em código. Mas, com absoluta certeza, esse não é o ponto principal do DDD. São apenas ferramentas que facilitam essa implementação.

Na palestra, mostrei alguns patterns de forma bem simples e rápida, como Entity e Value Object. E mostrei o tão discutido, debatido e mal-compreendido Repository.

O cliente descreve ao desenvolvedor o seguinte problema: “preciso saber todos os peixes que são da cor azul”. (na palestra, usei o exemplo de uma loja de peixes) Para o cliente, é natural em seu domínio, que se consiga “buscar” coisas. A idéia é recuperar “objetos” do domínio (entities) previamente conhecidos, baseado eventualmente em algum critério.

A noção de repositório surge justo dessa necessidade: chegar nos objetos de conhecimento do domínio. Na palestra, eu levantei a questão de que o nome repositório não deve ser algo interno ao código, mas deve fazer parte da Ubiquitous Language, deve aparecer nas conversas e no Domain Model. Ou seja, repositório deve ser um conceito que o especialista de domínio também entende e, por que está no Model, é ele que vai para o código.

Não há problema em trazer palavriado técnico para a Ubiquitous Language, desde que o príncipio da UL seja mantida: todos entendem o conceito. E, se, eventualmente, no contexto do domínio sendo tratado, outro nome faça mais sentido que repositório, esse nome deve ser usado (mesmo que nós técnicos saibamos que no fundo aquilo é um repositório).

Repositório como interface? Classe concreta delegando? DAO implementa Repository?
Tanto faz. Um outro ponto fundamental do DDD é: nada tem resposta definitiva. Se você entende a questão toda do Domain Model e aplica essa noção na programação, pode usar diversas formas diferentes de implementar tudo isso.

Na palestra, eu representei o Repository como uma interface dentro do Model. E a implementação (que, do ponto de vista do DDD, não importa) era um DAO com Hibernate na camada de infraestrutura.

Concluindo

Meu ponto principal na palestra foi mostrar a Ubiquitous Language e o Domain Model, que são o coração do DDD. Vou escrever um segundo artigo com códigos e mais comentários da palestra, mas paro esse artigo gigante por aqui.

Termino linkando para um excelente post do Philip Calçado que ele publicou essa semana (parece até que combinamos) sobre DDD falando justo que o que conta no DDD é o Domínio e não os Patterns. Ele conta uma historinha de um projeto onde todos “entendiam” DDD, usavam Repositórios, Entities etc, mas infelizmente não falavam a mesma língua do domínio.

  • Share/Bookmark

Falando em Java 2008, eu fui!

Por Paulo Silveira em 20/05/08

Este domingo aconteceu o Falando em Java 2008, evento organizado pela Caelum e que nessa segunda edição trouxe Emmanuel Bernard. Emmanuel é um francês que já vive há dois anos em Atlanta, e é líder de diversos projetos do Hibernate: a implementação da JPA, o Hibernate Annotations, o Hibernate Search e o Hibernate Validator, além de ser líder da especificação de Beans Validation e participar do expert group da JPA2.0.

Os 295 participantes desta edição lotaram o anfiteatro do colégio Arquidiocesano em São Paulo!


falando em java  - 004 falando em java  - 083
falando em java  - 077 falando em java  - 181
DSC00272 falando em java  - 215

Já existem diversos comentários e posts sobre o evento pipocando por aí:

O evento até gerou uma interessante discussão sobre Rails e JRuby:
http://www.guj.com.br/posts/list/91312.java

Fica aqui o agradecimento ao Emmanuel Bernard, que se revelou extremamente simpático e solícito, indo conosco comer picanha, ao samba, a feira aberta e experimentado todo tipo de comida. Também um obrigado a todos vocês participantes e a toda equipe da Caelum, que batalhou muito pela realização dessa segunda edição do evento. Em breve teremos posts sobre cada um dos assuntos abordados nas palestras, junto com os slides e comentários!

  • Share/Bookmark



Caelum | Ensino e Inovação
São Paulo: Rua Vergueiro, 3185, cj. 87, próximo ao Metrô Vila Mariana   |   Tel. (11) 5571-2751
Rio de Janeiro: Rua Senador Dantas, 80, cj. 307/308 - Centro   |   Tel. (21) 2220-4156 ou 2297-0033
Brasília: SCS Qd. 8 Bl. B-50, Sala 521 - Ed. Venâncio 2000   |   Tel. (61) 3039-4222