LINUX.ORG.RU

JEE & Spring

 , ,


1

1

Вот сидел я сегодня и думал: а, собственно, зачем нужен JEE и какие его преимущества?

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

Ответ на: комментарий от dizza

Бинго. Вобщем все как всегда - страсть к велосипедостроению связана с нежеланием читать и вникать в доки.

Ну, вечная история. Если человек не вкуривает в что-то сразу, то чаще всего это обзывается говном и на этом история заканчивается. Я и за собой такое замечал в принципе.

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

Метод register объявлен в интерфейсе org.springframework.context.annotation.AnnotationConfigRegistry. А это spring-context, к вебу особого отношения не имеющий.

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

Че тебе надо, убогий? Конструктива внести в дискуссию ты не способен, то хотя бы не воняй.

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

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

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

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

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

Ты лучше скажи где та альтернативная реальность кроме жетбрайнз пишут на котлине?

Места знать надо =))

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

На удивление приятный язык и не так много багов, как могло бы быть в milestone релизе.

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

На удивление приятный язык

да яб на нем только ради вывода типов генериков писал, не говоря об остальных плюшках 8(

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

Ну да, вывод типов для локальных|private переменных, наконец то нормальные свойства без угребищных get/set, всякие map(), filter() etc. которые можно применить не к Stream а к Iterable напрямую итд. И при этом статическая типизация и нет 100500 способов написать нечитаемый звиздец как в скале (поэтому вменяемый явер способен на нем начать писать через пол дня). Весь проект с удовольствием бы на нем сделал, если бы jetbrains выложили roadmap и клятвенно пообещали на проект не забивать.

Nagwal ★★★★
()

а, собственно, зачем нужен JEE

JEE - это набор документов, описывающих стандартизированное апи для различной функциональности веб-приложений и приложений уровня предприятия. Соответственно нужен он для того же, для чего нужен любой стандарт - стандартизировать.

А если сравнивать даже не со спрингом, а с другими стэками

А спринг и другие стеки - это конкретные реализации библиотек для построения веб- и энтерпрайзных приложений. При этом разные их части могут соответствовать, а могут и не соответствовать спецификациям JEE. Например, ORM в том же спринге реализует в т.ч. JPA, а Google Guice вроде как до сих пор является reference implementation для JSR-330.

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

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

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

Я вот попробовал собрать проектик на спринге года два назад с mvc, jpa, и т.д., это звиздец какой то товарищи, поспрашивал как другие делают, говорят - копипастят из старых проектов.

Говнокодеры-с, сэр.

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

И что делать если я хочу устанавливать какую то функционаьность в зависимости от переменной среды? На самом деле все проблемы спринга в том что челы которые его делают курят определенно что-то неправильное

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

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

Умиляет, да, но в проде его не использовал, так что тормоза подтвердить или опровергнуть не могу. Наверняка же нужно просто уметь его готовить. Я вообще кроме WAS последние джва года ничего не юзал.

И таки ви хаотите сказать, что спринг тормозной? Тормозной в чем и по сравнению с чем? Если на нем хэлоуворлд работает в 2, к примеру, раза медленнее, совсем не показатель.

bytecode ★★
()

Как минимум ради Servet API его стоило пилить. И Spring, и другие фреймворки мне известные, с вебом работают через Servlet'ы.

Еще из более менее хороших вещей видел там JSF - сранивал правда лишь с GWT.

В принципе, при небольшом желании, энная часть стека JEE запускается на контейнере сервлетов, типа Tomcat и прекрасно работает. JPA, JSF, Servlet, JDBC - а что еще надо для маленького проекта? А удобства становится гораздо больше.

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

И таки ви хаотите сказать, что спринг тормозной? Тормозной в чем и по сравнению с чем?

Таки все что хотел я сказал, человеку который не знает про унутренности AOP (который используется как минимум в security и для транзакций) мне больше сказать нечего, ибо бессмысленно.

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

требуют на подготовку энвайронмента, конфигурацию и запуск не больше 2-х минут и запускаются в легких эмбеддед контейнерах

чтобы достичь этого ты 10 лет питался крышками от консервных банок, в то время как банальный war файл разворачивается в томкате автоматически

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

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

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

На Java не только ынтерпрайз пишут. Есть и другие приложения, у которых есть таки определенные требования к скорости работы.

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

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

Слушай, зачем тебе я? Ты отлично сам отвечаешь на свои вопросы.

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

чтобы достичь этого ты 10 лет питался крышками от консервных банок

ЭЭ что?

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

Использовать в одном и том же месте jpa репозитории и, скажем, JdbcTemplate, в зависимости от переменной энвайронмента?

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

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

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

нелепом количестве кода и эксэмеля.

С разморозкой вас, товарищ, в spring давно уже аннотациями все конфигурируется, xml там нафиг не нужен уже давно.

cherry-pick
()
Ответ на: комментарий от vertexua

Тем временем его фанаты пробрались в комитеты JavaEE и украли из Spring все что можно, сделав современный JavaEE 7-8 по сути спрингом по функционалу, но сделаным хорошо с чистого листа. Компании одобрили и бросили сотни програмистов на разработку современных серверов. Они написали быстрые, легкие, современные сервера вроде Wildfly. Теперь все будут по чуть-чуть закапывать Spring

А как на Java EE 7-8 выглядит простой код типа

@RequestMapping("/bla")
public String foo(@RequestParam String moo, Model model) {
    model.addAttribute("zoo", moo);
    return "view";
}

А то я не фанат спринга, но аналога SpringMVC пока не нашёл. Голые сервлеты пробовал юзать — в итоге постоянно пишу свой Spring MVC, только не такой удобный. Из вменяемых альтернатив только какой то Ninja Framework нашёл, но не разбирался с ним, хотя внешне выглядит многообещающе.

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

Например, ORM в том же спринге реализует в т.ч. JPA

В спринге нет ORM. Ты спринг с хибернейтом перепутал, похоже.

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

Сервлеты это отвратительное API даже для своего времени. Вменяемое низкоуровневое API можно посмотреть у go (или в библиотеке express у node.js). Хорошее апи у библиотеки Netty.

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

В JavaEE7 это пишется, хотя не совсем тривиально, там основная идея пока-что в HTML5+JAX-RS. Но вот в JavaEE 8 добавили точно такой MVC с pluggable renderers, можешь любой шаблонизатор засунуть

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

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

Our goal for the Java EE 8 specification is for it to be finalized in the second half of 2016.

нескоро будет. Неторопливые они ребята.

Legioner ★★★★★
()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от cherry-pick

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

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

Как минимум ради Servet API его стоило пилить. И Spring, и другие фреймворки мне известные, с вебом работают через Servlet'ы.

Servlet'ы это довольно старый API с кучей проблем которые никогда не решат.

Из популярных фреймворков, Play, к пример, успешно сам реализует HTTP.

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

Servlet'ы это довольно старый API с кучей проблем которые никогда не решат.

например? из того что мне попадалось это извращенный AsycnContext но это совсем не старое api

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

например?

основная проблема в том, что API проектировался под синхронные вызовы и с расчетом на синхронные сервера которые обслуживают один запрос в одном потоке. На практике все современные сервера асинхронные и эмулируют этот API путем разных извращений.

Клиенту эта синхронность тоже как правило не нужна; но тут больше засад — 3.0 не позволяет делать асинхронный ввод-вывод. А 3.1 совсем безумен по API и по факту плохо поддерживается разными серверами, так что юзать его довольно стремно.

Еще можно припомнить использование коллекций Java 1.0 и всякие подобные мелочи.

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

основная проблема в том, что API проектировался под синхронные вызовы и с расчетом на синхронные сервера которые обслуживают один запрос в одном потоке. На практике все современные сервера асинхронные и эмулируют этот API путем разных извращений.

емнип 7 томкат (мейнстрим) хоть и имеет возможность работы через селекторы стабильным это там не считается, а уж как оно написано внутри - смотреть страшно. Т.е. остается синхронным.

Остается netty и jetty.

Не говоря уже о том что большинство все также работает в стиле: томкат->сервлет->ждем ответа от субд - и их это устраивает.

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

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

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

А там и не нужно из каропки решение, АПИ очень простой и очевидный, это все равно что искать фреймворк который будет 2+2 из каропки решать.

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