Оригинальный автор (ы) | Джо Уокер |
---|---|
Разработчики) | Дэвид Марджиниан / Фонд Додзё |
Первый выпуск | 29 августа 2005 г . |
Стабильный выпуск | 3.0.2 / 11 декабря 2016 г . |
Репозиторий | |
Написано в | Java и JavaScript |
Операционная система | Кроссплатформенность |
Размер | 1.08 МБ (в архиве) |
Тип | Технология Ajax |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | directwebremoting |
Direct Web Remoting или DWR - это библиотека Java с открытым исходным кодом, которая помогает разработчикам создавать веб-сайты, содержащие технологию Ajax . [1] Он позволяет коду в веб-браузере использовать функции Java, запущенные на веб-сервере, как если бы эти функции находились в самом браузере. Проект DWR был начат Джо Уокером в 2004 году, версия 1.0 выпущена 29 августа 2005 года.
DWR использует новый подход к Ajax, динамически генерируя код JavaScript на основе классов Java. [2] Таким образом, веб-разработчик может использовать код Java из JavaScript, как если бы он был локальным для веб-браузера; тогда как на самом деле код Java выполняется на веб-сервере и имеет полный доступ к ресурсам веб-сервера. По соображениям безопасности веб-разработчик должен точно указать , какие классы Java можно безопасно экспортировать (которые часто называют web.xml или dwr.xml ).
Этот метод удаленного взаимодействия функций из Java в JavaScript дает пользователям DWR ощущение того, что они похожи на традиционные механизмы RPC , такие как RMI или SOAP , с тем преимуществом, что он работает через Интернет, не требуя подключаемых модулей веб-браузера.
DWR не считает важным протокол веб-браузера / веб-сервера и предпочитает, чтобы интерфейс программиста был естественным. Самая большая проблема здесь - совместить асинхронную природу Ajax с синхронной природой обычных вызовов методов Java.
В асинхронной модели данные результатов доступны только через некоторое время после первоначального вызова. DWR решает эту проблему, позволяя веб-разработчику указать функцию, которая будет вызываться при возврате данных, с использованием дополнительного параметра метода. Этот дополнительный метод называется методом обратного вызова . Значение, возвращаемое функцией java, будет передано методу обратного вызова.
Вот пример обратного вызова:
MJavaClassOnJs . getListProducts ( selectedCategory , { обратного вызова : Функция ( returnedList ) { DWR . Util . addOptions ( myComboId , returnedList , "ProductID" , "ProductName" ) } })
Обратный вызов - это функция внутри объекта JSON, переданная в качестве дополнительного параметра удаленной функции.
В версии 2.0 DWR поддерживает Comet (также называемый «Reverse Ajax») [2], где Java-код, запущенный на сервере, может намеренно отправлять выделенный JavaScript в браузер.