Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Нужен совет в проектировании приложени


Автор: usrjava 23.2.2015, 17:49
Добрый день. Много лет программировал в delphi + СУБД (firebird, oracle). Сейчас осваиваю java (базовый курс пройден).
Для более быстрого осваивания решил начать уже писать что-то конкретное на Java. В качестве разрабатываемого ПО решил взять и переписать (частично) один из проектов разрабатываемый ранее на Delphi, работающий с БД под управлением СУБД Firebird (ср. по мощности субд). Посоветуйте этапы разработки и инструменты.
На Delphi в упрощенном виде выглядело так:
1. Проектировали БД: таблицы, хранимые процедуры и т.п. (по мере развития проекта БД естественно расширялась). Проектирование делалось на живом SQL, с использованием IBExpert (удобная среда, позволяющая быстро конструировать метаданные БД).
2. Далее на Delphi писался некий слой ORM - иерархия классов, позволяющие представить таблицы БД, связи между ними в виде объектов предметной области. Также осуществлять загрузку данных из БД, сохранения данных в БД.
3. Далее писался что-то типа слоя бизнес логики: как правило он делался через пачку новых классов и так называемых датамодулей. Здесь уже конкретно подготавливались данные, которые будут выводится в конкретных окошках (формах) с таблицами (гридами), кнопками и т.п. (интерфейсное окно пользователя).
4. Создавались в том же Delphi интерфейсные окна с кнопками, гридами (таблицами) и т.п., который для единого стиля программы наследовались друг от друга и конкретная реализация уже затачивалась под конкретный справочник, редактор и т.п. Эти окна стыковались с нашими датамодулями, а те в свою очередь с классами ORM.

Отличие Java от Delphi в основном в наличии стека технологий и фреймворков. Из-за чего, у начинающего разбегаются глаза. В связи с чем, просьба посоветовать с чего здесь с практич. тч. зрения в Java начать разработку приложения (этапы), какими фреймворками лучше всего воспользоваться (так сказать, что наиболее популярно для приведенного типа приложений)?

Автор: danilych 24.2.2015, 07:48
Spring mvc - если это будет web-приложение, так же не советую использовать jsp - посмотрите в сторону freemarker, velocity, thymeleaf
Spring core, если это десктоп

hibernate либо MyBatis - ORM фреймворки.


Автор: usrjava 11.3.2015, 15:37
Цитата(danilych @  24.2.2015,  07:48 Найти цитируемый пост)
spring mvc - если это будет web-приложение

Не хотел бы реализовать модели отображения, методы ввода/вывода и само отображение (view) на сервере.
Хотелось бы сделать так - реализовать серверную часть (в качестве контейнера беру сервер Tomcat), не знающая ничего о UI, она только предоставляет доступ к данным и функциям их обработки (используются протоколы REST). Затем проектируем UI и вот он уже обращается к этим сервисам и функциям на сервере. То что я нашел из технологий, позволяющие реализовать построение такого UI - это AngularJS, JQuery. Очень не удобные - приходится писать по сути на JavaScript. Есть ли что-то типа такого: мы в IDE проектируем наши web-страницы (размещаем контролы: меню, кнопки, таблицы и т.п.) и делаем связку с нашим сервером. В этом плане проектирование именно GUI очень классно сделано в Delphi. Видел на C# проектирования их *.asp-страниц по этому принципу - но все равно как-то убого. Скажите, пожалуйста, не придумали каких-либо фреймворков на Java для подобного проектирования GUI. Вроде при разработке GWT что-то похожее хотели сделать, но там обе части и серверная и клиентская должны быть, по-моему, на GWT.

Автор: LSD 11.3.2015, 18:31
А на чем ты хочешь писать клиентскую часть?
Если клиент браузер, то тут выбор не слишком большой, это или HTML+JS или апплеты. Но учитывая http://forum.vingrad.ru/forum/topic-381766.html апплетов, то лучше с ними не связываься, если хочется Java на клиенте то лучше WebStart, но тут уже и браузер не нужен.

Да HTML+JS можено не писать руками и использовать, GWT или http://www.oracle.com/technetwork/java/javaee/javaserverfaces-139869.html, но он там все равно будет.

Автор: usrjava 11.3.2015, 23:57
Цитата(LSD @  11.3.2015,  18:31 Найти цитируемый пост)
Да HTML+JS можено не писать руками и использовать, GWT или JSF, но он там все равно будет. 

То что он будет - без разница. Просто писать клиента, работающий в браузере хотелось бы именно на Java + его фреймворк, а уже он бы компилил в html+js+css.
GWT - на сколько я понял загибается.

Автор: AntonSaburov 12.3.2015, 10:55
GWT пока еще работает. Есть вариант ZK - http://zkoss.org

Автор: usrjava 12.3.2015, 11:18
А как вы смотрите на Vaadin - на сколько он востребован?

Автор: AntonSaburov 12.3.2015, 12:38
Vaadin - это более удобная надстройка над GWT. Мы с ним возились некоторое время назад, но он имел тогда большой недостаток - медленно работал.
Есть еще один вариант - Sencha - http://www.sencha.com/products/gxt/

Автор: usrjava 12.3.2015, 23:12
Цитата(AntonSaburov @  12.3.2015,  12:38 Найти цитируемый пост)
Есть еще один вариант - Sencha - http://www.sencha.com/products/gxt/

