Мир сходит с ума, заталкивая калькулятор для 2+2 в облака. Чем мы хуже? Давайте Hello World затолкаем в три микросервиса, напишем пару-тройку тестов, обеспечим пользователей документацией, нарисуем красивый пайплайн сборки и обеспечим деплой в условный облачный прод при успешном прохождении тестов. Итак, в данной статье будет показан пример того, как может быть построен процесс разработки продукта от спецификации до деплоя в прод. Инетересно? тогда прошу под кат

Java *
Объектно-ориентированный язык программирования
Java-дайджест за 14 декабря
Дело Google vs Oracle будет рассматривать Верховный Суд США. В последний раз. Запасаемся попкорном, русская рулетка начинается. Прочитать суть проблемы можно в оригинальной PDF-ке, в которой Oracle утверждает, что у них скопировали 11500 строк кода из 37 пакетов, тем самым стибрив черезвычайно сложную и важную архитектуру, и хотят они за это 8.8 миллиардов баксов. Google же возражает, что пытаться запатентовать API — это безумие какое-то, и без возможности открыто использовать API современная жизнь невозможна. Дуэль между мегакорпорациями будет проводиться в формате блица, когда Google нужно будет за 30 минут объяснить суть проблемы, а Oracle за 30 минут должны будут на всё это ответить.
JDK 14 перешел в первую фазу заморозки, про это есть сообщение в рассылке и твит Марка Рейнхольда. Много изменений, только JEP-ов 16 штук, последним подтвердили Foreign-Memory Access API. Репозиторий форкнут в jdk/jdk14. В новостях каждый раз перечислять одни и те же JEP-ы, список которых больше не изменится, кажется, не имеет смысла: полноценная развернутая статья будет сразу же после финального релиза Java 14.
Затирание файлов в Java

При разработке проекта постала необходимость удалять файлы, созданные приложением во время своего выполнения. Но требовалось, чтобы файлы удалялись не по завершению сеанса, работы ПК, а по требованию пользователя.
Модульная и повторно используемая Docker-среда с помощью Carnotzet

Мы создали инструмент, который интегрирует Docker и Maven для того, чтобы помочь сотням наших разработчиков управлять сложными средами разработки, состоящими из сотен сервисов, при этом прилагая минимум усилий. Это история о том, как сумасшедшая идея стала реальностью. Это история создания Carnotzet.
Умеем ли мы готовить Java, Kotlin RestController?

Как собрать образ Oracle DB для Testcontainers
Код должен тестироваться на той СУБД, с которой он будет работать. Testcontainers — это такая библиотека, которая позволяет использовать в юнит тестах практически любую СУБД с той же лёгкостью, что embedded базы данных типа HSQLDB или H2. Был бы только Docker образ

Именно сборке удобного для использования с Testcontainers докер образа посвящена эта статья. У меня при попытке его сделать возникли проблемы, и тут я делюсь своим решением.
Собирать буду образ для Oracle 11, потому он небольшого размера и мне версии 11 хватает. С другими версиями подход примерно тот же.
Для того, чтобы было понятно, как использовать образ, тут также будет код на Java, который демонстрирует применение образа для тестирования Spring Boot приложений. Способ подключения к testcontainers я привёл, наверное, не самый лучший. Но во-первых он демонстрирует как использовать настройки, заданные при создании образа. Во-вторых он простой. И в-третьих он почти не завязан на Spring, его можно воткнуть даже в джава код, в котором нет ничего, кроме public static void main.
Предполагается, что читатель обладает поверхностным знакомством с Docker и Testcontaners, а также хорошо знает Java. Для сборки нужно использовать linux, если собираете под Windows, нужно будет применить msys2 или что-то в этом духе.
Демонстрационный код залит на гитхаб вот сюда https://github.com/poxu/testcontainers-spring-demo Поправленные скрипты для сборки образа можно посмотреть в моём форке Оракловских инструкций https://github.com/poxu/docker-images/tree/master/OracleDatabase/SingleInstance
Отличия между C++ /Visual Basic и Java на общем уровне (для начинающих и учащихся)
Для этого попытаюсь рассмотреть вкратце основные конструкции языков программирования а именно:
Учебник по Spring Boot Admin

Контролируйте и управляйте своими приложениями Spring Boot с помощью приятного пользовательского интерфейса поверх конечных точек Spring Boot Actuator.
Spring Boot Actuator
Actuator — это модуль Spring Boot, который добавляет конечные точки (endpoint) REST / JMX в ваше приложение, чтобы вы могли легко отслеживать и управлять им в производственной среде. Конечные точки предлагают проверку работоспособности, мониторинг метрик, доступ к журналам, дампам потоков, дампам кучи, информации об окружающей среде и многое другое. Автор подробно рассказал об Actuator в следующей статье:
Actuator: Spring Boot Production Monitoring and Management
Мониторинг и управление вашим работающим приложением с помощью Spring Boot Actuator 2.x. Соберите метрики или проверьте здоровье приложения.
IntelliJ IDEA 2019.3: оптимизация производительности и улучшение качества
В этом релизе мы сосредоточились на производительности и качестве. Вместе с другими командами JetBrains, мы занимались оптимизацией производительности, повышением отзывчивости интерфейса, улучшением существующей функциональности.
Чтобы правильно расставить приоритеты, мы полагались на ваши отзывы и благодарим всех, кто делился идеями и сообщал об ошибках в нашем трекере. В результате мы исправили более 1600 проблем, которые в общей сложности получили около 4000 голосов пользователей.
Мы также работали над поддержкой новых фреймворков для создания микросервисов, таких как Micronaut, Quarkus и Helidon, и сделали долгожданную поддержку MongoDB.
#Назаметку. Осторожно, атомарные операции в ConcurrentHashMap

