В своем прошлогоднем выступлении в рамках Google I/O Ray Rayan поведал аудитории о том, как правильно стоить архитектуру более-менее крупных GWT-проектов. Одна из его рекомендаций — использование шаблона (паттерна) Command для оргиназации RPC-сервисов. В данной заметке я постараюсь вкратце осветить данный подход на примере простейшего GWT-приложения. Для диспетчеризации RPC-вызовов будет использована библиотека gwt-dispatch GWT-Dispatch. Сразу хочу предупредить, что эта статья является симбиозом, осмыслением и компиляцией нескольких источников (GWT-Dispatch Getting Started, GWT MVP Example). Рассматривайте ее как руководство к быстрому старту на пути правильного построения GWT-приложений. Весь материал разработан с учетом того, что серверная реализация RPC-сервисов также выполняется на языке Java.
REST-сервис на Java — это просто
Многим программистам Java-технологии могут показаться монструозными и сложными для понимания. В этой небольшой статье я бы хотел показать, что при желании можно собрать приложение из довольно простых компонентов, не прибегая к мега-фреймворкам.
RoboGuice или «Андроид подсел на инъекции»
Как несложно догадаться, RoboGuice основан на Google Guice.
Сразу оговорюсь, что в качестве перевода слова «injection» я буду использовать слово «инъекция».
Зачем колоться?
Думаю, что у многих читателей сразу возникнет вопрос: «Зачем эти сложности с CDI на мобильной платформе? Наверняка это всё занимает много места и медленно работает.»
Попробую убедить таких читателей в обратном, а именно в том, что CDI на мобильной платформе очень даже жизнеспособен и существенно облегчает жизнь разработчикам.
Магический Репозиторий: интеграция Spring Data-JPA и Google Guice
Не так давно на Хабре был хороший пост посвященный проекту Spring Data-JPA.
Проект меня очень впечатлил, т.к. он предлагал хорошо продуманное решение для работы с репозиториями.
Собственные наработки на эту тему у нас имелись, однако Spring Data-JPA был намного более элегантным и функциональным решением.
Была одна загвоздка — проекты с которыми я работаю построены с применением Google Guice.
В свое время это был мой осознанный выбор и в целом он до сих пор устраивает как команды проектов, так и заказчиков.
… но концепция репозиториев от Spring Data-JPA была слишком вкусной…
Проект меня очень впечатлил, т.к. он предлагал хорошо продуманное решение для работы с репозиториями.
Собственные наработки на эту тему у нас имелись, однако Spring Data-JPA был намного более элегантным и функциональным решением.
Была одна загвоздка — проекты с которыми я работаю построены с применением Google Guice.
В свое время это был мой осознанный выбор и в целом он до сих пор устраивает как команды проектов, так и заказчиков.
… но концепция репозиториев от Spring Data-JPA была слишком вкусной…
Командный паттерн вызова удаленных процедур (RPC) в Android
Sandbox
Предисловие
Недавно я начал свое знакомство с платформой Android. На определенном этапе необходимо было проверить, как тут обстоят дела с удаленным вызовом процедур или, проще говоря, клиент-серверным взаимодействием.
Поначалу была надежда, что платформа позволит использовать технологию EJB. После некоторых поисков в Интернете, я убедился, что это не так просто. Большинство источников рекомендовало использовать вебсервисы как альтернативу, т.к. EJB слишком тяжеловесна для Android. Для вебсервисов же рекомендовался фреймворк ksoap2-android.
Понатыкавшись на различные грабли при первоначальном изучении ksoap2, я дошел до этапа, когда необходимо было послать и получить с сервера объект своего кастомного типа. Воспользовавшись поиском нашел вот эту статью. Оттуда почерпнул, что каждый кастомный объект должен реализовать интерфейс KvmSerializable. Это же подразумевало, что мы должны реализовать методы для сериализации и десериализации объекта. Поскольку в теории предполагалось использовать больше сотни собственных объектов, идея писать реализацию KvmSerializable для каждого из них как-то не вызывала у меня энтузиазма.
Перевод legacy-проекта на Dependency Injection. Путь Ситха
Tutorial
Внесу и свой вклад в тренд темного программирования.
Многим из вас знакома дилемма: использовать ли DI в своем проекте или нет.
Поводы перехода на DI:
Допустим, у нас есть большой рабочий проект, принято решение: переводить на DI. Разработчики чувствуют свой потенциал, уровень мидихлориан в крови зашкаливает.

