同行有使用php的,可以灵敏的根据市场需求进行变化,在一定程度上,对于市场反应速度我个人认为优越于我们公司的现有的Struts+Sping+Hibernate的开发框架的。但是我们这套“重”框架相对来说却能做出在数据统计、运作上更加稳定和强大的功能。
究竟有没有一种方法把脚本的快速开发的特性和Java的功能强大结合起来的呢?当时找了不少shell脚本语言,从最早的perl到最为人熟知的JavaScript,从BSF看到Ruby Of Rails,从JRuby看到python,基本让我把资料都翻了,着重看了Bean Scritp Framwork的介绍和JavaScript、Groovy、Ruby的资料,最后被Groovy的资料介绍吸引了。当时的第一感觉就是这个语言很符合我的需求。
当时就在几天之内用groovy建一套游戏引擎——注意有一点,我希望的一个特性是这个脚本语言写出来的对象是可以继承的!但是经过实践,我错了!groovy的对象如果可以继承的话,要求被继承对象是已经被编译的,而不是我想象的我完全“脚本化”,举例说明,父类如下:
- class Parent {
- String name
- int score
- int level
- }
- 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在这方面需要改进:让父类同样动态脚本化!
(也许是我方法不对,如果有朋友对此有不同意见,请留言交流)