Над вид даже даже ничего. Почему тогда не вошел в массовость? Вот анализирую разработку клиентской части web-приложения и понимаю, что на сегодняшний день этот вопрос не решен. Если с серверной частью в целом все ок, то в клиентской каких-то готовых однозначных решений сейчас нет - масса разных библиотек и подходов, одни лучше так другие этак -  от чего волосы становятся дыбом. Каждый работодатель требует свои знания. Не понимаю - ну почему крупной компании (не знаю там - тому же google) за столько лет не разработать нормальный фреймворк и взять его за стандарт. Не верю, что это не возможно и не верю тем, что писать на js все вручную без редактора конструктора - это круто. Круто - это когда среди фреймворком (т.е. он не обязательно один) есть один классный и удобный, что им пользуются 80% народа и столько же раз требуется при устройстве на работу.

Автор: AntonSaburov 13.3.2015, 11:41
Sencha была изначально JavaScript - ноги росли из ExtJS. Потом его скрестили с GWT. Но у GWT есть свои "прелести" - например для портальных решений он не подходит.
Если порассуждать о причинах такого количества, то скорее всего проблема во взрывном росте технологических возможностей - тот же Ajax, более крутой HTML, CSS, JavaScript. Причем нет общего понимания, что именно надо и для чего. Ну и получаем кучу различных реализаций.

Автор: usrjava 13.3.2015, 12:25
Цитата(AntonSaburov @  13.3.2015,  11:41 Найти цитируемый пост)
Причем нет общего понимания, что именно надо и для чего. Ну и получаем кучу различных реализаций. 

 smile 

Вообще меня интересует сейчас клиентский web, но ориентированный только для корпоративных приложения т.е. по сути десктопное ПО с СУБД, но работающее в браузере.
Что касается разработки сайтов и информационных ресурсов - мне это мало интересно так скажем сваять несложный сайт на php я умею. 
Поэтому и хочу уйти от явного javascript т.е. использовать подход основанный на использовании компонентов. Но и тут не могу понять, чем больше всего пользуется народ (GWT, Vaadin, sencha (www.sencha.com), ExtGWT, и мн. др.). Хотелось бы понять, что наиболее востребовано на рынке - это тоже  важно т.к. работу предлагает рынок)

Автор: AntonSaburov 13.3.2015, 13:18
Если интересен именно вариант работы, то думаю, что скорее всего это что-то на основе GWT - Vaadin, SmartGWT, ExtGWT. Есть отдельно ZK, но это достаточно специфический продукт, если судить по рынку труда.
Я бы посмотрел оба продукта - наверно ничего плохого в этом не будет.

Автор: usrjava 13.3.2015, 14:09
Цитата(AntonSaburov @  13.3.2015,  13:18 Найти цитируемый пост)
но это достаточно специфический продукт, если судить по рынку труда.

согласен smile 
Вот пример: захожу на hh.ru и вижу, что тот же GWT (если мы говорим о компонентной реализации web-морды) гораздо чаще встречается в вакансиях. Спрашивается, разберусь я с Vaadin'ом, потрачу кучу времени, а он у работодателей не востребован - тогда на фига козе баян.
Цитата(AntonSaburov @  13.3.2015,  13:18 Найти цитируемый пост)
Я бы посмотрел оба продукта

Оба - это вы какие имели ввиду?

Автор: AntonSaburov 13.3.2015, 15:19
GWT и Vaadin. Хотя ZK у меня вызвал очень хорошие впечатления. Но мы говорим о вакансиях.

Автор: usrjava 13.3.2015, 22:25
Цитата(AntonSaburov @  13.3.2015,  15:19 Найти цитируемый пост)
GWT и Vaadin

Более менее разобрался в чем между ними принципиальная разница, почитав статейку http://habrahabr.ru/post/115999/. В особенности после прочтения комментов пользователей

Автор: usrjava 14.3.2015, 00:50
кстати, а что вы думаете про sencha (sencha.com)?

Автор: usrjava 14.3.2015, 15:40
кто-либо с ней работал?

Автор: usrjava 14.3.2015, 20:43
Здесь вот утверждают, что при разработке клиентской части enterprice-приложения лучше уйти от компон. ориентированных фреймворков и использовать в связке html+css+js (jQuery, Angular).
Скажите а как с помощью последнего реализовать, например обычный грид (таблицу), в ячейках которой можно было бы сразу производить редактирование данных, такое вообще возможно?

Автор: LSD 16.3.2015, 14:52
Цитата(usrjava @  14.3.2015,  21:43 Найти цитируемый пост)
такое вообще возможно?

http://jquery-plugins.net/editable-table-editable-jquery-bootstrap-spreadsheet. В любом случае это уже не вопрос по проектированию и не по Java.

Автор: sergioK1 24.3.2015, 21:46
Цитата(AntonSaburov @ 13.3.2015,  14:19)
GWT и Vaadin. Хотя ZK у меня вызвал очень хорошие впечатления. Но мы говорим о вакансиях.

Это фактически один фрэймворк,   помню первую версию юзал где то в 2007-08 годах,
потом в 2011 года  пришлось отказаться, жутко тормозил, форма могла строиться почти минуту, счас запустил , нормально да и жава скрипт стал проще, единсвенная проблема так и осталась, как найти нужное место в коде, то есть фактически  мысленно перевести обратно жава скрипт в жаву , 
Да помню были проблемы с кросс браузерностью, как сейчас ? Что насчет подержки мобил? 

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

Добавлено через 7 минут и 9 секунд
Цитата(danilych @ 24.2.2015,  06:48)
hibernate либо MyBatis - ORM фреймворки.

мы юзаем spring-jpa-data ,  очень удобно,
http://www.petrikainulainen.net/spring-data-jpa-tutorial/

хотя ORM само по себе до ума так никто и не довел ,  годиться для узкого круга задач , требующих очень хорошего дизайна ,

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)