LINUX.ORG.RU

Java web-framework

 


2

5

Сабж

Подскажите, какой веб-фреймворк для Java сейчас считается хорошим?

Цель - веб-приложение. НЕ обычный информационный сайт, а сложная софтина, с вебом имеющая только то отношение, что ее морда будет работать в браузере.

Т,е. от веб-фреймвока целиком не_нужно средства по упрощению быдлокодинга тонн веб-страничек, там страничек будет всего несколько штук, да и те все абсолютно разные. Не нужно генерации JS типа Vaadin: жаваскрипта у нас будет самый минимум, а тот что есть - мы можем и должны будем написать руками. Не нужны новомодные активные клиенты - гуй должен в том числе показываться на стрёмных-стрёмных телефонах, то есть это чистый HTML.

А нужны правильные архитектурные, конкуррентные и прочие server-only фичи, держа в голове что это всё-таки веб.

Сейчас команда чуть не стала использовать Apache Wicket «с разгону» потому что конкуренты так делают. Но мне кажется, что Wicket - это такой монолитный кусок legacy-ужаса, пришедший к нам из глубин тёмных веков.

Во-первых, вопрос, действительно ли так, или мои суждения искажены и я несправедливо заклеймил Викет говном?

Во-вторых, собственно, если не Wicket, то что?

Напрашиваются лидеры гугла: Spring и Play Framework for Java.

Насчет Плея, он ведь изначально сделан как раз для информационных сайтов. Насколько он нужен в контексте описанной выше цели? Насколько он хорош в Java-версии?

Насчет Спринга - он необъятен, какие части инфраструктуры стоит вкурить в самую первую очередь? Есть нечто более хорошее, чем Spring MVC?

sudo cast maxcom

★★★★☆

Последнее исправление: maxcom (всего исправлений: 2)

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

umren ★★★★★
()

Spring

от веб-фреймвока целиком не_нужно средства по упрощению быдлокодинга тонн веб-страничек

Play Framework for Java

от веб-фреймвока целиком не_нужно средства по упрощению быдлокодинга тонн веб-страничек

<Любой другой веб-фреймворк>

от веб-фреймвока целиком не_нужно средства по упрощению быдлокодинга тонн веб-страничек

За день пишется и за день отлаживается простейший шаблонизатор на голом сервлете. Остальное по вкусу.

ya-betmen ★★★★★
()

мне кажется, что Wicket - это такой монолитный кусок legacy-ужаса, пришедший к нам из глубин тёмных веков.

Нет, легаси ужос это жсф. А викет просто вещь в себе с приличным оверхедом.

ya-betmen ★★★★★
()

Spring MVC решение проверенное временем, Play — более модное и современное. Play потребует знания Scala, даже если пользоваться Java-API. В опытных руках на play решение будет более производительное, как в плане скорости работы, так и в плане скорости разработки.

Про wicket я слышал только плохое.

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

в какой мере потребуется знание Скалы? Только что по скайпу пугали каким-то «билдером на скале», но я так и смог взять в толк что это

лично я всяко за Play. НО!

ситуация такая. у меня есть два джуниора, ранее кодивших javame, и в вебе почти ничего не шарящих, и есть две недели чтобы выбрать технологии и зафигачить прототип софтины.

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

(кстати, это секрет, на какой позиции ты в своей конторе? а то я мог бы использовать твое мнение как один из аргументов. Для людей не в теме, титутл «создатель Лора» не прозвучит =)

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 2)
Ответ на: комментарий от maxcom

еще, ты не в курсе, насколько в Плее можно переключаться между жавной и скальной версией? Т.е. можно например начать на Жабе, и плавно перетекать на Скалу только когда надо, чтобы в отдаленной перспективе поставить цель - перетечь на скалу полностью?

stevejobs ★★★★☆
() автор топика

Я с Play работал немного (делал курсач). Простая очень штука. Реально можно раскурить за неделю. Требует знания скала потому что шаблоны там в нем. Но я скала особо не знал и не знаю и сейчас. Там главное базовый синтаксис знать нормально. Как для прототипа сгодится вполне. Все равно потом переписывать.

