Підкажіть стек технологій для java web

Доброго дня!
Пишу вже деякий час на java, але використовував його лише для десктопних проектів. Не так давно появилось декілька проектів для web. Змінювати мову бажання не виникало, та і у web, java відіграє теж не останню роль. Тому через деякий час пошуків я зупинився на технологіях jpa jsf-2.0. Був варіант використання jsp, але як я зрозумів його не рекомендовано для використання, бо технологія застаріла.
Мені дуже цікаво, що ви використовуєте для java back-end, і чому.

👍НравитсяПонравилось0
В избранноеВ избранном0
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Не так давно я открыл для себя Play framework.
Он использует сервер Netty, в котором живёт одно приложение. В одном сервере — одно приложение. И не нужно сложного (re)deployment process.
А также не нужно километровых конфигов, как в Spring MVC.

Что интересно, Servlet API там тоже не используется. Замысел — быть ближе к Web, HTTP и вот этому всему, без лишних слоёв абстракции.

Слушая видео-курс и читая книгу по Play, я услышал и прочитал примерно те же мысли, которые хотел выразить в отдельный пост здесь, но не решился. Монструозные конфиги приложений на базе Spring MVC + Hibernate, как оказалось, вызывали чувство морального утомления не только у меня.
А когда я однажды давно как-то погуглил «declarative transactions in Spring» и увидел это — стало страшно. :-)

Минус у Play framework — в том, что задолбаешься настраивать проект в своей IDE. А может быть и не задолбаешься. Как повезёт.

Это вообще проблема в мире Java: когда проект управляется Maven или sbt (как для всех проектов на Play), то в самом простом nice & clean случае всё просто работает, всё супер.
Как только появляются какие-нибудь не тривиальные настройки (плагины и модули Maven) — открывается огромное разнообразие проблем при импорте проектов в IDE. Что-то с чем-то не совместимо, что-то не поддерживается, что-то не видит IDE и т.д.

Что интересно, Servlet API там тоже не используется. Замысел — быть ближе к Web, HTTP и вот этому всему, без лишних слоёв абстракции.
Это потому что на асинхронном нетти servlets API не сделаешь.

Много раз использовал Jetty embedded (запускаешь приложение как main, а внутри мейна стартуешь сервер) — очень удобно с точки зрения дебага и интеграции с плагинами в IDE, например. JAX-RS, дальше по желанию — Spring и Hibernate довольно популярный стек.

В целом, неважно, как ты это напишешь, главное — тесты пиши, чтобы потом рефакторить было легче. Да и перейти на другой стек будет не так страшно.

Дійсно цікавий варіант, щодо старту сервера із main.

IMHO, сейчас не лучшее время изучать Java для web.
Проекты на Java EE (что не синоним «Java + web», но по факту обычно оно) — это обычно унылый support & bug fixing старого г@внокода.
Новые чистенькие проекты на Java EE обычно оставляют для себя и делают сами, не раздавая такое добро на outsource.
Мне кажется, что вот как-то так.

Уточніть що ви маєте на увазі коли кажете

Проекты на Java EE
 і коли
чистенькие проекты на Java EE
Уточніть що ви маєте на увазі коли кажете
Проекты на Java EE

Проекты на платформе Java EE.

чистенькие проекты на Java EE

Новые, недавно созданные, на последней версии Java EE, в которых каждый разработчик в (маленькой) команде хорошо знает проект.
Проекты, которые ещё не успели обрасти врождёнными и взаимосвязанными проблемами.

Проекты на Java EE (что не синоним «Java + web», но по факту обычно оно) — это обычно унылый support & bug fixing старого г@внокода.
Новые чистенькие проекты на Java EE обычно оставляют для себя и делают сами, не раздавая такое добро на outsource.
Так всегда было: Подавляющее большинство проектов на аутсорсе — это гуано. Но надо понимать что «подавляющее большинство» — это таки не 100%.
.
Хотя с общим посылом (Масква не резиновая) я согласен :)

может лучше начать с основ? java ee и все что связано с этим и можно найти на oracle -_-
потом можно будет отталкиваться в любое из направлений.
Можно было бы предположить что автор уже это знает, но если явно не сказано, то лишним не будет.

пс: когда освоишь java ee более-менее вопроса что дальше возникать не должно.

Завжди намагаюсь знаходити рішення самостійно, але люблю перевіряти. От і у даному випадку отримав багато інформації котра мені була потрібна, у короткий термін і нікого не перевантаживши.
Іду ще в oracle спитаю що думає про це. ))

що ви використовуєте для java back-end

Если речь о http серверах, то jersey + любой контейнер (java http server, jetty, grizzly, etc). Простой наглядный пример — github.com/doom369/finance.

Всем, кто рекомендует тебе спринг, без понимания задачи, которую тебе предстоит решать, можешь сразу плевать в лицо, а тем, кто советует jsf, можешь сразу бить по лицу =). В большинстве случаев обе технологии будет лишним оверхедом.

FE — vanilla js

Окреме дякую за приклад, вони завжди дуже доречні, інколи краще тисячі слів. ))

У літературі неодноразово натикався на те що jsp визнана застарілою технологією, і не рекомендована для використання.

jsf 2.0 пропонують як альтернативу.

Пытаются выкопать то, что должно лежать в земле

А такой вопрос, Thymeleaf используется сейчас?(всмысле в продакшене) И помимо него есть что-то еще?

И все-таки

