资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2021-01-14,#,JAVA,开发人员的圣杯,JAVA开发人员的圣杯,Java,的困惑,对于在,Java,领域中开发的,web,程序员来说,一直梦想有个无须太多配置的,Web,应用框架,能够帮助我们直接来完成业务逻辑的处理,而无须了解太多堆积如山的配置文件。,J2EE,规范,繁琐的配置,耗时的环境,可移植性差,资源占用大,Java的困惑对于在Java领域中开发的web程序员来说,,开源社区的贡献,开源社区的贡献,JAVA,开发的痛苦,为什么选择,JAVA,达到了无可比拟的成熟度及工业支持,应用服务器稳定且可扩展的管理环境,先进的部署能力,成熟的安全管理,以及,web,服务,丰富的开源库,JAVA,开发人员的痛苦,大量的时间浪费在配置、构建和部署上,JAVA开发的痛苦为什么选择JAVA,动态语言的兴起,动态语言(,ruby,和,Python,),借助,Ruby on Rails,、,Django,逐渐流行,Convention Over Configuration,动态语言的兴起动态语言(ruby 和 Python),脚本语言的缺陷,缺少面向对象的特点,存在性能、可伸缩性能、以及集成等问题,不适应大型项目中,现在这些缺点都一一得到了解决。而且动态虚拟机,(VM),也越来越成熟。,脚本语言的缺陷缺少面向对象的特点,互惠互利,脚本语言不会代替系统编程语言,它们是互补的,系统语言是强类型的、脚本语言是弱类型的,脚本语言具有更好的表示能力,能够提供更高的抽象等级。,脚本语言用于把应用程序集成起来,而不是实现复杂的数据结构和算法,互惠互利脚本语言不会代替系统编程语言,它们是互补的,Are You Groovy,Groovy,是一种创新语言,能够自然地通过相同,虚拟机的,Java,环境进行交互,完全面向对象的,使用简练、易于理解的类似,JAVA,的语法,与,JAVA,无缝集,能最大限度的混合,JAVA,代码,是目前增强,Java,平台的唯一脚本语言,支持元编程,内置,Map,、,List,方法、类,Closure,Are You GroovyGroovy 是一种创新语言,能,Groovy Travel,Groovy,Java,println “Hello Groovy!”,public class HelloGroovy,public static void main(String args),System.out.println(“Hello Groovy”);,Groovy TravelGroovyJavaprintln,Groovy Travel,Groovy,Java,9.timesprint 8,for (int i = 0; i 4; -i) ,System.out.print(8);,Sunday , Saturday , Wednesday.each,day - println Today is $day,Groovy TravelGroovyJava9.times,Groovy Travel,Groovy,Java,List=100,888,783,for(i in list)print i,Sunday , Saturday , Wednesday.each,day - println Today is $day,List list = new ArrayList();,list.add(new Integer(100);,list.add(new Integer(888);,list.add(new Integer(783);,For(int i=0;ilist.size();i+),System.out.print(list.get(i),Groovy TravelGroovyJavaList=1,Groovy Closure,是一种可执行代码块的方法,对象,可以像方法一样传递,可以在需要的时候执行,可以访问属性信息(可以使用并修改其作用域的所有变量值),Groovy Closure是一种可执行代码块的方法,Groovy Closure,def clos = param = println “Hello $praam”,clos.all(Sonic),clos(railscn.org),结果为:,Hello Sonic,Hello railscn.org,Groovy Closuredef clos = par,Groovy Class,class User,def name,def old,def create(),def delete(id),Groovy Classclass User,Grails,之旅,Grails,形成与,2005,年夏天,一小撮,Groovy Fans,组织起来使用,Groovy,开发了一个动态框架,并按照,Ruby on Rails,将其命名为,Groovy on Rails,Grails,的目标是,超越其他语言在,web,领域的框架。,Grails 之旅Grails 形成与2005年夏天,一小撮,Grails,之旅,Grails,主要集中在,与,JAVA,平台紧密集成,提供简单的接口,同时保持调用底层,JAVA,框架的灵活性及特性,改进,JAVA,平台已有的缺点,Grails 之旅Grails 主要集中在,Grails,之旅,Grails,基于开源技术,,Spring Hibernate,和,SiteMesh,“规约编程”(,Coding By Convention,),隐藏了这些框架的大多数底层复杂性,Grails 之旅Grails基于开源技术,Spring H,Grails,之旅,由视图(,Views,- gsp,)和控制器,(,Controller,),组成的,Web,层,2.,由域类,(,Domain,model),和服务,(,Services,),组成的,业务逻辑层,3.,由域类,(Domain model),和数据源,(Data Source),组成的,持久层,Grails 之旅由视图(Views - gsp)和控制,Grails,之旅,Domain model,表名,= model name,字段名,=,属性名称,熟悉,“maxRunners“,对应字段,max_runners“,字段,id,是整个表的主键 ,是自增长的。,主表,Race ,从表外键,race_id,Domain,DataBase,class Bookmark ,URL url,String title,String notes,Date dateCreated,Id,url,title,notes,date_created,1,2,Grails 之旅,Grails,之旅,grails create-controller,bookmark,Controller,添加约束,class BookmarkController,def scaffold = Bookmark,/Bookmark = Bookmark.class,class Bookmark,.,static constraints = ,url (,url:true,),title(blank:false),Grails 之旅grails create-control,Grails,之旅,GORM,一对多、多对一、一对一、多对多,Controller,class Bookmark ,URL url,String title,String notes,Date dateCreated,static hasMany = tags:Tag,class Tag ,static belongsTo = Bookmark,Bookmark bookmark,String name,Grails 之旅GORM 一对多、多对一、一对一、多对多,Grails,之旅,在,Grails,规约里,,URL,的每个部分都扮演着重要的角色,这种规约的路线把我们从编写,URL,、控制器和视图的外部绑定配置文件中解放出来了,Grails 之旅在Grails规约里,URL的每个部分都扮,Grails,之旅,Grails,的,Views,是,gsp,和,jsp,没有很大区别,只是,gsp,里面用,grails,的标签。如,Gpath,表达式、,Bean,符号和可重载的操作符、对于正则表达式和,GString,、,Map,、,List,的支持。,Grails 之旅Grails的Views是gsp,Grails,的学习之路,你选择哪一个,Grails 的学习之路你选择哪一个,Groovy,vs,JRuby,他们最大区别在于平台策略:,Groovy,尽量和,Java,保持一致性,不提供自己的类库,直接使用,Java,类库,而,JRuby,目标在跨多个运行平台的一致性,能够运行在操作系统,Ruby,解析器,,JVM,和,.net,平台上面。,Groovy vs JRuby他们最大区别在于平台策略:,Grails,的一些误解,Grails,还不够成熟,我想不断增长的商业网站数量就是最好的答案了。同时,,Grails,也是基于,HIbernate,、,Spring,和,SiteMesh,这些成熟完善的框架构建的,更不用说作为万年常青树的,Java JDK,了。,Groovy,项目都已经有超过三年的历史了。,Grails,使用的是一门解释型语言(,Groovy,),Groovy,在运行时自动编译成,Java,虚拟机字节码,它绝绝对对彻彻底底不是一门解释型语言。,Grails,是否只是,Rails,的一个克隆产物,Ruby on Rails,引入了不少非常好的主意,并将它们合为一体。,Grails,将其中的一部分应用到了,Groovy/Java,的世界中,但加入了许多,Ruby,中并不存在的特性和概念,所有这些东西都是以一种对,Groovy,和,Java,程序员有意义的方式展现给他们的。,Grails的一些误解Grails还不够成熟,Grails,的一些误解,在我们有了,JRuby on Rails,之后,谁还要,Grails,呢?”:,这个问题很有代表性,也是对“,Grails,到底是什么”最大的误解之一的根本所在。,JRuby on Rails,是让,Rails,运行在像,GlassFish,这样的,Java EE,容器上非常优秀的方式之一,就是这样而已。但,Grails,的目标却大为迥异,它并不是,Rails,在,Groovy,语言上的一个移植版本,而是将业界内最为强悍的组件(比如说,Spring,、,Hibernate,、,Quartz,、,Compass,和,SiteMesh,等)以最佳方式组合起来的一个实践,并通过采纳无配置规约(,Convention-over-Configuration,,,CoC,),使它们符合“不重复(,Dont Repeat Yourself,,,DRY,)”,原则。,我们并不是在重造轮子,而且由于,Grails,内核的绝大部分都是以,Java,编写的,它也显得更加强壮和稳定。事实上,从内核角度看,Grails,是一个,Spring MVC,应用,可以被部署到所有的主流容器之上,不仅仅只有,Glasshfish,,还有大型商业容器,比如说,WebLogic,、,WebSphere,和,Oracle AS,。,Grails的一些误解在我们有了JRuby on Rails,Grails,比,Rails,更适用于企业应用,Grails,Rails,原因很多,最显著的两个原因就是,Spring,和,Hibernate,。到目前为止,有不计其数的组织在采用,Spring,和,HIbernate,,他们都有既有的,Spring,上下文环境,以及已经构造好的,Hibernate,领域对象等。,Grails,的目的就是为了让它和这些框架尽可能无缝地整合起来。因此,你可以把一个用,Java,编写的,Hibernate,领域模型及其对应的配置文件直接扔进,Grails,应用中,然后就可以使用动态的查询方法,并且直接使用,GORM,了。,Rails,几乎是按照和,EJB2,一样的方式设计的,也就是说,你在扩展,ActiveController,和,ActiveRecord,等框架对象时,你也就被绑定在了这套框架上。在,Rails,里面根本就不存在领域模型的说法,,Rails,的模型就是数据库表。这当然是一件好事了,但在企业内部,同一个领域模型可能会在许多不同的应用中服用,比如说桌面应用和,Web,应用。在,Java,里,这实际上是非常成熟完善的,通过把类对象及相应映射文件打包成一个,JAR,文件即可。,Grails比Rails更适用于企业应用 Grail,一起学习,一起学习,投入多一点,方法好一点,绩效自然高一点。,11月-24,11月-24,Sunday, November 24, 2024,未来的成功属于质量领先者。,14:06:45,14:06:45,14:06,11/24/2024 2:06:45 PM,若要产品好,个人品质要提高。,11月-24,14:06:45,14:06,Nov-24,24-Nov-24,老毛病,要根治。小问题,要重视。,14:06:45,14:06:45,14:06,Sunday, November 24, 2024,管理基础打得牢安全大厦层层高。,11月-24,11月-24,14:06:45,14:06:45,November 24, 2024,宁愿事前检查,不可事后修改。,2024年11月24日,2:06 下午,11月-24,11月-24,搞好安全有责任,永为国家做贡献。,24 十一月 2024,2:06:45 下午,14:06:45,11月-24,抓好产品质量,必须从我做起。,十一月 24,2:06 下午,11月-24,14:06,November 24, 2024,ISO9000-,主客共享乐在其中。,2024/11/24 14:06:45,14:06:45,24 November 2024,安全第一,人人牢记。,2:06:45 下午,2:06 下午,14:06:45,11月-24,确保质量安全。,11月-24,11月-24,14:06,14:06:45,14:06:45,Nov-24,船到江心补漏迟,事故临头后悔晚。,2024/11/24 14:06:45,Sunday, November 24, 2024,安全在于心细,事故出自大意。,11月-24,2024/11/24 14:06:45,11月-24,谢谢大家!,投入多一点,方法好一点,绩效自然高一点。9月-239月-23,
展开阅读全文