[info]ru_java


ru.java

все о языке программирования java


Previous Entry Add to Memories Share Next Entry
Реинкарнация WEB приложения, или как дальше жить?
ку-ку
[info]awsd wrote in [info]ru_java
"Как дальше жить и где нам парковаться?"

Есть вэб приложение в котором используется SpringMVC и JSP. На данной стадии в проекте бардак - немного смешались презентация с логикой, и одновременно настал переломный момент и возможность выбрать технологию для разработки клиента с нулья.

Личный опыт таков: до недавнего времени писал серверные приложения (Java SE) с использованием Spring-а. Обширных познаний в области вэб приложений пока не имеется. В JSP вроде разобрался. Можно почистить Авгиевы Конюшни и жить спокойно, но смушает наличие разнообразных фреймворков для вэб разработки с которыми я пока не знаком. Теперь собственно вопрос: как дальше жить?

  1. Навести порядок в JSP и не дёргаться.

  2. Перейти на фреймворк и написать клиент заново, следуя всем правилам MVC.

  3. Начать с '1' для наиболее быстрого приведения приложения в товарный вид и в последствии перейти на фреймворк, и пользоваться приимуществами высокоуровнего интерфейса.



* если '2', то на какой фреймворк стоит обратить внимание? (Из личного опыта)
* если '3', то на сколько процесс перехода на фреймворк безболезненный? не подразумевает ли он написаное с нуля?
Tags: , ,

Grails - быстрее не придумаешь

Grails, это вроде из скриптов выросло. Если нужно быстро поднять прототип то тогда, разумеется, нечто подобное - лучший вариант, а как в Grails обстоят дела со strong typing во время компиляции?

Как в самом Grails внутри обстоят дела я вам сказать не могу, но работает не на много медленнее чем на Pure Java. В продакшене компиляция происходит только один раз при сборке.

ну и стоить заметить что
"Groovy compiles straight to Java bytecode so you can use it anywhere you can use Java"
Источник: http://groovy.codehaus.org/

Преимущества байткода понятны, но я имел в виду другое,- проблемы скриптовых языков. Если до момента компильции в джавовский байткод, в редакторе создаётся переменная, а потом ниже в коде та-же переменная пишется с ошибкой, то джава выдаёт ошибку компиляции а джава скрипт, например, создаёт новую переменную.

Честно не проверял. Надо проверить :)

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

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

Уж лучше то нибудь поближе к джаве.

Grails далеко от джавы? Неужели? :) Может там и спринг не используется? :)

Пока вы больше похоже на "Трололо", чем на человека, который разбирается в вопросе. Может подробнее поясните откуда такая неприязнь?




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

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

Вот и выходит - уже не рыба но и ещё не мясо.

И если цель не поучиться, а привести дела в порядок, то оно нужно?

А Rails, можно подумать, не требует дополнительного знания принципов и подходов... Мало того что это вообще другой инструмент.

Может облегчения и не даёт, но мне, как человеку, который умеет писать на Java, изучать рельсы для своего маленького проекта ой как неохото. Мне бы что-то поближе и знакомое. Лучше Grails в этом плане нет ничего (пока). Посмотрим что из него вырастет. Может и рельсы переплюнет. Кто знает :)

Есил цель - привести дела в порядок, то для этого необязательно вообще спрыгивать с JSP и уж тем более на рельсы. Лучше привести порядок в том, что есть. А если хочется сделать по-другому, попробовать себя, то хоть на хаскеле - главное чтоб задача была решена.

P.S. Я не против рельсов. Я только за. Но порог вхождения в Grails у Java-программиста "с наскоку" будет гораздо выше, чем в рельсах.

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

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

А уж когда есть лапша легаси кода - секс обеспечен.

А рельс и руби - да требует, но то что они дают взамен это окупает.

Видимо каждому своё :)

Я достаточно легко и быстро на Grails с нуля написал небольшой проект. Единственное что смущало, что приходилось каждый раз лазить по докам и смотреть, какие Closures существуют для данного объекта. Отвык я от скриптовых языков :)

Про спагетти согласен - тут надо жестко следить. Кривые руки + груви = долгие бессонные ночи.

А в остальном всё родное и знакомое :)

Про рельсы не могу сказать, так как проектов не делал. Только щупал. Думаю что оставим на откуп автору. Пускай сам выбирает что ему по душе )

Да и к тому же. Сколько времени у Java-программиста уйдет на изучение, настройку рельсов и решение своей задачи и сколько времени уйдет на то же самое на Grails, если учесть что практически все работали со Spring, а Grоovy на столько просто, что даже смешно?

Если говорить про скорость, то я для себя выберу второе.

Объясняю откуда: работаю хер знает сколько с JSP/Spring/Hibernate/J2EE/EJB/Servlets/Portlets.

Дома для души активно юзаю рельсы. Кроме рельсов могу на сисайде со смолтолком.

Когда после всего этого решил попробовать грэйлс по принципу "как в рельсах, но поближе к родному J2EE" - откровенно проблевался и расстроился. Это далеко не рельсы.

