《Java编程十五讲》第十一讲:脚本

第十一讲 脚本
大家好。我前两年意识到一件事情,就是Java里面有一个很好的功能许多人没有注意到,而要做大型一点的系统或者是做扩展性好一点的系统却都会用到,那就是脚本(script)技术。

学技术之前,还是先看场景。

我们做的应用系统里面,经常需要设置一些业务规则。比如权限控制,不管是网络层的防火墙还是应用层的数据权限,一般用户是希望设置一个规则,网络权限像IP between 192.168.2.101 and 192.168.2.149,像port=80 or port=8080 or port=21等,数据权限像level>3 and department in (‘’IT,’ADMIN’)等。还有一些计算方法,不希望写死在代码中,而是拉出来让用户自己配置,比如算保费,可能是根据一堆条件和计算公式算出来的,更关键的是每年可能都会有改动,修改源代码自然可以,但是如果把计算公式设计成可以配置的,系统就更加灵活,可扩展了。

应用程序员的一大痛苦就是要面对每天不断的需求变化,有的时候令人崩溃。国内企业习惯把系统打成一个包,不管付出多少劳动都是这个包的价格,用户不断加内容,不断修改,觉今是而昨非,而销售部门觉得不就是这么一点改动吗,还不对人好一点?于是程序员们只好不停地修改,疲于奔命,还不落好。我的一位前任公司领导曾开玩笑地跟我说:“看你们程序员一个个天天咬牙切齿,一副很努力工作的样子,也产出不来什么东西。你们都在干什么呀?”

从那个时候开始,我就在想,能不能把这些权限规则、计算公式、流程之类的都外部化为配置文件,让用户自己定义,我们用一个通用程序来解释。这样从技术本身的角度缓解这个状况,不用一动就改源代码。自然,大家肯定也想到了是有这样的技术的。我们大学课本上都学过的《编译原理》,我们可以对外提供一种表达式或者语言,让用户自己定义。

这次不会讲解编译器的原理,那是单独的一本书,我是打算今后单独开一个讲座讲解怎么编写解释器让用户自定义计算规则。那个时候再详谈。

有了这个场景的背景知识,我们再回头看Java里面提供的功能。

JDK 1.6开始增加了一个javax.script包,提供了对脚本引擎的支持。第一句话一说出来,就有人懵了。一般人的反应是想了解Ja

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章