9.3.1 目标_9.3 实战:自己动手实现远程执行功能

9.3.1 目标

首先,在实现“在服务端执行临时代码”这个需求之前,先来明确一下本次实战的具体目标,我们希望最终的产品是这样的:

  • 不依赖某个JDK版本才加入的特性(包括JVMTI),能在目前还被普遍使用的JDK中部署,只要是使用JDK 1.4以上的JDK都可以运行。
  • 不改变原有服务端程序的部署,不依赖任何第三方类库。
  • 不侵入原有程序,即无须改动原程序的任何代码。也不会对原有程序的运行带来任何影响。
  • 考虑到BeanShell Script或JavaScript等脚本与Java对象交互起来不太方便,“临时代码”应该直接支持Java语言。
  • “临时代码”应当具备足够的自由度,不需要依赖特定的类或实现特定的接口。这里写的是“不需要”而不是“不可以”,当“临时代码”需要引用其他类库时也没有限制,只要服务端程序能使用的类型和接口,临时代码都应当能直接引用。
  • “临时代码”的执行结果能返回到客户端,执行结果可以包括程序中输出的信息及抛出的异常等。

看完上面列出的目标,读者觉得完成这个需求需要做多少工作量呢?也许答案比大多数人所想的都要简单一些:5个类,250行代码(含注释),大约一个半小时左右的开发时间就可以了,现在就开始编写程序吧!