и ещё,Вам как специалсту, вопрос - покажите мне пожалуйста такую IDE, которая будет столь же эффективна для Groovy/Grails, насколько она эффективна для Java/J2EE.. Ну или для ruby/rails.

Буду ОЧЕНЬ признателен.

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

Да я рад за вас. Честно :) Чем больше кругозор тем лучше ) Я ожидал какого-то технического сравнения. Так то я тоже могу сказать мол "рельсы? апач надо ставить? писать в каком-то блокноте (судя по туториалам)? изучать кучу новых доков? Неее... Однозначно говно". Но я так не считаю.

Ну а кто же мне подарит время на такое сравнение? :)

Да и грэйлс я особо глубоко не смотрел. Как напоролся на неприятные отличия от рельсов, поковырял и отложил.

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

Апач.. хм.. Так вообще для нагруженых проектов ставить edge сервак - это хороший тон. Не?

В блокноте писать ненужно, я у тех же джетбрейнов не поленился купить за свои кровные RubyMine 3.0 - пока доволен.

До этого вполне довольствовался NetBeans.

Я не говорю, Grails что это "однозначно говно" я говорю о том, что это совсем неудачный выбор для заявленых автором условий. И вообще неудачный (сугубо IMHO) компромис.

В такой ситуации есть гораздо более интересный выбор чистых джава инструментов. А если уж дёргаться в сторону рельсов - тогда уж по полной, на нормальные.

Ну вот и договорились :)

Edge сервак это что такое?

На краю решения ставите апач, который всё в логи пишет, проксирует, рерайтит урлы по необходимости. Если необходимо быстро прикрыть решение от публики - гасите апач, или перенаправляете его на что-то другое. Если необходимо подменить функциональность - переключаете его настройки прокси. Можно подцепить к нему кэширование и прочие прелести.

кроме апача есть специализированные эдж-сервера, например от IBM

Технический пример того, что сразу непонравилось:

Немотря на то, что pure-рельсисты считают моветоном применение скаффолдов, они серьёзно этономят время для быстрого прототайпинга.

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

А вот в грэйлсе это прям какое-то убожество - они решили поступить "по-умному" и не генерить вьюшки скаффолдов, а ссылаться на предопределённые "жутко универсальные". Их вроде как даже можно (дополнительным усилием, раскурив мануал, не сразу) даже впердолить в проект в виде явных сорцов, но они всё равно сделаны с претензией на понты универсальности "во всех случаях" и IMHO мало-пригодны к томы, чтобы их так же быстро и легко привести к собственному виду. Тоесть - совсем не так как в рельсах.

Возможно я просто неглубоко копал и там всё ничуть не хуже, но одно то, что они сделали это не подумав о скорости и лёгкости разработки (более тяжеловесно, в духе Pure Enterprize Java :) ) - это вывело из себя. Типа "мы за вас подумали и вам оно ненадо".

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

Лучше навести порядок в JSP. Spring отлично поддается рефакторингу.

100%, особенно если цель привести проект в порядок, а не поучиться на кроликах

Рефакторить JSP.

спасибо. а мжно поподробнее, в чём его преимущество?

он простой. в отличие от wicket, который ниже рекомендуют, как-то всё проще :)

http://click.apache.org/

Красивая архитектура, легкий и элегантный, stateless (vs wicket), чистые url, отличная документация и живые примеры, теплое комьюнити.
Рациональный подход к AJAX (всё что лучше делать на JS предлагаю делать на JS с jQuery и проч)
Отлично интегрируется со Spring.



опа, как интересно.. спасибо.

Ты хочешь выучить новый фреймворк или навести порядок в проекте?

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

Во втором - рефактори JSP.

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

Подбирай тогда под проект.

Так в том-то и дело, что не ясно, какие кандидатуры рассматривать.
Нужды проекта это ajax, js, bookmarks и back button на клиенте. Ну и "покрасивее и побыстрее" и "а подвиньте это сюда, а вот это, не квадратное а круглое, и вон туда".

а КАК там используется springmvc ?

посмотрите ещё GWT. Но внедрение любого нового фреймворка в условиях спагетти-кода в jsp-шках, только ещё больше затянет проект.

Господа! По многим из Ваших высказываний Вам может понравиться HybridJava. Док - страниц 15 (всё на сайте в т.ч. по-русски). Остальное требуемое знание - толко Java и HTML. JSP, request, response и session - побоку. Ну и несмотря на краткость помощнее будет всего того кошмара через который мы все прошли. Кризис подарил автору почти два года оплачиваемого отпуска по безработице в США так что как раз нашлось время сравнить, как я надеюсь, практически со всем. Не только с Java технологиями, но и с четырьмя С#, PHP и пр. (Оно всё равно требовалось для многочисленных интервью).

Особенно в части MVC компонентной модели HaybridJava просто побила всех. А также по НЕ-использованию всякого сомнительной нужности хлама, чему специально посвящён один из разделов документации.

Заметьте что HybridJava это рафинированный Java Web presentation Layer, так что ещё одного своего ORM там нет.