В Java с незапямятных времён есть замечательный интерфейс Map и его имплементации, в частности, HashMap. А начиная с Java 5 есть ещё и ConcurrentHashMap. Рассмотрим эти две реализации, их эволюцию и то, к чему эта эволюция может привести невнимательных разработчиков.
Warning: в статье использованы цитаты исходного кода OpenJDK 8, распространяемого под лицензией GNU General Public License version 2.
Утренний Java-дайджест за 12 декабря
- Окончание жизни Spring Boot 2.1.x намечено на 1-е ноября 2020. Какие-то обновления до этой даты все еще будут, а после — пропадут. Нужно обновляться на 2.2. Сама процедура обновления не кажется сложной, инструкции есть в wiki. Там же есть список поддерживаемых версий.
В некотором царстве, не в «спринговом» государстве. Доклад Яндекса
— Всем привет, меня зовут Кирилл. Я буду сегодня рассказывать про Dependency Injection.
Java-дайджест за 10 декабря
Вышла четвертая альфа-версия «Remnants of the Precursors» — написанного на Java бесплатного аналога «Master of Orion» (это игра 1993 года). Пятую альфу обещают 5-го сентября. Автор обещает выложить исходники после перехода в бету. Скачать четвертую альфу можно по ссылке.
Вышла NestedJ — библиотека, которая в виде репозитория Spring Data реализует сортированное дерево, оптимизированное на чтение. Логика обхода в этой библиотеке стоит O(n) и позволяет делать такие штуки, как поиск узлов-детей и узлов-родителей. 144 коммита и 31 звездочка на GitHub.
Ближайшие события
Ускоренная разработка с помощью Spring Boot DevTools
Настройка
Как обычно при разработке на Spring Boot, настройка достаточно проста. Все, что вам нужно сделать, это добавить правильную зависимость, и готово. Spring Boot находит ее и автоматически настраивает DevTools соответственно.
Плагинное приложение на Java без боли
- Нам не понадобятся специальные библиотеки или фреймворки (OSGi, Guice и т.п.)
- Мы не будем использовать парсинг байткода с помощью ASM и подобных библиотек.
- Не будем писать свой загрузчик классов.
- Не будем использовать рефлексию и аннотации.
- Не понадобится возня с classpath для поиска плагинов. Мы вообще не будем трогать classpath.
- Также мы не будем использовать XML, YAML или какие-либо другие декларативные языки для описания точек расширений (extension point’ов в плагинах).
Однако всё же есть одно требование — такое решение будет работать только на Java 9 или выше. Потому что оно будет основано на модулях и сервисах.
Пишем простое веб-приложение используя Spring MVC, Spring Data JPA и Hibernate
В этом руководстве по Java Spring вы узнаете, как настроить Spring MVC приложение для работы с Spring Data JPA, разработав простое веб-приложение, которое позволяет управлять информацией о клиентах.
Разработка MQ JMS приложения на Spring Boot

Разработчики приложений, работающие на Java, при использовании интерфейса JMS, часто предпочитают работать со Spring Framework. Spring может упростить написание кода новых приложений, предоставляя шаблоны для общих паттернов (templates for common patterns) и успешно используется в течение многих лет с классами MQ JMS. Класс Spring JmsTemplate является ключевым интерфейсом, но он по-прежнему зависит от конфигураций и зависимостей в коде.
Spring Framework включает в себя различные модули для различных нужд. Одним из таких компонентов является Spring Boot. Spring Boot стартеры удобно подтягивают все зависимости и библиотеки авто-конфигураций, необходимые для использования конкретной технологии. Это позволяет очень легко начать работу с новым приложением и технологией, быстрее, чем работать непосредственно с классами, такими как JmsTemplate. Итак, как мы можем воспользоваться этим легким доступом для приложений MQ?
Переведено @middle_java
В самом популярном фрагменте кода за всю историю StackOverflow ошибка!
Давным-давно…
Еще в 2010 году я сидел в своём офисе и занимался ерундой: развлекался код-гольфингом и накручивал рейтинг на Stack Overflow.
Моё внимание привлёк следующий вопрос: как вывести количество байт в удобочитаемом формате? То есть как преобразовать что-то вроде 123456789 байт в «123,5 МБ».

Старый добрый интерфейс 2010 года, спасибо The Wayback Machine
Размышления на тему ООП и состоянии объектов
Программный код пишется сверху вниз. В том же порядке читаются и выполняются инструкции. Это логично и все давно к этому привыкли. В некоторых случаях можно поменять порядок операций. Но иногда очерёдность вызовов функций важна, хотя синтаксически это неочевидно. Получается, что код выглядит рабочим, даже после перестановки вызовов, а результат оказывается неожиданным.
Однажды подобный код попался мне на глаза.
Кастомизируем маппинг контроллеров Spring MVC
Введение
Недавно столкнулся с задачей реализовать контроллер, различным образом обрабатывающий ситуации, где есть параметры запроса и где их нет. Проблема усугублялась тем, что нужны были именно два разных метода в контроллере. Стандартные возможности Spring MVC не позволяли этого сделать. Пришлось копнуть чуть глубже. Кому интересно — добро пожаловать под кат.
Вклад авторов
olegchir 4056.4tagir_valeev 2369.0phillennium 1516.423derevo 1271.0ARG89 1078.2spring_aio 957.6igor_suhorukov 945.2dbelob 902.0doom369 826.0alizar 756.0