Afin d'utiliser la classe WorkerPool (Javascript Threads) et la fonctionnalité dans GWT/Gears, ai-je besoin d'écrire mon code à la fois en Java et en Javascript? Lors de l'inspection de WorkerPool - Getting Started et l'exemple d'application WorkerPool dans le paquet de téléchargement GWT-Gears-1.1, il semble que je dois le faire. Il semble que le code Java est utilisé pour démontrer la nature synchrone de Javascript et le même algorithme en Javascript est utilisé pour les appels asynchrones.Pour utiliser Gears WorkerPool dans GWT dois-je écrire le même code en Java et Javascript?
Ai-je raté quelque chose? GWT n'a-t-il pas été créé pour que vous n'ayez pas à écrire du code Javascript? Pourquoi ne pouvez-vous pas écrire votre code WorkerThread en Java et que le compilateur le compile en Javascript?
Voici le code Java correspondant de cette url:
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);
}
Voici le code Javascript pertinent worker.js (remarquez comment il est le même algorithme écrit en 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;
};
Voici l'appel en Java:
wp = Factory.getInstance().createWorkerPool();
wp.setMessageHandler(GearsWorkerPoolTutorial.this);
workerId = wp.createWorkerFromUrl("worker.js");
quelqu'un peut-il avec une expérience dans GWT et Gears jeter un peu de lumière à ce sujet?
Merci!
Edit:
Il semble selon ce http://markmail.org/message/gxipzth2jheccpha#query:+page:1+mid:sabv4llpymbavt7t+state:results mes soupçons sont vrais. Je ne suis pas sûr de comprendre pourquoi cette limitation existe. J'aimerais lire tout aperçu sur la question.
Edit 2:
Cela semble également confirmer: http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/658f6665e5b09bed