要在GWT中使用Gears WorkerPool,我是否必须使用Java和Javascript编写相同的代码?

时间:2009-02-04 16:03:08

标签: java javascript gwt google-gears

为了在GWT / Gears中使用WorkerPool(Javascript Threads)类和功能,我是否需要用Java和Javascript编写代码?在GWT-Gears-1.1下载包中检查WorkerPool - Getting Started和示例WorkerPool应用程序后,我似乎需要这样做。似乎Java代码用于演示Javascript的同步特性,并且Javascript中的相同算法用于异步调用。

我错过了什么吗?是不是创建了GWT,以便您不必编写Javascript代码?为什么不能用Java编写WorkerThread代码并让编译器将其编译为Javascript?

以下是该网址的相关Java代码:

 public void syncWorker(String message) {
// Busy wait for 5 seconds
long end = System.currentTimeMillis() + 5000;
while (true) {
  int busyCounter = 1000;
  String busyVar;
  while (busyCounter-- > 0) {
    busyVar = "garbage" + busyCounter;
  }
  long now = System.currentTimeMillis();
  if (now > end) {
    break;
  }
}
logMessage("Approved: " + message);
}

这是worker.js中的相关Javascript代码(注意它是用Javascript编写的相同算法):

function doWork(message) {
// Busy wait for 5 seconds
var start = new Date();
while (true) {
  var busyCounter = 10000;
  var busyVar;
  while (busyCounter-- > 0) {
    busyVar = "garbage" + busyCounter;
  }
  var now = new Date();
  if (now.getTime() - start.getTime() > 5000) {
    break;
  }
 }

 return "Approved: " + message;
 };

以下是Java中的调用:

wp = Factory.getInstance().createWorkerPool();
wp.setMessageHandler(GearsWorkerPoolTutorial.this);
workerId = wp.createWorkerFromUrl("worker.js");

任何有GWT和Gears经验的人都可以对此有所了解吗?

谢谢!

编辑:

根据这个http://markmail.org/message/gxipzth2jheccpha#query:+page:1+mid:sabv4llpymbavt7t+state:results,我的怀疑是正确的。我不确定我理解为什么存在这种限制。我很乐意阅读有关此事的任何见解。

编辑2:

这似乎也证实了这一点:http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/658f6665e5b09bed

1 个答案:

答案 0 :(得分:1)

我从来没有将Gears用于GWT,但在阅读了你的证据之后,我相信你说的是,WorkerPool类只能运行JavaScript文件,而不能运行Java编译成JavaScript。以下是GWT-Gears v1.1.1 WorkerPool API的引用。

  

WorkerPool模块允许网络   用于运行JavaScript代码的应用程序   背景,没有阻挡   主页的脚本执行。   目前这个类只能创建   工作线程出于原始JavaScript   码。也就是说,用户代码不能   目前正在创建工人团体   Java代码。

WorkerPool类管理线程和通信,这不是一项小任务。