首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

Pure JS (二): 热部署 (利用 JDK 7 NIO 监控文件变化)

2012-11-04 
Pure JS (2): 热部署 (利用 JDK 7 NIO 监控文件变化)Pure JS (2): 热部署 (利用 JDK 7 NIO 监控文件变化) 

Pure JS (2): 热部署 (利用 JDK 7 NIO 监控文件变化)
Pure JS (2): 热部署 (利用 JDK 7 NIO 监控文件变化)

  接着上一篇文章(http://xxing22657-yahoo-com-cn.iteye.com/blog/1052485)的话题,我们来谈谈服务器端 JS 的热部署问题。

  由于 JavaScript 是动态语言,动态编译并执行脚本并不困难。所以关键是监控文件变化。
  这里推荐使用 JDK 7 NIO 中新增的 Watch Service API。Watch Service API 将尽可能使用操作系统的文件 API ,当操作系统不支持时,则使用轮询。简而言之,就是 JNI  + 轮询,自己实现轮询倒不难,但要实现跨平台的 JNI 调用就很啰嗦了。

  JDK 7 还没有正式发布,可以先到这里下一个 Early Access 版 :
  http://jdk7.java.net/
  安装完后可以通过 eclipse 的 Window -> Preference -> Java -> Intalled JREs 添加刚安装的 JRE,并勾选为默认的 JRE 环境。

  关于 Watch Service API 的使用说明可以参考这里:
  http://download.oracle.com/javase/tutorial/essential/io/notification.html

前期准备
  首先,我们在 src 目录下创建 purejs package ,将之前编写的 JSServer,JSEngine 和 JSServlet 都移动到这个 package 下。因为后面将会用到 import static 的写法,没有 package 名称的话会报错。
  然后,我们需要在 JSEngine 类中增加执行单个文件的方法( excuteFile(File file) ),并在 excuteFiles(String dir) 方法中引用它。

  现在的 JSEngine 应该是这样的:


  然后就可以把这个文件和 api.js 一起删除了。

最新版的 Java 7 中,java.nio.file.StandardWatchEventKind 已改为 java.nio.file.StandardWatchEventKinds,文章已更新。

下载附件后,请将 FileChangeMonitor.java 中的 StandardWatchEventKind 改为 StandardWatchEventKinds
1 楼 lizhen1643 2011-05-24   java.nio.file.StandardWatchEventKind此类貌似已经变成
java.nio.file.StandardWatchEventKinds了 2 楼 裴小星 2011-05-24   是吗?可能版本还是不同吧。
我的版本还是 java.nio.file.StandardWatchEventKind 3 楼 裴小星 2011-05-25   下最新版看了下,果然改了。 4 楼 washheart163.com 2012-01-11   可以看看node.js 5 楼 裴小星 2012-02-23   washheart163.com 写道可以看看node.js
node.js 虽然自己的库比较全,但 Rhnio 有 Java 现有的开源资源支撑,都有各自的优势。
相对而言比较熟悉 Java,因此 Rhino 更适合我。

热点排行