Путь тебя ждет тернистый и долгий, мой юный падаван.
Если проект большой и в нем много разработчиков, одним коммитом вряд ли удастся сделать такой рефакторинг. Поэтому мы используем несколько плохих практик, упростив переход, а затем от них избавимся.
Многим из вас знакома дилемма: использовать ли DI в своем проекте или нет.
Поводы перехода на DI:
- создание развитой системы авто-тестов
- повторное использование кода в различном окружении, в том числе в различных проектах
- использование 3rd-party библиотек, построенных на DI
- изучение DI
- усложнение понимания кода (поначалу)
- необходимость конфигурирования контекста
- изучение DI
Допустим, у нас есть большой рабочий проект, принято решение: переводить на DI. Разработчики чувствуют свой потенциал, уровень мидихлориан в крови зашкаливает.

Путь тебя ждет тернистый и долгий, мой юный падаван.
Если проект большой и в нем много разработчиков, одним коммитом вряд ли удастся сделать такой рефакторинг. Поэтому мы используем несколько плохих практик, упростив переход, а затем от них избавимся.
Модули Java 9 и внедрение зависимостей: используем Guice
Translation
Коллеги, привет!
Вот и пятница, до выходных еще далеко, поэтому мы надеемся, что сравнительно сложный текст вас не очень смутит.
Складывается впечатление, что модульная организация Java 9 потребует от программиста недюжинной изобретательности, и один из перспективных вариантов адаптации к такому дивному новому миру — это внедрение зависимостей. Именно по этому поводу внятно и интересно высказался в блоге O'Reilly уважаемый Пол Бэккер (Paul Bakker), один из авторов книги "Java 9 Modularity"

Приятного чтения и не забудьте проголосовать пожалуйста!
Вот и пятница, до выходных еще далеко, поэтому мы надеемся, что сравнительно сложный текст вас не очень смутит.
Складывается впечатление, что модульная организация Java 9 потребует от программиста недюжинной изобретательности, и один из перспективных вариантов адаптации к такому дивному новому миру — это внедрение зависимостей. Именно по этому поводу внятно и интересно высказался в блоге O'Reilly уважаемый Пол Бэккер (Paul Bakker), один из авторов книги "Java 9 Modularity"

Приятного чтения и не забудьте проголосовать пожалуйста!
Guice всемогущий: assistedinject, multibindings, generics
Sandbox
В последнее время чаще стал встречать команды, которые используют Guice в качестве DI фреймворка. Стал его бояться (слезать с любимого Spring!?), и, как это обычно в жизни и бывает, страхи мои материализовались — я попал на проект, на котором активно используется Guice…
В интернете уже накопилось изрядное количество публикаций (в том числе и русскоязычных) по данному фреймворку, что не может не радовать. Однако, на проекте я столкнулся с ситуацией, готовое решение для которой мне не удалось найти.
В статье я в очередной раз покажу практическое использование Guice и некоторых его extensions: assistedinject, mutibindings , а также работу с generics. Сначала я опишу суть задачи, а затем итеративно приду к ее решению.
В интернете уже накопилось изрядное количество публикаций (в том числе и русскоязычных) по данному фреймворку, что не может не радовать. Однако, на проекте я столкнулся с ситуацией, готовое решение для которой мне не удалось найти.
В статье я в очередной раз покажу практическое использование Guice и некоторых его extensions: assistedinject, mutibindings , а также работу с generics. Сначала я опишу суть задачи, а затем итеративно приду к ее решению.
В некотором царстве, не в «спринговом» государстве. Доклад Яндекса
Spring — мощный Java-фреймворк, доступный в опенсорсе. Я решил рассказать, для каких задач на бэкенде Spring оказывается полезным и какие у него плюсы-минусы в сравнении с другими библиотеками: Guice и Dagger 2. Рассмотрим инъекцию зависимостей и инверсию управления — вы узнаете, с чего лучше начать изучение этих принципов.
— Всем привет, меня зовут Кирилл. Я буду сегодня рассказывать про Dependency Injection.
— Всем привет, меня зовут Кирилл. Я буду сегодня рассказывать про Dependency Injection.
Создаем GraphQL API с помощью Guice и Spark
Recovery mode
Tutorial

GraphQL это современный язык запросов для получения данных с сервера. Существует большое количество документации по построению API для целого вороха платформ, но к сожалению официальная документация для Java содержит лишь один пример, предполагающий построение приложения на базе Spring Framework. Пример скрывает некоторые детали реализации, заставляя пользователя читать исходники. В статье ниже мы это исправим и создадим аналог на связке Google Guice и Spark. Перед тем как продолжить я рекомендую ознакомиться с оригинальным туторалом, т.к. я не буду углубляться в архитектуру библиотеки и описания сущностей GraphQL Java