LINUX.ORG.RU

Play Framework 2.5 «Streamy»

 , ,


1

6

Вышла новая версия фреймворка Play для разработки веб-приложений на Scala и Java.

Главное новшество этой версии — перевод всего стриминга, вебсокетов и всего асинхронного I/O с Play Iteratees на Akka Streams. Данный шаг позволил перейти к простому и стандартизированному API, общему для Scala и Java-разработчиков, получить back-pressure и существенно расширить возможности асинхронной обработки данных. Инструкции по миграции на новую платформу описаны на отдельной странице.

Основные изменения:

  • Использование функциональных типов данных Java 8 вместо самописных библиотек.
  • Java-разработчики получили API для разработки собственных фильтров и Body-parser'ов.
  • Повышение производительности на 20% благодаря серии оптимизаций.
  • Логгирование направляется в SLF4J. Logback теперь опционален. Поддержка логгирования SQL-запросов с анализом производительности.
  • HTTP-стэк переведён на Netty 4.0. Ранее использовалась Netty 3.x. Так же продолжается работа в сторону переезда с Netty на akka-http.
  • Переход на AsyncHttpClient 2.0 и Scalatest 3.0.
  • Scala-2.10 больше не поддерживается. Окончательно удалён Plugins API. Переход на Dependency Injection близится к завершению.

Для пользователей play-2.4.x доступно руководству по обновлению на 2.5.

>>> Подробности

★★★★★

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

DI в спринге - яркий пример того как это делать не надо.

Почему не надо так? Как именно надо? Можно конкретизировать претензии?

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

Раздувать из-за нее время сборки проекта, когда все что надо есть в Java8

В Java 8 на практике довольно мало что появилось, по сути только новый компактный синтаксис для лябмд плюс половина Guava и Joda Time. Это все хорошо, но до Scala далеко.

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

А зачем велосипед изобретать?

А зачем мыслить одним днём? Или сферический проЭкт на 48 war'ок не будет постепенно переписан и поставлен на какие-то новые рельсы новыми проггерами? А, нет же, создатели и архитекторы будут жить вечно, работая эту вечность на своих исходных местах. Typesafe потому и ломанулась с ребрендингом и java-векторами, чтобы начать наступление на этот новый рынок, который многие ещё даже не видят.

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

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

Чото они медленные тогда, лол. https://spring.io/blog/2013/05/13/reactor-a-foundation-for-asynchronous-appli...

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

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

Несмотря на все вливания бабла в Scala со стороны Typesafe она так и не стала мейнстримом, и не станет уже вовсе кажется.

Чтобы стать мейнстримом, надо чтобы что-то ещё перестало быть мейнстримом. Жаба — стандарт, а цель любой конторы — зарабатывать нормальные деньги. Может быть местной молодежи на тренингах индивидуального роста и рассказывают, что можно за 5 минут стать миллиардером, откопав клад перед носом у всего рынка, но на деле зарабатывание денег (не прибыли, а именно нормальных честных ДЕНЕГ) — дело небыстрое, затратное и рискованное. lagom как раз они начали пилить, чтобы дать шанс пользователям тормозных навороченных Oracle Enterprise AS спасти планету от глобального потепления и свой бизнес от лишних трат или даже краха.

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

которая намекает на то, куда будет двигаться мейнстрим.

Так а нафига тогда type^Wlightbend нужно, если в стандартной поставке вот-вот будет? Чтобы, как linkedin, в будущем обратно на обычную джаву с этого переходить?

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

typesafe == scala

Бренд «typesafe» вызывает у некоторой части мейнстрима (true-old-скульных джавистов, нынешних крупных CTO/CEO/ETC) приступы неуправляемой тошноты, ибо скала-школота-жабанеосиляторы-Bioreactor!11

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

В стандартной поставке будут интерфейсы Reactive Streams. Яркчайшая реализация которых — akka-streams уже как бы во всю на рынке, с java, scala и всеми делами. Ну дальше ход мысли понятен.

