Grails:下一代Java Web开发框架

5,272 views

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,272
On SlideShare
0
From Embeds
0
Number of Embeds
611
Actions
Shares
0
Downloads
80
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Grails:下一代Java Web开发框架

  1. 1. 胡键<br />Grails:下一代Java Web开发框架<br />
  2. 2. Java Web开发者之惑<br />选择太多<br />Struts、WebWork、Struts2、Tapestry、GWT、Wicket、Spring、My Face……<br />
  3. 3. Java Web开发者之惑<br />开发低效:<br />配置文件多、语法繁琐(XML)<br />常见功能仍需大量手工操作<br />安全、国际化、Layout、过滤器/拦截器、验证、URL映射、声明性事务、基本CRUD、ORM、Ajax……<br />Java作为开发语言的低表现力严重地影响开发速度<br />
  4. 4. Java Web开发者之惑<br />缺乏对项目构建过程的直接支持<br />借助外部工具:Ant/Maven/Gradle<br />从头手工编写构建脚本<br />没有统一标准的构建任务框架<br />编译、预处理、打包、测试、部署……<br />外部构建脚本难以直接切入项目构建的生命周期,如:<br />编译前/后<br />对于外部依赖缺乏好的管理<br />
  5. 5. 测试困难,TDD成本太高<br />Spring在这方面有相当大的改进<br />Java Web开发者之惑<br />
  6. 6. 对于Rails的开发者:羡慕、嫉妒、恨!<br />
  7. 7. Grails将终结这一切!<br />
  8. 8. Java领域的Rails<br />一句话介绍Grails<br />
  9. 9. 一站式的开发框架<br />开发、测试、部署,全程命令驱动<br />Grails的优势<br />
  10. 10. 平滑的学习曲线<br />语言:Groovy,最接近Java的动态语言,高表现力,致力于消除Java语言带来的噪音<br />建立于广泛采用的Java工具基础之上:<br />Spring、Hibernate、Sitemesh、Quartz、Spring Security、Shiro、Lucene/Solr……<br />Grails的优势<br />
  11. 11. Grails的优势<br />高生产率<br />Groovy的高表现力<br />CoC消除了80%的配置工作量<br />Scaffolding消除了大量的手工劳动<br />结合自动化脚本可进一步提高工作效率<br />大量企业应用中常见功能的DSL<br />GORM、Job、Action、Validation、i18n、Filter、Interception、Layout、Template、TagLib、GSP……<br />大量可用的Plugin<br />
  12. 12. TDD不再是梦<br />直接支持DDD<br />Web 2.0/REST<br />保护遗留资产<br />其他<br />商业友好的开源许可证:Apache License, 2.0<br />商业公司的支持:VMWare<br />活跃的社区<br />社区快报:This Week in Grails(中文版:Grails每周观察)<br />Grails的优势<br />
  13. 13. Grails的整体架构<br />摘自《 TheDefinitiveGuidetoGrails 》<br />
  14. 14. 安装:下载、解压、设置GRAILS_HOME<br />5分钟的例子:简单的用户CRUD<br />grails create-app user<br />cd user<br />grails create-domain-class user<br />添加User对象的属性:name、address<br />grails generate-all user<br />grails run-app<br />http://localhost:8080/user<br />Grails快速上手<br />
  15. 15. GrailsApp典型目录<br />
  16. 16. Grails剖析<br />M:Domain Class<br />基于Hibernate<br />POGO<br />易于测试<br />运行时动态注入持久化方法:save/list/delete<br />ORM DSL<br />约束:简化验证<br />查询:动态查找器、Criteria DSL、HQL<br />事件&自动时戳<br />锁机制<br />乐观锁(缺省)<br />悲观锁,手工调用lock<br />编程性事务:withTransaction<br />
  17. 17. V:GSP<br />类JSP语法,可直接使用JSP标签<br />GSP标签库<br />内置表现力强大的标签库<br />自定义标签库简单、方便<br />Template<br />Layout<br />Ajax:<g:remote>标签库<br />Grails剖析<br />
  18. 18. Grails剖析<br />C:Controller<br />Action<br />Interceptor<br />before和after<br />设置拦截条件<br />数据绑定<br />Command Object<br />XML & JSON响应<br />典型方法:render、redirect、chain<br />可限制允许访问的HTTP方法<br />内置REST支持<br />内容协商<br />内置对Web Flow的支持<br />
  19. 19. 其他重要组件<br />Service<br />封装涉及多个Domain Class的业务逻辑<br />事务:声明性(缺省)和编程性<br />Filter<br />跨Controller拦截请求<br />3种类型: before、after和afterView<br />URL Mapping<br />自定义URL映射规则<br />Grails剖析<br />
  20. 20. Grails剖析<br />测试<br />支持<br />单元测试<br />集成测试<br />功能测试<br />create-*命令会自动创建测试类<br />运行测试:grails test-app<br />测试完毕将产生测试报告<br />
  21. 21. Grails剖析<br />国际化<br />惯例简化i18n:<br />default.null.message<br />消息保存于Message Bundle:<br />messages(_Locale).properties<br />支持自动切换Locale:<br />Request Header:Accept-Language<br />支持手动切换Locale用于测试:<br />/book/list?lang=es<br />标签库:<g:message><br />
  22. 22. Plugin<br />Grails的主要扩展点<br />可以动态地给类MixIn。<br />Plugin工程 =Grails普通工程 + 描述文件<br />零配置<br />简化功能在不同应用间的共享<br />现有Grails社区的插件(> 600):<br />http://www.grails.org/plugin/category/all<br />Grails剖析<br />
  23. 23. 配置<br />Groovy DSL,语法简洁<br />conf目录<br />环境<br />隔离不同运行环境的配置<br />在不同环境下执行命令: <br />grails [environment] [command name]<br />缺省3个环境:dev、prod和test<br />自动化脚本<br />Grails剖析<br />
  24. 24. 解决Web应用常见安全问题<br />SQL注入:通过Domain Class存取数据<br />DoS:返回少量数据<br />跨站脚本/HTML/URL注入:<br />缺省对页面进行HTML转义<br />内置的链接标签(link、form、createLink、createLinkTo等)为防止代码注入会自动转义。<br />提供了codec,允许在呈现HTML、JavaScript和URL等数据时进行细粒度的转义。<br />Grails应用实践<br />
  25. 25. 按插件组织应用<br />Grails应用实践<br />
  26. 26. 敏捷开发环境:Git + Jenkins + Artifactory<br />Grails应用实践<br />
  27. 27. 测试 & 代码覆盖:<br />Spock<br />Geb<br />Coverage<br />Grails应用实践<br />
  28. 28. 代码质量:CodeNarc<br />Grails应用实践<br />
  29. 29. 数据迁移:Db Migarition<br />Grails应用实践<br />
  30. 30. 浅尝辄止,典型表现:<br />不读文档<br />不去了解Grails的底层支撑技术:<br />JSP/Servlet、Spring、Hibernate……<br />过于复杂的领域模型<br />错误的开发实践:<br />无版本控制、CI、测试……<br />按照静态语言的思路编写程序<br />典型误区<br />
  31. 31. Sky.com<br />Wired.com<br />LinkedIn<br />更多的案例:<br />http://www.grails.org/Success+Stories<br />典型成功案例<br />
  32. 32. Grails的工作趋势<br />
  33. 33. 未来路线图<br />支持多数据源<br />支持多数据源的两阶段提交<br />静态资源管理<br />测试完全支持Spock<br />AST Transformation应用到插件开发中<br />数据迁移<br />OSGi<br />jQuery成为缺省的js库<br />采用Gradle作为构建系统<br />……<br />
  34. 34. Groovy的生态系统<br />除了这些,几乎主流Java开源框架都支持Groovy。<br />其余请参考:http://groovy.codehaus.org/Modules<br />
  35. 35. 值得一提的两个框架<br />
  36. 36. Matt Raible's JVM Web Framework Matrix<br />https://spreadsheets.google.com/pub?key=0AtkkDCT2WDMXdC1HOEtnUHpCejJMbUhGeGJWUmh5dVE&hl=en&output=html<br />
  37. 37. 参考书目<br />
  38. 38. Grails官方站点:http://grails.org<br />Groovy Blogs:http://groovyblogs.org<br />GroovyQ:http://www.groovyq.net<br />参考站点<br />

×