Страницы

Поиск по вопросам

воскресенье, 5 января 2020 г.

Java & GWT: Web-приложение с desktop-версией

#gwt #java #база_данных #ios #веб_программирование


Постановка задачи:

Разработать web-приложение для пользователей Windows, Linux, iPad, возможно MacOS,
не для iPod и других мобильных платформ. С desktop-версией для Windows, Linux, MacOS,
способной работать без активного соединения с интернет и выполнять весь основной функционал.
Основной функционал заключается в произведении вычислений и генераций .txt, .doc, .pdf
документов, на основе выбранных на форме пользователем параметров и данных из БД.

Предлагаемое решение:


Основной функционал готовить в виде общих библиотек (для использования в обоих версиях)
на Java и БД sqlite.

Версия-web: на клиенте только GUI на Java GWT, основной функционал выполняется на
Java веб-сервере.

Версия-desktop: GUI на Java Swing, основной функционал выполняется на клиенте.

Логику приложения реализовать вместе с (на стороне) GUI, которая обращается посредством
веб-сервера (web-версия) или напрямую (desktop-версия) к интерфейсным функциям общей
библиотеки для выполнения основного функционала.


Имеются вопросы: 

Используем NetBeans 7, настольные приложения Swing и веб-службы SOAP/REST на Java,
там разрабатываются довольно просто. Есть проблемы с установкой и настройкой GWT. Насколько
адекватно поддерживается в netbeans GWT? Альтернативы IDE?

Идея с общей библиотекой для основного функционала выглядит обнадеживающе, это только
наши иллюзии или это вполне реализуемо?

Дополнение к п.2.: можно ли одно и то же хранилище данных sqlite использовать и на
сервере и на клиенте? Какие еще есть альтернативы?

Дополнение к п.2.: имеются ли готовые библиотеки на Java для работы с документами
форматов .doc и .pdf?

GWT используем для обеспечения работоспособности версии-web на всех вышеперечисленных
платформах, могут ли нас ожидать проблемы несовместимости?

Desktop приложения на Swing по разному выглядят на Windows и Linux. Похоже, как выяснилось,
потому, что компоненты Swing надстроены над AWT. Эта проблема решаема, т.е., можно
ли оформить интерфейс так, что бы выглядело всегда одинаково?
UPD

GWT приложение транслируется в JS во время выполнения на сервере, или приложение
сначала транслируется в JS код и только затем развертывается на сервере?
UPD 2

Дополнение к п.2.: имеются ли готовые библиотеки на Java для генераций .dxf документов?

    


Ответы

Ответ 1



Для Eclipse есть очень удобный плагин для работы с gwt Общая библиотека это хорошо, но, вероятно, будет много различий, ведь как-никак инструментарий для разработки gwt web приложений и desktop приложений весьма отличается. Всё зависит от того, что Вы собираетесь пихать в эту библиотеку, и что у Вас вообще за проект. Всё зависит от поставленных задач и проекта. работа с .pdf,работа с .doc Вряд ли. Можно. ссылка JS код компилируется вместе с приложением, на сервере уже хранится в виде JS. Исключение - hosted mode - режим, сделанный для удобства разработки. Для браузера нужно поставить соответствующий плагин, чтобы видеть приложение в таком режиме. Плюсы - возможность отладки и публикация изменений на сервер "на лету".

Ответ 2



Как альтернатива Net Beans'у - Intellij Idea (есть платна и бесплатная, бесплатную нужно настроить). Если gwt, то тогда ext-gwt: http://www.gwt-ext.com/demo/ По поводу 6-го пункта в swing скины, хорошая статья по этому поводу на хабре http://habrahabr.ru/blogs/java/128755/

Ответ 3



Я использую Eclipse в подобных экспериментах. Вроде работает. По внешнему виду SmartGWT значительно лучше GWT , а механизм связи с сервером тот же. Советую обратить внимание на него. http://www.smartclient.com/smartgwt/showcase/#main это примеры. А почему бы не сделать вместо десктоп и веб версий только одну - Веб (с локальным сервером и базой) ? UPD Поподробнее... Я делаю в основном, как описано в http://code.google.com/intl/ru/webtoolkit/doc/1.6/tutorial/gettingstarted.html . Делаю 2 части в Eclipse. Клиентская транслируется в JS, серверная .jar. Они общаются по GWT RPC (это все есть в tutorial). Все исполнимое получается в war/ (Eclipse). Его содержимое кладу в webapps/ в Tomcat, который слушает порт 8080 (если пересекается с Oracle, то передвигаю на 18080). Браузер соединяется с Tomcat и запрашивает html приложения. В общем, локальный и удаленный варианты не отличаются (так сказать, локальный web, если сервер/база установлены на машине пользователя).

Комментариев нет:

Отправить комментарий