2009-02-04 3 views
0

Чтобы использовать класс и функции WorkerPool (Javascript Threads) в GWT/Gears, мне нужно написать свой код как в Java, так и в Javascript? При проверке WorkerPool - Getting Started и образце приложения WorkerPool в пакете загрузки GWT-Gears-1.1 кажется, что мне нужно. Кажется, что Java-код используется для демонстрации синхронного характера Javascript, и тот же алгоритм в Javascript используется для асинхронных вызовов.Чтобы использовать Gears WorkerPool в GWT, мне нужно написать тот же код в Java и Javascript?

Я что-то упустил? Не было ли создано GWT, чтобы вам не пришлось писать код Javascript? Почему вы не можете написать свой код WorkerThread в Java и компилировать его в Javascript?

Вот соответствующий Java-код с этого 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); 
} 

Вот соответствующий код Javascript в worker.js (обратите внимание, как это тот же алгоритм, написанный в 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 пролить свет на это?

Спасибо!

Edit:

Кажется, в соответствии с этим http://markmail.org/message/gxipzth2jheccpha#query:+page:1+mid:sabv4llpymbavt7t+state:results мои подозрения верны. Я не уверен, что понимаю, почему это ограничение существует. Я хотел бы прочитать любое понимание этого вопроса.

Edit 2:

Это также, кажется, подтверждает это: http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/658f6665e5b09bed

ответ

1

Я никогда не использовал Gears для GWT, но после прочтения вашего доказательства, я считаю, что вы правы в том, что класс WorkerPool может работать только файлы JavaScript, а не Java-compiled-to-JavaScript. Вот цитата из API-интерфейса GWT-Gears v1.1.1 WorkerPool.

модуль WorkerPool позволяет вебу приложения для запуска кода JavaScript в фоне, без блокировки выполнения скрипта в главной странице. В настоящее время этот класс может создавать только рабочие потоки из raw JavaScript код. То есть код пользователя не может в настоящее время создавать рабочие тела от Java-код.

Класс WorkerPool управляет потоками и связью, что немаловажно.

 Смежные вопросы

  • Нет связанных вопросов^_^