Підскажіть стек технологій для java web
Или
Мені дуже цікаво, що ви використовуєте для java back-end, і чому.
?
Вам интересно собрать статистику, выбрать под конкретный проект технологию или “выучить” что-то с чем можно найти работу?
Если вариант № 3, то тут СпрингМВЦ и вперед.
Если № 2, то дайте описание проекта.

Якщо коротко то варіант № 3. Реалізувати проект використавши технології, котрі не будуть лише одноразово використані та матимуть вагу при змінні роботи.

Якщо коротко то варіант № 3.
Тогда для старта можно взять какой-то «все в одном» фрейворк
— если спринг projects.spring.io/spring-boot
— если не спринг www.dropwizard.io

update:
хех, не зрозумів спочатку :) і написав все що згодилось
а spring тут вже порадили.

если не понравится Spring то на Play Framework можно еще взглянуть

На Play без Scala нефиг и смотреть.

Да, создаётся неповторимое ощущение костылинга :)

Для старту, як на мене, і Play 2.4 + Java буде не погано, в порівнянні з Spring Boot.

Можешь на GWT поглазеть

Смотря что пилить. Для энтерпрайза очень даже норм. Для блога, магазина и тому подобных вещей — да, лучше морду на js

GWT гребанное зло, хотя бы тем что это java -> javascript. Зачем такое делать если сейчас можно писать front/back end на JS? Или бэк — REST, а фронт — что-угодно?

Имхо, корова которая просто не поперла из-за своей архитектуры, да ее используют как и все что было есть и будет в джаве, но оправдано ли, врятли...

1. «.. компилировать ущербный язык Java»
2. использовать как аргумент топик за 2010 год с форума линукса? ну ок.

Дело в том что таких «топиков» море относительно GWT.

По поводу 2. Джун спорит о целесообразности использования кривого и тупого GWT в мире полном намного лучшими пряниками? Что серьезно?0.о

P.S. Альтернатив для веба уйма: Spring, Wicket, REST, EJB, JSF.

Вы уже второй человек, который пытается тыкать в лицо мне моей должностью, вместо того чтобы аргументировать почему GWT «кривой и тупой».

1. Первую ссылку которая попалась по «недостатки GWT» я уже кинул, джуны в люксофте обладают навыками гугления?
2. Вы же ведете себя как «в интернете кто-то неправ», почему бы не тыкнуть в лицо должностью? Если вы начинаете оправдывать GWT и рекомендовать его для изучения другому человеку (тем более что в мире джавы есть много других технологий которые работают намного лучше чем GWT и писать код и делать отладку на них НАМНОГО удобней)

Все темы датированы 2009-2012, а фреймворк не стоит на месте и большинства описанных проблем уже давно нет — это раз.

Я лишь сказал что GWT уместен для некоторых задач, а в ответ лишь «гвт — говно. Почему? потому что! и ваще ты джун и ничо не знаешь».

А судя по инфе с линкедина, то вы, Владислав, два месяца назад были аналогичным джуном, что делает ваши комментарии вдвойне веселее.
На этом, мне кажется, диалог исчерпан :D

Все темы датированы 2009-2012, а фреймворк не стоит на месте и большинства описанных проблем уже давно нет — это раз.
«Воу воу, палехчи». Т.е. то что гугл отказался от него не показатель? Да темы старые, но что с того? Джава которая транслируется в JS, это круто? Серьезно?
фреймворк не стоит на месте и большинства описанных проблем уже давно нет
А сама технология просто заменяется JS кодом ;) потому что JS намного больше не стоит на месте, чем кривой тулкит.
Я лишь сказал что GWT уместен для некоторых задач, а в ответ лишь «гвт — говно. Почему? потому что! и ваще ты джун и ничо не знаешь».

Я лишь сказал что «не стоит» смотреть в сторону GWT человеку который хочет посмотреть на джава в веб, а в ответ лишь «тыкаешь должностью, gwt крутой, давай пруфы!!!»

И опять таки советовать повторюсь, советовать GWT когда есть масса технологий продуктивней, это бред чистой воды.

P.S. О какой ужас, вы уличили меня в том что я получил «тайтл» совсем недавно... Да, два месяца назад у меня еще небыло «тайтла», но работу я исполнял до самого факта промоушна.

Поповоду ссылки

1) Я думаю это плюс

2) Легко интегрируется resty-gwt.github.io

3) Отладку можно легко выполнять через обычный Dev Tools, можно через дебагер IDE

4) В GWT встроенна поддержка интернационализации

зачем писать джава код и транслировать, если можно писать на js сразу?0.о

И зачем это советовать человеку начинающему смотреть в сторону веба, если есть рест и ангулар/бэкбон?

GWT для оленей до мокроты в постели боящихся веба
прикопайте там же где выкопали
RAP и Vaadin тудаже

Так, це я вже зрозумів.
А що скажете про такий варіант?
“Сервер сайд — чистый REST на джаве.
Фронт — на Angular”
На форумі попереднику виловив, про котрий вже згадував раніше.

да это правильный вариант
java для сервисов а приложение JS

в jsf взагалі не лізь
кошерний варіант — Spring MVC + якась жабосприктова приблуда, типу angularjs

Дякую за вектор! ))
І справді дана тема не одноразово вже піднімалась на форумі, ось одна із тем для прикладу, де багато чого вже розжовано: dou.ua/forums/topic/9673
Шкода тільки часу витраченого, і куди я тільки дивився раніше. ((

Подписаться на комментарии