shahid ★★★★★
() автор топика
Последнее исправление: shahid (всего исправлений: 1)
Ответ на: typesafe == scala от shahid

Ты не понял вопрос. Зачем номральным людям, которые с помощью ПО деньги зарабатывают, связываться с поделками какой-то левой конторы и/или скалой, если в старой, доброй и обкатаной джаве все это скоро будет из коробки? И без кучи фп-ориентированых клоунов, пытающихся продать себя подороже?

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

Реактивное программирование — это реально мега-вектор на рынке уже сейчас. Он востребован. В стандартной джаве реализован только большой турбореактивный фейспалм. В jdk9 педалируются интерфейсы reactive streams, не реализации!

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

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

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

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

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

Ага, через 10 лет. А деньги рубить надо уже сегодня.

Да, как же мы без 1кк клонов твиттора тяжело живем :(

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

Ты мне как-то напоминаешь людей, которые за C копротивляются. А еще раньше такие люди говорили, что паровозы не нужны, а лошади ought to be enough for everybody.

А тем временем появляется такой JEP 286, в котором предлагается в джаву засунуть var/val.

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

Буду благодарен, если кто-то изложит, как он решает все эти задачи без Spring и главное зачем он так делает?!

Spring - отличный IoC контейнер.

IoC не нужен, явная инициализация рулит.

Spring DATA - удобный фремворк для доступа к данным.

JDBC + SQL

Spring Cache - банальное декларативное управление кэшем.

Декларативное уравление кэшем не нужно.

Spring MVC - замечательный фремворк как для создания REST API, так и Web приложений.

Это твой spring MVC жуткий комбайн который не нужен в мире, в котором есть Jersey и Restlet.

Spring AOP - фремворк для тех, кто не смог осилить AspectJ

Вообще не нужно. AOP изначально было мертворожденной идеей.

Spring Security - приличный Security фремворк.

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

Spring Boot - отличный фремворк использующий принцип

Convention over Configuration, позволяющий склеить все перечисленные за несколько минут и уходить домой с работы вовремя :-)

Только это не работает и все форумы забиты вопросами «как мне подружить Spring X и Spring Y». А еще оно разваливается на части за день до дедлайна.

Spring Test - позволяет все это очень удобно тестировать (как интеграционными так и unit тестами).

А без спринга работает голый JUnit.

Буду благодарен, если кто-то изложит, как он решает все эти задачи без Spring и главное зачем он так делает?!

Испольую мелкие легковесные библиотеки, пишу руками, утаскиваю из Java в сторонние сервисы все что возможно. Например, в крайнем проекте кэшированием и авторизацией занимается Nginx и в Java это все вообще не протекает.

Зачем так? Это позволяет писать код, которые работает быстрее чем C++, а на сэкономленные на железе деньги ходить в бордель.

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

Ты мне как-то напоминаешь людей, которые за C копротивляются. А еще раньше такие люди говорили, что паровозы не нужны, а лошади ought to be enough for everybody.

Я не говорю, что это ненужно. Я говорю, что учитывая потребности сегодняшнего дня, это нужно очень немногим.

А тем временем появляется такой JEP 286, в котором предлагается в джаву засунуть var/val.

И это прекрасно!

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

Забавно, но мне кажется что тоже самое когда-то говорили про GC в джаве.

Да, а медленное вытеснение С++, вместе с «отмиранием» шутки про Томми и «Джава не тормозит», началось сравнительно недавно. Угадаешь с 3х раз почему так?

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

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

Естественно это не относится к тем вещам, где счет идет на микросекунды: высокочастотный трейдинг использует С++ до сих пор.

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

Троллинг самого себя? :3

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

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

>Буду благодарен, если кто-то изложит, как он решает все эти задачи без Spring и главное зачем он так делает?!

Во всем этом комплекте только один нормальный компонент — Spring MVC. В 5-ке к нему прикрутят Reactive Streams и их можно будет начать пользоваться и в новых приложениях.
Все остальное — микс магии и костылей вокруг этой магии, этим можно пользоваться только по приговору суда. И не понятно зачем.

