Обновить
512K+

Java *

Объектно-ориентированный язык программирования

217,32
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Осенний Java-хардкор на Joker 2021

Время на прочтение17 мин
Охват и читатели6.1K

В октябре Java-разработчиков ожидает немало интересного: на новом Joker будут и хардкорные доклады, и любимые спикеры, и нестандартные форматы.

О хардкоре: конечно, без него не обходится ни один Joker, но в этот раз программный комитет особенно доволен получившимся. В списке докладов под катом мы пометили хардкорные значком ?.

О спикерах: будут и отлично знакомые участникам имена (Алексей Шипилёв, Джош Лонг, Евгений Борисов), и интересные новые. Например, будет парный доклад Мэтта Райбла и Брайана Демерса, а у обоих этих людей есть звание Java Champion — часто ли услышишь двух «чемпионов» сразу?

О форматах: доклады важны, но в этот раз дело не ограничится ими — например, Евгений Борисов в прямом эфире проведет техническое интервью на senior-разработчика. 

Под катом — полная программа, разбитая на тематические блоки.

Смотреть программу

Что такое библиотека Pebble Templates и зачем она нужна?

Время на прочтение6 мин
Охват и читатели4.5K

Эта статья будет полезной, если вам часто приходится искать более новые и изощренные решения в процессе реализации фичи. Мне, например, нужно было применить динамические фильтры к выборке из БД. При этом их нужно было использовать не в одном месте, а, например, в блоке WITH. Реализация через JPA Specification выглядела довольно сложно, а возможно, оказалась бы вообще невыполнимой. Даже при помощи JPA Repository потребовалось бы много лишних операций, маппингов и слияний. 

Читать далее

Сравниваем Java и Kotlin

Время на прочтение9 мин
Охват и читатели84K

Предлагаю начать с общих черт.

• Статическая типизация

• Бесплатны и с открытым кодом

• Код преобразуется в байт-код

• Интероперабельность

• Объектно-ориентированные языки программирования

Читать далее

Java 17: Foreign Functions & Memory API

Время на прочтение4 мин
Охват и читатели11K

На дворе Java 17, а значит пора разобрать еще один интересный JEP, а именно JEP 412: Foreign Function & Memory API, который является переосмыслением двух предыдущих: Foreign-Memory Access API и Foreign Linker API.

Новый API дает возможность взаимодействовать с кодом и данными вне runtime. Теперь Java может эффективно работать с нативными библиотеками и внешней памятью, заменив при этом JNI, улучшив производительность и стабильность, а также добавив возможность работать с разными видами памяти на разных платформах.

Читать далее

CWE Top 25 2021. Что такое, с чем едят и чем полезен при статическом анализе?

Время на прочтение8 мин
Охват и читатели21K

Впервые поддержка классификации CWE появилась в PVS-Studio с релизом 6.21, который состоялся 15 января 2018 года. С тех пор прошло уже очень много времени, и хотелось бы рассказать об улучшениях, связанных с поддержкой этой классификации в последних версиях анализатора.


https://import.viva64.com/docx/blog/0869_CWE_status_ru/image1.png


Читать дальше →

Записи воркшопов для Java-разработчиков по ActiveMQ, RabbitMQ, Apache Kafka

Время на прочтение2 мин
Охват и читатели9.5K

Летом прошёл онлайн-интенсив GET PROF IT: Messaging, посвящённый работе с инструментами, которые пригодятся Java-разработчикам. Для тех, кто только вернулся из отпусков и пропустил это событие, мы решили поделиться записями воркшопов.

Читать далее

Рекомендации по реализации тестового задания (и не только): Java проект с REST API

Время на прочтение6 мин
Охват и читатели13K

Эти рекомендации - адаптированный под публикацию результат 5-летних проверок выпускных работ участников нашей стажировки "Enterprise Java-разработчик". Часть из них относится только к выполнению тестового задания при устройстве на работу: Java-приложение с REST API. Часть - к разработке на Java. И часть - к разработке любых приложений. Надеюсь, что каждый найдет что-то полезное. Буду рад обсуждению спорных тем в комментариях.

