O slideshow foi denunciado.
Seu SlideShare está sendo baixado. ×

Da água pro vinho, o caminho do desenvolvimento web Java

Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Anúncio
Carregando em…3
×

Confira estes a seguir

1 de 31 Anúncio

Mais Conteúdo rRelacionado

Quem viu também gostou (19)

Semelhante a Da água pro vinho, o caminho do desenvolvimento web Java (20)

Anúncio

Mais de Bruno Luiz Pereira da Silva (8)

Mais recentes (20)

Anúncio

Da água pro vinho, o caminho do desenvolvimento web Java

  1. 1. Da água ao vinho o caminho do desenvolvimento web Bruno Pereira
  2. 2. Palestrante <ul><li>Desenvolvedor sênior – Concrete Solutions
  3. 3. 7 anos de experiência com Java
  4. 4. 8 anos de experiência com web
  5. 5. Um dos pioneiros em REST no Brasil </li></ul>
  6. 6. BP do Bem
  7. 13. Escalabilidade
  8. 14. Clean Code
  9. 15. Testing
  10. 16. Action-based x Component-based
  11. 17. Powered by Java 5
  12. 18. @ Resource public class ProcessoController { private ProcessoDAO dao; private Result result; public ProcessoController(ProcessoDAO dao, Result result) { this.dao = dao; this.result = result; } @ Get @ Path (&quot; /processo/index &quot;) public List<Processo> index() { return dao.buscarTodos(); } }
  13. 19. @ Post @ Path (&quot; /processo &quot;) public void cadastro(Processo processo) { dao.salvar(processo); result.use(Results. json() ). from (processo) . serialize (); } @ Get @ Path (&quot; /processo/{processo.id} &quot;) public void buscar(Processo processo) { processo = dao.buscar(processo.getId()); if (processo != null) { result.use(Results. xml() ). from (processo) . serialize (); } else { result.use( Status .class). notFound (); } }
  14. 20. MockResult result = new MockResult(); ClienteController controller = new ClienteController(..., result); controller. list (); List<Client> clients = result. included (&quot;clients&quot;); //cast automático Assert.assertNotNull(clients);
  15. 21. /articles/archive? date =08/01/08& page =2 public static void archive(Date date , Integer page ){ List<Article> articles = Articles.fromArchive( date , page ); render(articles); } public static void show (Long id) { Article article = Article.findById(id); render(article); } public static void edit (Long id, String title) { Article article = Article.findById(id); article.title = title; article.save(); show (id); // redirect to show }
  16. 22. // Templates Article article = Article.findById(id); User user = User.getConnected(); render( article , user ); // JPA public void messages(int page) { User connectedUser = User.find(&quot;byEmail&quot;, connected()); List<Message> messages = Message. find ( &quot;user = ? and read = false order by date desc&quot;, connectedUser). from (page * 10). fetch (10); render (connectedUser, messages); }
  17. 23. Java EE 6 <ul><li>Separação em profiles
  18. 24. IoC + ampla
  19. 25. Criteria
  20. 26. JSR-311
  21. 27. Async Servlets
  22. 28. POJOs. </li></ul>
  23. 30. Selectors/ Traversing $('div #corpo div .destaque ') $(' /html/body//p ') $('p :eq(0) ') $('div :even ') $('div :has(p) ') $('span#description'). prev() $('div#disclaimer'). find('li')
  24. 31. Events/ Manipulation $('input:submit'). click(function() { $(this). attr ('disabled', 'disabled'); }); $('p'). mouseover(function() { $(this). css ('cursor', 'pointer'); });
  25. 32. Page Speed
  26. 33. YSlow
  27. 34. Java in the Enterprise
  28. 39. Contato twitter.com/blpsilva http://brunopereira.org [email_address]

Notas do Editor

  • - CGIs invocavam aplicações dentro da máquina, passando valores através de variáveis de ambiente - Servlets inovaram ao passar a usar threads p/ request em vez de criar novos processos
  • DRY CoC Frameworks de persistência integrados REST Linguagens de tipagem dinâmica Foco no código
  • - Web server embutido - Scaffold - Gerador de CRUD c/ Ajax - CoC - É a opção com mais sucesso comercial - Forte comunidade no Brasil e no mundo - Excelentes ferramentas para TDD/BDD - Tem feito excelente uso da plataforma Java, reduzindo drasticamente as questões de escalabilidade
  • - Semelhante a RoR em muitos aspectos. - Framework for perfectionists with deadlines - Criado para atender com qualidade aos prazos curtos de um ambiente editorial muito dinâmico - Geração de um Admin de conteúdo muito poderoso, que poupa muito tempo de desenvolvimento - Framework Python - Enorme comunidade, muito ativa
  • - Mto semelhante a RoR, mas ideal para devs que vieram de Java e querem aproveitar skills - Feito em Groovy, sobre Spring, Hibernate e Sitemesh. - Oferece os enormes benefícios de Spring/Hibernate de forma bem menos complexa, mas sem tirar o poder. - É a opção de mais fácil integração com Java - Gera WAR padrão Java - Comunidade bem menor do que Django e Rails - Será que tem futuro dentro da VMWare?
  • Threads em vez de processos Enorme evolução da JVM NIO: IO não bloqueante C10k Comets
  • Attribute-oriented programming Annotations + generics CoC IoC POJOs x Herança + Interfaces ↑ Código ↓ Ferramentas
  • Testes fora do container IoC TDD, BDD Containers cada vez mais leves Testes de controllers do VRaptor
  • CB são adequados p/ aplicações RIA, não sites AB cada vez mais RESTFul Stateless x Stateful Nível diferente de controle de JS O futuro é RESTFul!
  • - Linguagem com características OO e funcionais - Vista como sucessora natural de Java, embora provavelmente não vejamos uma opção com a adoção de Java - Estaticamente tipada - 2 a 3x menos código comparando com Java - Lift roda em qualquer servlet container 2.4+ Java. Podemos usar qualquer lib Java. - Comets, XML, JSON, JPA

×