×Закрыть

Java дайджест #13: Немного про Microservices и MVC API

Ссылки, на которые лучше таки нажать (по мнению автора), отмечены знаком (!).

Microservices

(!) Microservice Design Patterns. Неплохая статья от Arun Gupta.

Eric Evans про DDD и Microservices.

Scaling Microservices at Gilt.

Evolutionary Architecture and Microservices. Больше «мотивационное», чем техническое видео по теме.

MVC API

View technologies for MVC 1.0. О том, как добавлять свои шаблонизаторы в MVC API.

Проект-заглушка для начала с MVC 1.0.

Простое TODO-приложение, реализованное на ozark (MVC 1.0).

Что-то вроде новостей

Думаю, всем пофиг, но Java снова на первом месте в индексе TIOBE.

Есть предложение сделать G1 Garbage Collector’ом по умолчанию.

Вышел EAP Upsource 2.0. Добавили возможность подключать несколько репозиториев к одному проекту. Да и этот релиз уже становится похожим на продукт.

Опубликовано покрытие тестами OpenJDK.

Вышел Guice 4.0, насколько я понял, основная «фича» — это поддержка Java 8.

Почитать и посмотреть

Немного про Thread’ы и Executor’ы.

(!) Класс дедлоков про дедлок классов.

Functional-Style Callbacks Using Java 8’s CompletableFuture

Немного про Spark Framework. По моему субъективному мнению, основная ценность этого фреймворка — в напоминании, что не энтерпрайзом единым. Но, может, кто-то его использует в продакшене?

Пример, как можно сделать язык запросов для REST API.

Most popular Java EE containers: 2015 edition. Еще одна статистика чего-то-там.

И снова меряемся. На этот раз — популярностью Java-библиотек.

Коллекция ссылок по JSF.

Reactive Programming with Jersey and RxJava.

(!) A beginner’s guide to Cache synchronization strategies.

How JPA 2.1 has become the new EJB 2.0. Много ненависти к аннотациям и немного рекламы jOOQ. Кстати, есть, кто использует эту самую jOOQ?

The Top New Java 8 Additions по мнению Takipi. Пункт 5 выглядит интересно.

Groovy and Grails Puzzlers

Немного про Ratpack и Grails 3.

Еще раз про тестирование.

Разное

Сегодня в рубрике «странное и сомнительно полезное» — ST-JS: Strongly Typed JavaScript.

(!) Bytecode features not available in the Java language.


Предложения и пожелания все еще принимаются или через завсклад и товаровэд администрацию ДОУ, или через твиттер @_silverwolf. Также можно оставлять комментарии в специально выделенной теме на форуме.

← Предыдущий выпуск: Java дайджест #12
Следующий выпуск: Java дайджест #14

LinkedIn

16 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Я использую Jooq в продакшене с PostgreSQL и Play2 уже пару лет, до этого был DataNucleus.
Могу сказать что сравнивать существующие DataMapper’ы на основе JPA с Jooq немного некорректно, это скорее история о «bytecode enhancing vs code generation». На практике у нас получается такая ситуация что Jooq и DataNucleus производительнее в 2-10х раз всё тех же iBatis’ов, Hibernate и EclipseLink. Вот JDO в рамках нуклеуса реализован очень даже замечательно, хотя мало кто о нём вспоминает. ИМХО сейчас в плане ORM’ов в Java полная ахинея — слишком много монструозных, неотпрофилированных и неоптимизированных решений построенных по принципу «лишь бы работало».

получается такая ситуация что Jooq и DataNucleus производительнее в 2-10х раз всё тех же iBatis’ов, Hibernate и EclipseLink ... построенных по принципу «лишь бы работало».
особенно хорошо просадка по перфоменсу видна на старых проектах, которым пришла пора обновиться. где кучу кода из сторед процедур переносят «на хибер». и начинается головняк, как бы это убрать все с ДБ сервера, запрятать SQL код поглубже, но вот чтобы по перфомансу после этого просадка была на десятки процентов. ну... в итоге, согласны чтобы в разы.

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

