Grails: o que isso quer dizer? Gilliard Cordeiro http://gilliard.eti.br Sobre mim • Formado em análise de sistemas pela UFMS • Trabalho há 5 anos com desenvolvimento Web • Minha principal área de atuação é P&D • Instrutor SENAC/MS • Um dos Coordenadores do JUGMS Onde trabalho • 20 anos de inovação e qualidade A Empresa Há 20 anos estabelecida em Campo Grande – MS conta com 85 colaboradores diretos com experiência comprovada em: – – – – – – Desenvolvimento de sistemas Fábrica de software Comercialização de produtos Assistência técnica Suporte técnico Treinamento e consultoria Premiações da AZ O selo Best Choice representa as melhores soluções avaliadas no Best Choice do ano em questão Prêmio direcionado aos projetos mais inovadores de TI na área pública, de acordo com o julgamento das principais entidades do setor e o reconhecimento do mercado e da sociedade. O Prêmio Excelência em Governo Eletrônico visa incentivar o desenvolvimento eficaz e abrangente de iniciativas de governo eletrônico nos diferentes segmentos da administração pública federal, estadual e municipal Casos de Sucesso Recursos Humanos •85 Funcionários •86% nível Superior •15 Profissionais Certificados (JAVA, DOMINO, DB2, Windows) •Gerente de Projetos •Analista de Sistema •Desenvolvedor •Arquiteto de Software •Administrador •Curso de Inglês •Aula de Dança de Salão •Aniversariante do Mês •Festa Junina •Festa Final de Ano •Happy Hour Mensal •Plano de Saúde •Vale Alimentação A AZ e a Tecnologia •Sistemas desenvolvidos em Java •Arquitetura dividida em camadas •Hibernate /JPA •EJB3 •JSF •JasperReports •JFreeChart •Workflow – Workflow Management Coalition – WfMC. •Eclipse •CVS - Concurrent Versions System •TOMCAT •JBOSS •Sempre buscando usar o que há de novo •Promovendo capacitação para os colaboradores Grails: o que isso que dizer? • Quer dizer muito mais que “Groovy on Rails” • Grails evidencia algumas coisas sobre Java: – Tendência de absorver soluções comprovadamente boas pelo mercado – Diferenciação entre plataforma e linguagem Java O Java de algum tempo atrás • JCP Muito criticado por sua lentidão em acompanhar tendências e por “inventar moda” – Um exemplo clássico é a JDO • Especificações só se for obrigado – Ninguém queria saber de EJB antes da versão 3 a menos que fosse uma obrigação O Java na atualidade • Java tem se baseado muito mais em casos de sucesso – JPA (Hibernate) – WebBeans (Seam) – Grails (RoR) *não é especificação – EJB3 (Spring provou que podia ser mais simples que os EJBs 2.x) – JavaEE 5 e JavaEE 6: foco na produtividade O que é Java? • Parece uma pergunta óbvia mas a resposta pode não ser • Java pode ser duas coisas: linguagem ou plataforma • A linguagem é aquela que escrevemos na nossa IDE • A plataforma é muito mais do que isso... A plataforma Java • O sucesso do Java, e o fato de até hoje ele estar onde está não é pela linguagem parecida com C • Linguagens vem e vão, mas uma plataforma como o Java vai durar por muito tempo A plataforma Java • O grande diferencial do Java é sua JVM • Java possui também o maior “ecossistema” de software da atualidade • Dá segurança para altos investimentos em ambiente corporativo por evoluir respeitando o passado • Executa diversas linguagens Linguagens sobre a JVM • Originalmente a JVM era uma VM para uma linguagem: Java • Hoje temos diversas linguagens na JVM – Groovy – Ruby – Python – Scala Investimento em outras linguagens • Da Vinci Machine: Um projeto que mostra que rodar outras linguagens na JVM não é brincadeira • Instruções de bytecode feitas para serem usadas por outras linguagens, em especial as dinâmicas E o Grails? • O Grails, ou Groovy on Rails é um framework fortemente baseado no Ruby on Rails • O termo “on rails” significa “nos trilhos”, e prove uma stack inteira para desenvolvimento Composição do Grails Grails possui diversos plugins • No site do Grails tem uma lista com diversos plugins para: – Ajax, RichApplication • DWR, GWT, YUI, JQuery, Flex, OpenLaszlo... – Performance – Outros frameworks – etc Grails é Java • Como Grails é Java, e no final temos um WAR padrão, tudo que usamos no Java podemos usar nele: – Lucene, cache de 2º nível no Hibernate (inclusive distribuído) – JSF, Seam, Wicket (e qualquer outro framework Java) – JBPM, JMS, Drools, etc... Comparação com RoR • Os dois frameworks provêem uma stack completa de desenvolvimento • O Grails, influenciado pelo jeito de desenvolver com Hibernate é mais centrado no modelo, enquanto RoR parece mais centrado em banco de dados Comparação com RoR • Grails utiliza a linguagem Groovy, enquanto RoR é Ruby – Para quem veio da escola C, C++ e Java, a sintaxe do Groovy vai parecer mais familiar • Grails tira proveito de todo o “ecossistema” Java; escalável (*JRuby) • Grails no entanto é bem mais jovem Grails além dos CRUD's • O que fazemos com Java, podemos fazer também com Grails • Na sua aplicação real de hoje, provavelmente não tem só CRUD's • Grails já vem com suporte à injeção de dependência e controle transacional de services do Spring Groovy • Linguagem de tipagem dinâmica totalmente baseada no Java • Facilidade de meta-programação • Integração transparente com Java • Implementa diversas facilidades • Exemplo Mão na massa • Sistema de controle de pendências Crescimento do Grails • No último ano os downloads do Grails passaram de 7.000 para 70.000 por mês • No dia 11/11/2008, a SpringSource adquiriu a G2One, que é a empresa que mantém o Groovy e o Grails, e além de investir no desenvolvimento dessas tecnologias, oferecerá também suporte pago à essas ferramentas, assim como a JBoss já faz com seus produtos • Com isso espera-se que o meio corporativo, e até a comunidade, perceba que essas são tecnologias sérias e confiáveis, fazendo o Grails crescer e melhorar cada vez mais Recapitulando • Diferença entre plataforma e linguagem Java • O que é Groovy • A idéia do Grails vem do Ruby on Rails? • Dá para usar grails em um sistema de verdade? • Grails: o que isso quer dizer? Perguntas? • Você pode saber mais também aqui – http://groups.google.com/group/jug-ms – http://jugms.com.br Obrigado Gilliard Cordeiro http://gilliard.eti.br [email protected] Referências • Alguns links para consulta posterior – http://grails.org/ – http://groovy.codehaus.org/ – http://www.springframework.org/ – http://www.hibernate.org/ – http://www.opensymphony.com/sitemesh/