P.S. Единственный существенный недостаток. Я так и не раскурил как его нормально внедрить в NetBeans. Проекты показывает, вроде все нормально, но запуск только из консоли и никаких помощей в автодополнении/обозначении ошибок. Нужно очень чисто писать, или выгребать ошибки при пробах.

spoilt ★★★
()
Ответ на: комментарий от stevejobs

в какой мере потребуется знание Скалы

Там все внутренности на скале, если например их Java API не хватит или что-то пойдет не так, то придется туда влезть и разбираться. Ну и в целом там scala из всех дыр торчит.

Я архитектор если что.

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Понятно. Значит, выбираем чистую Java, Spring MVC, и мучение с ъынтерпрайзом.

А есть опыт написания чего-то командно на скале с нуля, нулевыми в смысле скалы людьми? Если да, поделись впечатлениями?

У нас Excelsior юзает скалу для инфраструктуры, они как раз так делали. Но там общий уровень кодеров очень высокий. Если человек может самостоятельно написать компилятор жавы, то вопрос о том, может ли он научиться новому синтаксису чтобы написать на нем пачку скриптов, наверное, не стоит =)

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от maxcom

Даже так. Раз уж вы в компании все равно юзаете скалу и кложур, более детальный вопрос.

1) Считаешь ли ты, что скалу можно использовать в продакшене для написания реальных больших систем?

2) Сколько времени нужно типовому джуниору (с бэкграундом в криокамерной жаве под мобилки), чтобы с нуля въехать в синтаксис скалы, на уровне когда уже что-то можно делать?

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

не эксперт ни разу, но вроде как в Scala можно писать almost as Java, так что тут скорее проблемы не будет изначально, думаю больше web/network врубаться больше будут, чем в язык.

umren ★★★★★
()
Ответ на: комментарий от stevejobs

Использовать можно, но способов прострелить себе ногу больше.

Можно быстро научиться писать на скале как на улучшеной java, но в целом нужны знания ф.п. и желание в этом всем копаться.

maxcom ★★★★★
()
Ответ на: комментарий от stevejobs

Понятно. Значит, выбираем чистую Java, Spring MVC, и мучение с ъынтерпрайзом.

Да нет там никакого мучения с интерпрайзом. Все довольно легко и непринужденно. Единственное - я бы в качестве шаблонизатора под spring mvc брал freemarker вместо jsp. Да и яву уже вполне можно восьмерку брать, благо её релиз будет явно быстрее, чем вы силами тебя одного + двух юниоров напишете свою убер-софтину.

Если надо - могу порыться в своих исходниках и скинуть готовый каркас проекта (maven, spring + spring mvc + freemarker + spring security)

Nagwal ★★★★
()
Ответ на: комментарий от Nagwal

JSP использовать абсолютно невозможно, это лютое ненужное говно, «PHP на жабе», только еще хуже PHP. Не понимаю, как в 2014 году можно такое предлагать по дефолту.

Каркаса пока не надо, мы начали на Плее. Потом если не асилим, я у тебя еще попрошу ))

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)

По своему опыту могу сказать, что для Java нет нормальных веб-фрейворков. Текущий проект у нас на play framework. На первый взгляд он выглядит весьма привлекательным. Но если выйти за пределы хелло ворлдов, то тут же начинается сплошная головная боль. Мечтаю переписать всё на node.js, но вот времени особо нет :(

Hater ★★
()

Есть нечто более хорошее, чем Spring MVC?

Да. Java EE 7 CDI и JSF2 с JPA.

Spring появился тогда, когда была Java 2.0 (об аннотациях и инверсии контроля не слышали). По одному этому Spring можно считать настоящим выжившим динозавром типа крокодила, который приспособился к меняющимся условиям (начиная с Java 5.0), но и несущий собственное видение на решение проблем из «глубины веков».

Стандартная Java отнюдь не стояла на месте, пока эволюционировал Spring, а вбирала всё лучшее, что могли предложить фреймворки, пока, наконец, не вышел шедевр — Java EE 7, затемевающий все нестандартные альтернативы своей логичностью и завершённостью концепций.

iZEN ★★★★★
()
Последнее исправление: iZEN (всего исправлений: 1)
Ответ на: комментарий от maxcom

Выбрали Play и Java API. Параллельно будем ботанить Скалу. Первый прототип и первое реальное применение будет на Java, потом если Scala к тому времени будет на должном уровне, будем писать на ней. Если будут какие-то значимые успехи - отпишу на лоре.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

1) Считаешь ли ты, что скалу можно использовать в продакшене для написания реальных больших систем?

