同行有使用php的,可以灵敏的根据市场需求进行变化,在一定程度上,对于市场反应速度我个人认为优越于我们公司的现有的Struts+Sping+Hibernate的开发框架的。但是我们这套“重”框架相对来说却能做出在数据统计、运作上更加稳定和强大的功能。
究竟有没有一种方法把脚本的快速开发的特性和Java的功能强大结合起来的呢?当时找了不少shell脚本语言,从最早的perl到最为人熟知的JavaScript,从BSF看到Ruby Of Rails,从JRuby看到python,基本让我把资料都翻了,着重看了Bean Scritp Framwork的介绍和JavaScript、Groovy、Ruby的资料,最后被Groovy的资料介绍吸引了。当时的第一感觉就是这个语言很符合我的需求。
当时就在几天之内用groovy建一套游戏引擎——注意有一点,我希望的一个特性是这个脚本语言写出来的对象是可以继承的!但是经过实践,我错了!groovy的对象如果可以继承的话,要求被继承对象是已经被编译的,而不是我想象的我完全“脚本化”,举例说明,父类如下:
java 代码
- class Parent {
- String name
- int score
- int level
- }
这里我写一个子类继承Parent:
java 代码
- class Children extends {
- boolean isNpc
- int condition
-
- static void main(String [] args){
- def child = new Children(name: "Test Npc",score:0,level:0,isNpc : true,condition : 13 )
-
- }
- }
这套代码如果你单纯用Groovy Children.groovy 是不能执行的,而必须先用groovyc去编译好了Parent后,再把Parent$.class的路径用在执行时的环境中去。
这样如果我的Parent需要改变时,导致应用不得不重新启动、加载,并没有达到让业务不间断运行的要求。就是说Groovy的“脚本动态”的层次只能停留在最高层的那个类。那个类无论你怎么改,确实是即改即生效。
所以,Groovy在这方面需要改进:让父类同样动态脚本化!
(也许是我方法不对,如果有朋友对此有不同意见,请留言交流)
分享到:
相关推荐
《Server Metaprogramming Ruby-Pyton-Groovy-Haskell-Erlang.pdf》这本书不仅介绍了元编程的基本概念,还深入探讨了五种具有代表性的动态语言在服务器端元编程方面的应用,并通过《Beyond Java》一书提供了对未来...
它不仅美观,而且易于定制,使用户能够根据自己的需求和喜好打造一个既舒适又个性化的操作环境。无论你是追求时尚潮流,还是希望桌面环境更符合个人品味,Groovy Orange Theme都是一个值得尝试的选择。
因此,他提出了一个问题:“我们能否利用Groovy以及Spring和Hibernate等成熟技术,在不牺牲现有投资的情况下,将‘约定优于配置’的原则引入Java平台呢?” 这一想法最终促成了Grails的诞生。Grails是一个Apache...
从技术上讲,这不是符号链接,但是当尝试从多个位置引用同一文件时,它的行为就像一个链接。 该插件创建两个任务: s3上传 顾名思义,s3Upload任务可用于将本地文件上传到具有给定键名的存储桶。 s3下载 同样,...
为了解决这一问题,开发者社区提出了一个开源项目——"Gradle plugin to optimize png files",这是一个专门针对PNG文件进行优化的Gradle插件。 Gradle是Android开发中常用的构建工具,它允许开发者通过编写Groovy...
Vert.x是一个多语言的事件驱动平台,它允许开发者使用Java、JavaScript、Ruby、Python、Groovy、Clojure、Ceylon等多种语言进行开发。这一特性使得开发者可以根据项目需求选择最适合的语言,同时利用各语言丰富的库...
ViewPagerAnimator是Android平台上一个高效且功能丰富的库,专门用于为ViewPager添加各种动画效果。它提供了一种简单的方式来增强用户在浏览页面间的交互体验,通过自定义动画使应用界面更加生动有趣。这个库尤其...
- **背景**: Grails是一个基于Groovy语言的开源Web应用框架,适用于Java平台。它旨在简化开发过程,提高开发效率,尤其受到那些希望保留Java环境同时寻求更高效开发方式的开发者的欢迎。 - **特点**: - **规约重于...
在Android开发中,加载动画是提升用户体验的重要组成部分,尤其是在数据加载、网络请求或者长时间运算时,一个美观且吸引人的加载动画能有效缓解用户的等待焦虑。Android-SpinKit就是这样一款开源项目,它为Android...
- **灵活性**:通过Groovy语言编写构建脚本,使得构建过程更加灵活,能够更好地适应复杂的构建需求。 #### 二、构建工具的概念与演变 构建工具的核心任务是根据给定的指令和规则,将源代码转化为最终的产品。这一...
作为一个嵌入式、事务性的数据库,HyperGraphDB旨在为高度复杂、大规模的知识表示应用场景提供一个通用的数据模型,如人工智能、生物信息学和自然语言处理等领域。 #### 关键技术特点 - **广义超图模型**:...
到了2017年,Spring 5.0发布,进一步加强了对Java 9和Reactive Streams的支持,同时推出了Spring WebFlux,这是一个全新的响应式Web框架。 **Spring的优势** 1. **简单易用**:Spring通过依赖注入和面向接口编程,...
- **对JDBC标准接口的封装**:包括`DataSource`、`Connection`、`Statement`、`PreparedStatement`等接口,并提供一个一对多的管理容器,用于管理多个通过JDBC建立的资源。 - **SQL执行**:根据规则引擎生成的目标库...
iReport有一个活跃的用户社区,用户可以在论坛上分享经验、提出问题并获得解答,获取最新的更新和插件,以及参与到项目的开发中去。 **4. 入门步骤** - **必要条件**:确保拥有Java运行环境(JRE)以及兼容的Java...
最后,Spring框架对Java企业级应用程序开发的支持非常全面,提供了使用JVM上的多种语言(例如Groovy和Kotlin)的支持,并能够根据应用程序需求灵活构建多种架构。截至Spring Framework 5.1版本,Spring需要JDK 8或更...
总之,泛质量管理解决方案通过整合全方位的测试工具和服务,建立了一个全面、智能的质量管理体系,不仅优化了测试效率,还增强了问题预防和诊断能力,确保软件在整个生命周期中的高质量交付。这种以数据为驱动的精细...
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,比传统的XML更加简洁明了。利用Gradle打包项目,可以实现自动化、高效管理项目依赖...
7. **开源社区**:由于这两个插件都是开源的,开发者可以在GitHub等平台上找到项目的源代码、贡献代码、提交bug报告或提出新特性需求。开源社区的活跃度和参与度通常决定了插件的更新频率和问题修复速度。 通过将...
3. **通过实例构建Gradle项目**:通过创建一个实际项目来展示Gradle的构建过程,包括项目结构、项目依赖、测试和打包等。 ### 第二部分:掌握基础 4. **构建脚本基础**:深入介绍构建脚本的语法和结构,包括项目...