Обновить
512K+

Java *

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

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

Мигрируем Java Spring Boot приложение на Kotlin

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели10K

Доброе время!

Немного статистики по Kotlin: по недавней выборке на hh.ru в вакансиях "программист, разработчик" по слову Java и Kotlin почти треть вакансий (а в некоторых регионах больше) требуют владения Kotlin. А по последнему  отпросу от AZUL 2023 47% организаций используют Kotlin. Таким образом освоив Kotlin и добавив в резюме репозиторий с проектом на нем вы получите на 30% больше возможностей!

Как известно, лучший способ выучить новый язык программирования - это пройти курсы сделать на нем проект. Для Java программистов на мой взгляд самый простой и эффективный способ - взять собственный небольшой Spring Boot REST API проект и сделать его миграцию.

В рамках наших курсов "Из Middle в Senior" (см. предыдущий пост по курсу «Работа с документами в Java») я выпустил новый курс Spring Boot REST API приложение на Kotlin и хочу поделиться здесь особенностями миграции и полезными ссылками для тех, кто захочет это сделать самостоятельно. Статья в помощь тем, кто решил мигрировать на Кotlin свой Java проект, НЕ для изучения основ Kotlin.

Итак, приступим:

На грани ИИ: пример поиска и обработки векторов в PostgreSQL + pgvector

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели27K

На Хабре было много упоминаний pgvector в обзорах Postgresso. И каждый раз новость была про место которое где-то за границей и далеко. Многие коммерческие решения для хранения и поиска векторов в базе данных нынче не доступны, а pgvector доступен любому, тем более в самой популярной базе в России. Применим pgvector для задачи поиска похожих домов по инфраструктуре для детей в Москве.

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

Читать далее

Производительность базового поиска в Ozon как культурный феномен

Уровень сложностиСредний
Время на прочтение22 мин
Охват и читатели28K

В этой статье я расскажу вам о том, как мы в Ozon оптимизируем базовый поиск: как у нас выстроены процессы, как найти бутылочное горлышко, конкретные рекомендации по написанию горячего кода, реальные примеры значимых оптимизаций и что делать, когда все низко висящие фрукты уже сорваны, а хочется ещё.

Читать далее

Эмулятор QUIK: как наладить тестирование вендорного продукта

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели4.3K

Привет, Хабр! С вами Роман Потапов и Сергей Попков, ведущие специалисты по тестированию РСХБ‑Интех. В сегодняшнем материале поговорим про эмулятор отечественного биржевого терминала QUIK — посредника между системой брокера и биржами. Программный комплекс QUIK получает информацию из бирж и передает ее в систему брокера, в другом случае сам брокер идет в QUIK и получает биржевую информацию от него. Поскольку тестирование с полноценным QUIK проводить невозможно, мы сделали собственный эмулятор.

Читать далее

Обеспечение обратной совместимости gRPC API с помощью protolock в GitHub Actions

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели2.8K

В этом посте я поделюсь с вами подробной инструкцией по настройке автоматической проверки обратной совместимости gRPC API с помощью protolock в GitHub Actions.

Читать далее

Эффективное создание и деплой gRPC API с помощью GitHub Actions и Packages для проекта на Kotlin и React

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели7K

В этом посте я покажу, как с помощью GitHub Actions легко реализовать генерацию и публикацию gRPC API пакетов в GitHub Packages, в реестрах Apache Maven и npm. Если вы хотите освоить GitHub Packages для своих проектов и научиться генерировать gRPC API для сервисов на Kotlin/Java и gRPC-web клиентов — добро пожаловать под кат.

Читать далее

Потоки в Java: От рождения до смерти. Введение в многопоточность

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели31K

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

Жизненный цикл потока - основная концепция Java, которую мы подробно рассмотрим в этой статье. Мы будем использовать краткую иллюстрированную диаграмму и фрагменты практического кода, чтобы более глубоко понять состояния потока во время его выполнения. Эта статья о создании потока - отличное начало для понимания потоков в Java.

Читать далее

Релиз Jmix 2.1: что нового?

Уровень сложностиСредний
Время на прочтение12 мин
Охват и читатели2K

Готовы поделиться ключевыми обновлениями, которые вы найдете в свежем релизе Jmix 2.1. 

Для тех, кто хочет знать все, полную информацию об изменениях можно найти в документации Что нового

Читать далее

Самые удобные дома Москвы для жизни семьи с ребенком

Уровень сложностиПростой
Время на прочтение11 мин
Охват и читатели9.6K

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

Мой рейтинг домов будет основан только на количественных метриках пешеходной доступности. Все расчеты основаны на данных проекта OpenStreetMap для жилых домов, которые ближе 2км пешком от входа в метрополитен или МЦК, а это значит что у этих домов нет проблем с транспортной доступностью. Рассчитаем самые удобные дома для жизни с детьми в районах Москвы.

Читать далее

Garbage Collection и JVM

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели98K

Привет, Хабровчане!

JVM работает как хорошо отлаженный механизм, автоматически распределяя и освобождая память. Это и есть суть Garbage Collection. Это процесс, который автоматически находит и удаляет объекты, которые больше не используются вашим приложением. Благодаря этому, разработчики могут сосредоточиться на логике приложения, не беспокоясь о ручном управлении памятью.

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

Читать далее

Мастерство многопоточности: Превращаем Java в шедевр параллельного программирования

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели17K

Всем привет! В этой статье я бы хотел поверхностно пройтись по многопоточности в Java, объяснить, где она используется и зачем нужна.Приятного прочтения!

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