Чем делаете декларативные транзакции (или кто-то предпочитает руками?)
Как фремворк используете для безопасности?
Чем тестируете REST сервисы?
Чем делаете декларативное кэширование?
Управлением открытий, закрытий соединенней занимается в ручную?

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

Чем делаете декларативные транзакции (или кто-то предпочитает руками?)

Транзанкции в spring зло, так как весь механизм построен на thread local, и разваливается при попытке его сочетания с асинхронным кодом или отложенными вычислениями. Первое приближение - блок transactional в scalikejdbc, там проблемы похожие, но хоть четко понятно где какой контекст БД используется. Идеально — slick с его DBIO, там транзакция собирается в виде чего-то вроде pipeline и потом интерпретируется внутри библиотеки.

Еще в Spring все это достигается разной магией, через динамическое создание прокси-классов вокруг моих POJO. Штука сама по себе с разными подводными граблями.

Как фремворк используете для безопасности?

«Безопасность» в том или ином виде есть для любого фреймворка, тут уже вопрос в требованиях к ней.

Чем тестируете REST сервисы?

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

Чем делаете декларативное кэширование?

Незачем, кешированию не нужно быть деклоративным. Если речь про уменьшение boilterplate при работе с кешом, тот тут есть разные варианты.

Управлением открытий, закрытий соединенней занимается в ручную?

Этим занимается библиотека которая предоставляет доступ к БД.

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

мне нужен meta protocol, или хотя бы встроенный конструктор DSL, и/или встроенный парсер самого себя («программа есть данные»), что нужно для глубокого метапрограммирования и AOPа. Например, если я захочу немного поменять правила объектно-ориентированного протокола под себя, типа добавить или убрать множественное наследование, чтобы я мог это сделать.

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

скала конечно этого не умеет во всей полноте, надо смотреть в сторону хаскеллей и лиспов..

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

скала конечно этого не умеет во всей полноте, надо смотреть в сторону хаскеллей и лиспов..

clojure скорее всего тут или racket. ну а вообще тут кодогенерация нужна. т.к. большое кол-во абстракций, макросов потом приводит к нечитаемости кода. нужно генерировать код да и все. гугловцы сейчас все свои драйвера к google api на все языки просто генерируют. в коде так и написано )

abc
()
Ответ на: комментарий от X-Pilot

Spring 4.2? Т.е. все эти годы кто-то заботливо и незаметно для глаз портировал движок на всё более новую версию Spring?

DrLivesey
()
Ответ на: комментарий от X-Pilot

Смотреть часовую болтовню, чтобы понять ответ на вопрос?! Что касается ссылки на презентацию, то выражение «ConcreteService» доставляет. Я тут же вспомнил про любителя отлить в гранит...

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

Что касается ссылки на презентацию, то выражение «ConcreteService» доставляет.

А следующий слайд слабо посмотреть, раз уж лень тратить время на «болтовню»?

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

Не мое, но я согласен с оратором

Ну, «спасением джавы» они занимаются, фигача все на первом Play (у которого поток на запрос, mutable state, groovy для шаблонов и так далее) + JQuery вермишель. Не знаю, лучше ли это спринга.

trycatch ★★★
()
Ответ на: комментарий от X-Pilot

Следующий слайд - это где говорится, что Java is a victim of JCP? Это доставляет ещё больше! Ну и, по-моему, GWT и JSF никто из вменяемых людей уже не изпользует.

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

Довольно смешно читать поо то, как ты собрался менять правила ООП после того как наблюдаешь за тем насколько фундаментальная работа сделана в том же dot calcus. А ты вот так хочешь взять и все поменять :) Лучше оставить профессионалам это, а гибкости добиваться умелым моделирование теми средствами, которые есть.

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

Так что java на Akka больше коннектов держит чем erlang?

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

Какой самый классный WEB-Framework?

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

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

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