Читать далее

Java на одноплатниках: легко и просто

Время на прочтение4 мин
Охват и читатели8.1K

Привет уважаемый читатель!

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

В результате блуждания по поисковикам, было найдено несколько возможностей:

1. Oracle Java ME – проект, скорее мертв, чем жив. Давным-давно, в 2006 году, Oracle прибило его гвоздями к Raspberry Pi Model B/STM32429I-EVAL/32746GDISCOVERY с минимальными требованиями по железу того времени. И так выглядит скорее заброшенным, то похоже не полетел.

2. Pi4j – неплохой проект от Robert Savage, который развивается до сих пор. Однако это просто враппер на WiringPi, который автор забросил и “прибитый” гвоздями к определенным платам. Сейчас на сколько я вижу, идут попытки отойти от этого.

3. Diozero – так же неплохой проект от Matthew Lewis, однако как и предыдущие два, “прибит” гвоздями к определенным SoC или платам.

Если я что-то упустил, пишите в комментариях.

А как же “Write once and run anywhere?”, спросит читатель. А вот никак и точка.

“Моргать светодиодом” хотелось, но Си было вспоминать лень, Питон учить не хотелось еще больше, а вся мощная экосистема java, которая имеется на текущий момент оставалась за бортом и не давала покоя. Плюс академический интерес.

Несмотря на то, что мир за пределами JVM представлял для меня темный лес, то задача выглядела интересно. Да и учетом того, что современные одноплатники уже начали переходить на 64 бит, имеют большие тактовые частоты и несколько ядер. Имеют на борту такие объемы Memory/Storage, за которые не то, что программист, геймер каких то 15 лет назад продал бы душу “кремневому дьяволу”, то условия и возможности современного железа достаточно сильно поменялись...

Читать далее

Измеряем производительность String.format() в Java

Время на прочтение6 мин
Охват и читатели8K

Я раньше считал, что JDK в целом хорошо оптимизирована, и если в JDK есть простой способ решения какой-то задачи, то он вполне подойдет для большинства ситуаций и будет работать хорошо.

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

В этом посте рассмотрим один из подобных кейсов: поразительно низкая производительность String.format() при простой конкатенации строк.

Читать далее

Выполнение запланированных заданий в Spring Boot

Время на прочтение12 мин
Охват и читатели159K

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

В этой статье мы покажем, как настраивать и запускать запланированные задания в приложениях Spring Boot.

Читать далее

Flutter: о разработке плагинов с интерфейсом ActivityAware

Время на прочтение6 мин
Охват и читатели5.8K


В былые времена клиенты присылали цветные изображения документов со сканера по емейлу. Кто ленился или не мог — отправлял свой загранник по почте. С этим неплохо справлялось решение от ABBYY. Потом появились телефоны и люди стали присылать фотографии паспортов. ABBYY сломался. Перешли на решение от Smart Engines и даже с фотографиями, посланными через WhatsApp особых проблем не было. Но потом пошли умные мобилки с включенными по умолчанию водяными знаками типа «Xiaomi 9T» часто перекрывающими важнейшую часть паспорта. Вдобавок к этому наличие в кадре на фотографии пальцев и бликов тормозило общение с клиентом.

Примеры паспортов, непригодных к распознаванию

Когда паспорт распознается в видеопотоке на телефоне клиента, то этой проблемы так остро не стоит. Почему?

  1. Мобильное ядро отображает рамку документа в процессе распознавания, не просто маску поверх видео, а именно рамку документа, находящегося в руках. По моим ощущениям, это дает человеку понимание, где не должно быть его пальцев. Вообще, это интересная тема для отдельного исследования.
  2. Система использует механизм сатурации данными и готова выдать результат только после определенной уверенности в них.
Читать дальше →

Как справиться с Debezium + MySql + Spring Could Streams, Part 1

Время на прочтение5 мин
Охват и читатели8.2K

Добрый день, Хаброжители!

Это моя первая статья на Хабре, любые замечания, предложения, пожелания приветствуются!