Java обладает встроенной поддержкой многопоточности, предоставляя разработчикам удобные инструменты для создания и управления потоками выполнения. Это позволяет реализовать параллельное выполнение различных частей программы, что приводит к улучшению производительности и оптимизации ресурсов компьютера. В данной статье мы рассмотрим основные концепции многопоточности в Java, ее преимущества, а также передовые методики работы с потоками выполнения.

Читать далее

Как использовать Spring в качестве фреймворка для Flink-приложений

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

Всем привет, меня зовут Александр Бобряков. Я техлид в команде МТС Аналитики, занимаюсь Real-Time обработкой данных. Недавно мы начали использовать фреймворк Apache Flink, и я решил поделиться на Хабре своим опытом внедрения этой технологии в наши продукты в цикле статей. В предыдущей части я рассказывал про основные концепции потоковой обработки данных. А ещё затронул архитектуру и главные механизмы Apache Flink.

В этой статье начнем разработку Flink-приложения с использованием фреймворка Spring. Изучим структуру приложения, основные плагины и полезные настройки. Развернем Flink-кластер в Docker и попробуем запустить первое Flink-задание. Структура приложения будет постепенно развиваться в последующих статьях.

Читать далее

Микросервисы на основе событий с Kafka Streams и Spring Boot

Уровень сложностиСредний
Время на прочтение32 мин
Охват и читатели27K

Всем привет! Это моя первая статья на Habr, так что не судите строго за стиль, а вот по содержанию буду рад любой конструктивной критике.

Статья основана на публикациях Confluent о том, как можно реализовать микросервисную архитектуру на основе событий с помощью Kafka Streams и KSQL.

Читать далее

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

Тестируем Spring Boot приложения через Spock Framework

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели6.9K

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

В статье описан процесс интеграции Spring Boot и Spock Framework, а также приведены примеры тестирования в BDD подходе.

Читать далее

Эта неделя в мире Java (21 ноября)

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели5.2K

Все сенсации, интриги, расследования, которые вам нужны 21 ноября.

Брайан Гёц — гриб (видео под катом, интервью с @boomburum)

jHipster требует Java 21 и не согласен на меньшее

Живой мастер-класс по JUnit от JUnit-джедая

Депо поездов имени В.В. Спринга

Тонна фиксов CVE уязвимостей

Первые попытки поддержать CRaC

Новая поделка: Penna для логов в JSON

Обновы в Quarkus, Micronaut, Payara, OpenLiberty, Mojarra, Grails, Tomcat...

Ничоси. Читать далее

Генерация контрактов OpenApi или прикладной API first: oneOf, anyOf, allOf

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели26K


В продолжение истории с генерацией по спецификации OpenAPI покажу несколько примеров с использованием композиции и полиморфизма.

OneAllAnyOf

Spring и Hibernate простыми словами: обзор для новичков

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели39K

Spring и Hibernate — два популярных инструмента для Java, которые используются в разработке приложений. В этой статье мы исследуем их основные функции и особенности, как они работают вместе и почему так высоко ценятся в IT-индустрии. А сложные концепции разбираем на понятные кусочки, которые мягко введут в курс дела любого новичка: программиста, аналитика или менеджера по продукту.

Читать далее

Java-инспекции в IDEA 2023.2

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели4.2K

Это ретроспективный пост про Java-инспекции IntelliJ IDEA 2023.2, в преддверии 2023.3 (которая сейчас в состоянии Beta 2). Несмотря на то, что эта версия вышла еще в июле, не все в точности помнят, что же там произошло, и какую версию они вообще используют.

А между тем, там не всё хорошо. Например, баги с тэгом @snippet до сих пор не поправили.

Чтобы самому воспроизвести новости из ченжлога - нужно набирать много кода и проверять их. Это лень, это мы не делаем. Вместо этого, мы смотрим этот короткий пост с PNG-картинками, показывающими основные фишки.

Залетайте под кат и погнали!

Читать далее

IntelliJ IDEA 2023.2. Долгожданный LSP, встроенный AI-чат, апгрейд до Windows 10 и -Xmx2G

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели17K

Это ретроспективный пост фичей IntelliJ IDEA 2023.2, в преддверии 2023.3 (которая сейчас в состоянии Beta 2). Несмотря на то, что эта версия вышла еще в июле, не все в точности помнят, что же там произошло, и какую версию они вообще используют.

Идея раздулась до 2 гигабайт хипа, появилась поддержка LSP-серверов, и теперь вам нужно проапгрейдиться с Windows 7 минимум до Windows 10.

Из мелочей: появился чата с нейронкой "AI Assistant". Профилировщик научился отображать подсказки прямо в редакторе, а интеграция с GitLab позволяет меньше переключаться между браузером и IDE.

Хотите узнать подробней?

Восхитительно! Читать далее

Добавление micrometer-метрик для взаимодействий по SOAP

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели3.7K

Когда мы хотим знать, в каком состоянии находятся системы, с которыми наше приложение взаимодействует, мы используем механизм метрик. Самым распространенным механизмом работы с метриками в приложениях на Spring Boot является micrometer.

Для интеграций по HTTP с использованием REST очень удобно использовать spring-boot-starter-actuator. Актуатор уже из коробки предоставляет набор из http_client_requests и http_server_requests метрик с разбивкой по uri, method и результату.

Но остались еще проекты, которые взаимодействуют по протоколу SOAP. Хотя экосистема Spring (как и ванильная Java) предоставляют возможность собирать веб-сервисы и клиенты для протокола SOAP, но коробочного решения для снятия метрик с таких клиентов не существует.

Читать далее