Да

2) Сколько времени нужно типовому джуниору (с бэкграундом в криокамерной жаве под мобилки), чтобы с нуля въехать в синтаксис скалы, на уровне когда уже что-то можно делать?

Без проблем, но нужен как минимум один эксперт в команде, иначе будете блуждать с антипаттернами несколько месяцев

vertexua ★★★★★
()
Ответ на: комментарий от stevejobs

JSP используют как шаблонизатор, не размещаяя там лапши. Тоесть используешь контроллер например на спринге, а потом форвардишь на JSP. В JSP только JSTL и лютая смерть джунам хоть за один скриптлет. Да, в 2014ом

vertexua ★★★★★
()
Ответ на: комментарий от umren

Груви умер. Плюс, грельсы тормозят безбожно, если подходить без ума. А кто ж с умом подойдет к незнакомому фреймворку таких размеров.

stevejobs ★★★★☆
() автор топика
Последнее исправление: stevejobs (всего исправлений: 1)

Викет это «хоть что-то» по сравнению с Spring MVC каковой (если я не ошибаюсь) сводится к выбору из трёх равноустаревших технологий - Struts 2, Velocity и FTL. Попробуйте HybridJava.

AlexSerov
()
Ответ на: комментарий от maxcom

+1 в Jade

в Node.JS простые блоки не имеют параметров (в том числе block), поэтому приходится симулировать поведение блоков с помощью миксинов. Например, я в шаблоне-наследнике хочу, чтобы у меня были все те же самые CSS, что и в родителе, но в самое начало списка добавился элемент. Это превращается в кучу бесполезного кода. Например, нужно вначале написать (или сгенерировать) файл со всеми названиями миксинов и пустым телом, и потом включать во все шаблоны. (нельзя вызывать миксин, которого еще не объявлено, поэтому нужно вначале составить список всех миксинов и дать им пустое тело).

Это как-то лечится?

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Например, я в шаблоне-наследнике хочу, чтобы у меня были все те же самые CSS, что и в родителе, но в самое начало списка добавился элемент.

prepend?

anonymous
()
Ответ на: комментарий от umren

Да, Grails мне понравился. :-) Play тоже ничего, но он жрёт как не в себя cpu при компиляции. По-моему, тсу надо просто на чистой жабе писать под каким-нить Jetty. Прикрутить шаблонизатор с гитхаба, да и всё. Раз 3 странички будут.

menangen ★★★★★
()
Ответ на: комментарий от maxcom

В опытных руках на play решение будет более производительное, как в плане скорости работы

По скорости разработки — оно очевидно и понятно. А по скорости работы чем Play будет лучше Spring'а? Мне казалось, что должно быть наоборот же.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Play более асинхронный и работает поверх своего собственного веб-сервера. А Spring - поверх контейнера сервлетов.

maxcom ★★★★★
()
Ответ на: комментарий от iZEN

пока, наконец, не вышел шедевр — Java EE 7, затемевающий все нестандартные альтернативы своей логичностью и завершённостью концепций.

Правда? А что, дженерики в яве больше не фейк? Я что-то пропустил?

geometer
()
Ответ на: комментарий от geometer

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

Дженерики дали возможность безопасно и легко работать с типами данных, не используя явное приведение типов, как это было ранее с генерализованным типом Object, годным для вообще любого класса объекта в коллекции и небезопасным на явных приведениях типов (type cast) объектов коллекции к своим классам (чтобы можно было вызывать их методы). На этапе компиляции нельзя было точно сказать, какого типа объект находится в коллекции, если хранимый тип данных всегда один — Object. Дженерики исключили эту проблему на корню, предоставив настраиваемые типы коллекций и автоматическую проверку компилятором присваиваний.

iZEN ★★★★★
()
Ответ на: комментарий от iZEN

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

Прелесть какая! Нормальные шаблоны не были сделаны просто из соображений обратной совместимости со старыми библиотеками. Все остальные рассуждения - это самооправдание.

geometer
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.