2009-02-04 6 views
0

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

Répondre

1

Je ne l'ai jamais utilisé Gears pour GWT, mais après avoir lu votre témoignage, je crois que vous avez raison de dire que la classe WorkerPool peut fonctionner uniquement les fichiers JavaScript et non Java-compilé-à-JavaScript. Voici une citation de l'API WorkerPool de GWT-Gears v1.1.1.

module permet WorkerPool web applications d'exécuter du code JavaScript l'arrière-plan, sans bloquer l'exécution du script de la page principale . Actuellement, cette classe ne peut créer que des threads de travail en code JavaScript brut . En d'autres termes, le code utilisateur ne peut pas créer actuellement des corps de travailleurs à partir du code Java .

La classe WorkerPool gère les threads et la communication, ce qui n'est pas une mince tâche.

Questions connexes