1. В большинстве случаев БД очень плохо нормализована — хранится очень много чего лишнего; приходишь в проект, спрашиваешь «а у вас модель БД нормализована ?» - в ответ все колышут «Да-Да, Конечно!», заходишь в psql, а там 8 табличек с ~40 столбцами и довольно кривыми индексами; потом долго материшся.
2. В хранимых процедурах нет ничего плохого, особенно если это встраиваемые процедуры на сишке в случае с PostgreSQL для агрегации и отображения в материализованных представлениях.
3. По поводу того что хранимые процедуры сложно поддерживать — большой предрассудок, есть довольно много средств миграции с поддержкой хранимых процедур, например тот же Liquibase. Другое дело что мало кто понимает как правильно реализовывать горячую миграцию и переключение схем.

Советую сначала попробовать jooq / DataNuclues, отпрофилировать хорошенько в hprof и YourKit/VisualVM под нагрузкой, допустим с jMeter, а потом говорить что-то о производительности.

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

п1. нормализация нередко приводит к ухудшению производительности
п2. размазанная бизнес логика
п3. в гит репозиторий проблемно их загонять.
п3а. проблемы с версионированием схем
п3б. проблемы с настройкой continuous integration

попробовать jooq / DataNuclues,
обычно не получается еще и потому что придется сильно много переписывать работающего кода.
а это — бизнес-риски.
а потом говорить что-то о производительности.
потом согласятся на обновление серверов :)

Это ваше личное субъективное мнение.
Почему-то у меня проблем вообще ни с чем с вышеописанного не возникало ...
Я предполагаю почему проблемы могут возникать, но не вижу смысла тут это обсуждать.
Советую разобраться с принципами работы существующих B-tree структур, особенно с cache-oblivious версиями.

Это ваше личное субъективное мнение.
избегаю писать свое субъективное мнение.

обобщение да, субъективно, пока я не предоставил какие-либо статистические данные.

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

так же как и докладами типа «Как нам спасти Java»

Советую разобраться с принципами работы
КОМУ вы советуете?

Менеджеру под которым, в управленческой пирамиде, еще три этажа менеджеров?

Немного про Spark Framework. По моему субъективному мнению, основная ценность этого фреймворка — в напоминании, что не энтерпрайзом единым. Но, может, кто-то его использует в продакшене?
Common, даже далекие от мира JVM Intel и Huawei не только юзают, а и активно контрибьютят. Yahoo юзает активно ML на сабже: www.youtube.com/watch?v=h8u_ZgjzHiQ
В Украинском аутсорсе есть вакансии тоже, насчет продакшна не знаю
jooble.ua/работа-spark

Кстати, использовать Spark из Java — удовольствие для гурманов, хоть и есть заточенный под нее API, некоторые моменты удручают (например, использование скаловского Tuple2). Все-таки родным для Spark остается Scala. Ну а Java да, она для энтерпрайзов (trollface)

Common, даже далекие от мира JVM Intel и Huawei не только юзают, а и активно контрибьютят. Yahoo юзает активно ML на сабже
А вы по ссылочку сходите таки :)

Упс, пардон, не думал, что есть ещё один Спарк, кроме Apache Spark. По ссылке сразу не ходил, поскольку и так слишком много в последнее время им занимался :). А так да, еще один клон Синатры.

И снова меряемся. На этот раз — популярностью Java-библиотек.

Еще рекомендую такую штуку — github.com/...s=stars&type=Repositories.
Удобно следить за трендами и иногда мона найти прикольные штуки.

Eric Evans про DDD и Microservices.
Спасибо!

Кстати у

jOOQ
есть еще отличный блог => blog.jooq.org

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

Да и автор фремворка — Lukas Elder очень отзывчивый. Ему если написать на почту то всегда отвечает.

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