В этой статье (часть 1), я попытаюсь рассказать и показать как поднять и настрить stand along Debezium CDC + MySql server.

Читать далее

Миграция YAML конфигов или история одного парсера

Время на прочтение8 мин
Охват и читатели4.9K

Есть счастливые люди, которые могут себе позволить просто перезаписывать YAML конфиги в продакшене. Мне же повезло меньше - инсталляции у меня специфичные и конфиги часто настраиваются "под себя". К каждому релизу приходилось готовить отдельную доку для ручного апдейта конфигурации.

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

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

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

Читать далее

Ближайшие события

Разбираемся со сборкой мусора в Java — Java2Blog

Время на прочтение3 мин
Охват и читатели2.2K

В этой статье мы рассмотрим механизм сборки мусора на платформе Java.

Вместо теоретических объяснений я буду использовать схемы и примеры.

Читать далее

Разработка мультиагентной системы для рынка электроэнергии

Время на прочтение4 мин
Охват и читатели3K

Пока я пишу статью, я еду в поезде и рядом со мной 79 ребят со всей России, которые 18 предыдущих дней занимались проектами в области энергетики, и среди них едут 9 победителей этой смены, среди которых и я. Ну a здесь я хочу рассказать про то, какую лепту я внес в наш проект.

Читать далее

Мягкое удаление в Hibernate: неочевидные факты

Время на прочтение7 мин
Охват и читатели24K

Мягкое удаление (soft deletion) — это популярная в энтерпрайз разработке стратегия удаления, когда вместо физического стирания та или иная запись помечается как удаленная, а потом фильтруется во всех запросах на чтение. Применение мягкого удаления может быть оправдано целым набором требований: аудит, возможность восстановления удаленных записей, а иногда необходимо уметь удалять данные, при этом сохраняя на них ссылки из других записей… 

Вообщем, нам, как авторам JPA Buddy (плагина для IntelliJ), пришлось с этим плотно разбираться. В этой статье мы рассмотрим детали, которые зачастую не упоминаются в большинстве публикаций по этой теме, хотя крайне важны для принятия решения о способе реализации мягкого удаления в вашем приложении. Давайте посмотрим, с чем вы, вероятно, намучаетесь. 

Читать далее

Создание реалистичных тестовых данных для Java приложений

Время на прочтение9 мин
Охват и читатели8.6K

Чем ближе ваши тестовые или демонстрационные данные к реальному миру, тем лучше вы сможете протестировать приложение на UX, улучшить и отловить крайние случаи в процессе разработки. 

В этой статье я покажу вам, как использовать пример генератора данных Vaadin для создания демонстрационных данных для простой базы данных SQL. В статье показано, как создать полное приложение, используя Spring BootJPAProject LombokVaadin и MariaDB.

Читать далее

Java 17: Pattern Matching for switch

Время на прочтение3 мин
Охват и читатели60K

14-го сентября состоялась презентация Apple, в этот же день произошло не менее важное событие - релиз Java 17.

Среди новых фич подъехал паттерн матчинг для switch в preview моде.

История началась с того, что в jdk 16 расширили instanceof оператор, который теперь может принимать type pattern и выполнять матчинг по паттерну. Это маленькое изменение позволило упростить типичную конструкцию с проверкой на тип и последующее приведение.

Читать далее

Наиболее частые исключения Java

Время на прочтение4 мин
Охват и читатели5.6K

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

Читать далее

30 сентября — MeetUp Backend Stories

Время на прочтение1 мин
Охват и читатели1.6K

Привет!

В следующий четверг, 30 сентября, мы проведем митап для бэкенд-разработчиков.

Начало в 19:00 МСК, участие бесплатное, главное заранее зарегистрироваться, чтобы получить ссылку на трансляцию за час до её начала. Вести митап будет руководитель центра компетенций Java в Альфа-Банке — Павел Дерендяев.

А докладов будет три. Два от спикеров нашего банка, третий — от приглашённого эксперта из экосистемы недвижимости «Метр квадратный». Примерная продолжительность митапа — два часа.

Под катом — расписание и названия докладов.

Читать далее