Обновить
122.37

Java *

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

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

Весенние конференции JRG: онлайн и офлайн, новые и любимые

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

Этой весной мы проведём ряд конференций, и среди них целых три новых (про Go, ML и безопасность приложений). Одни мероприятия будут полностью онлайновыми, а другие пройдут в  Москве (но и к таким возможно подключиться удалённо).

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

Этот пост — сразу обо всём конференционном сезоне:
Flow (системный и бизнес-анализ), 12 марта, онлайн
SafeCode (безопасность приложений), 13-14 марта, онлайн
GoFunc (разработка на Go), 14-15 марта, онлайн
TechTrain (профессиональный рост в IT), 6 апреля
HolyJS (JS-разработка), 15 апреля в онлайне и 26-27 апреля в Москве
Heisenbug (тестирование), 16 апреля в онлайне и 22-23 апреля в Москве
JPoint (Java-разработка), 17 апреля в онлайне и 24-25 апреля в Москве
Mobius (мобильная разработка), 14 мая в онлайне и 20-21 мая в Москве
C++ Russia (понятно что), 15 мая в онлайне и 22-23 мая в Москве
I'ML (работа с ML), в июне, онлайн

Читать далее

Без ручного нет автоматизированного. Простой тест на Java для начинающих QA

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

Теперь мы можем сделать вывод, что автоматизация - это ручные тесты, переведённые в автоматический процесс. И если нет ручных, то нет и автотестов.

Хочешь кататься, люби и саночки возить - это как раз про проектирование тест-кейсов. Мы конечно говорим не про автоматизаторов, которые пишут автотесты по ТК от ручных тестировщиков. Мы говорим про QA, который одновременно выполняет роль manual и automation engineer в команде.

Сегодня мы будем писать на Java

⚠️ Для того чтобы Яндекс не поставил капчу на наш парсинг сайта, нам необходимо сначала зайти на любую страницу, к примеру google translate и только после мы загружаем https://music.yandex.ru/home. Задача избежать прямого посещения сайта.

Шаг 1 Откроем https://music.yandex.ru/home в инкогнито
Шаг 2 Нажимаем на крестик для закрытия страницы онбординга

Написать автотест на Java

Apache Maven — введение в автоматизированную сборку проектов (часть 1)

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

Добрый день Хабр, в данной статье мы разберём один из сборщиков проектов Apache Maven. Начнём с установки, настройки и сборки нашего первого проекта.

Apache Maven - это фреймворк по автоматизации и сборки Java-проектов. Обычно просто называют Maven.

Самую подробную информацию вы всегда можете найти на официальном сайте Maven.

А также центральный репозиторий Maven где собрано всё самое необходимое для работы с Maven.

Читать далее

Spring Data JPA и Hibernate: решаем проблему динамически изменяемого запроса к базам данных

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

Привет, Хабр! Меня зовут Николай Пискунов, я ведущий разработчик в подразделении Big Data. В блоге beeline cloud мои коллеги уже знакомили вас с SOLID, заглядывали под капот Python. Я же расскажу о том, как с наименьшими затратами получить динамически изменяемый запрос к БД, используя Spring Data JPA и Hibernate. 

Самый простой пример — реализация эндпоинта, который обрабатывает запросы фильтра интернет-магазина. Например, когда вы задаете характеристики, согласно которым возвращаются определенные товары.

Читать далее

DataMaps. Рассказ о нашей ORM на Kotlin

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

Уже несколько лет мы с командой трудимся над платформой, которая официально называется БФТ.Платформа, а менее официально - Ice. В основном наша платформа используется в органах власти и государственных учреждениях.
Сегодня хотелось бы рассказать не обо всей платформе, а только об одном из ее компонентов - ORM (object-relational mapping) - фреймворке DataMaps.

Данная статья не инструкция или справка. Это достаточно поверхностный обзор, цель которого — получить первичную обратную связь: интересен ли наш фреймворк сообществу?

Внутри БФТ-Холдинга Datamaps зарекомендовали с одной стороны, как легкий, наглядный и понятный для разработчиков фреймворк, с другой стороны, мощный по своим возможностям.

Ознакомиться

Туториал по нотификациям через RSocket: от концепции до запуска в продакшн

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

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

После анализа различных вариантов, мы остановились на WebSocket в связке с RSocket.

Но есть нюанс — информации по RSocket почти нет. Технология относительно новая и просто так сразу на ней не начнешь делать проекты. Для начала нужно изучить теорию, овладеть терминологией и при необходимости, собрать тестовый прототип, чтобы появилось понимание, как RSocket работает изнутри. Но попробуй найди эту информацию.

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

Поэтому, когда мы закончили проект, то решили восполнить (или попытаться) этот пробел в русскоязычной среде на реальном примере. Надеемся, что эта статья поможет вам разобраться в применении RSocket over WebSocket и сократит время на погружение :) 

Читать далее

Как сократить потребление памяти в интеграционных тестах с Kafka с помощью GraalVM

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

В данной статье я хочу поделиться своим опытом создания нативного образа для EmbeddedKafka с использованием GraalVM. Использование такого образа в интеграционных тестах позволяет увеличить скорость запуска тестовых сценариев и сократить объем потребляемой памяти. Интересно отметить, что в сравнении с использованием confluentinc/cp-kafka в Testcontainers, разница в скорости и потреблении памяти оказывается заметной — и не в пользу последнего.

Читать далее

Как загружать классы в Java 8 и Java 9+?

Уровень сложностиСложный
Время на прочтение24 мин
Охват и читатели9.3K

Привет, Хабр! Я разработчик в Институте Системного Программирования РАН, занимаюсь разработкой статического анализатора Svace. Недавно я столкнулся с задачей самостоятельной загрузки классов в JVM, что оказалось непросто, потому что в проекте мы используем модули Java.

Модули появились в Java, начиная с версии 9. Прошло уже несколько лет, но если попытаться найти актуальную информацию о связи модулей и загрузчиков классов, её придётся собирать по крупицам. В статье я поделюсь своим опытом изучения вопроса самостоятельной (и автоматической) загрузки классов с помощью кастомного загрузчика, а также разберу примеры, описывающие большинство случаев загрузки, постараюсь их объяснить.

Читать далее

По какому пути пойти начинающему программисту: Python vs Java

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

Во всемирном рейтинге Tiobe язык программирования Python занимает первую строчку с долей около 13,97% по состоянию на январь 2024 года. Рост за 20 лет почти в 12,7 раза — согласитесь, впечатляет. Java тоже уверенно входит в ТОП-5. Если учесть сложность освоения C++, именно между Java и Python обычно выбирают начинающие программисты. Мы решили сравнить эти популярные языки и дать несколько полезных рекомендаций, чтобы выбор между курсами Java и Python был осознаннее.

Читать далее

Митап JUG.MSK: Алексей Рагозин про SJK (Swiss Java Knife)

Время на прочтение2 мин
Охват и читатели1.6K
19 января 2024 года на встрече московского сообщества Java-разработчиков JUG.MSK Алексей Рагозин рассказал о том, как при помощи набора инструментов с открытым кодом SJK (Swiss Java Knife) можно провести анализ производительности и профилирование решений, исполняемых на JVM.


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

Java ScopedValue: Ускоренный ThreadLocal

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

В инкубаторе JEP-429 появилась новая альтернатива ThreadLocal под названием ScopedValue (в значительной степени как поддержка и развитие Virtual Threads). ScopedValue предназначен для того, чтобы предоставить более легкую альтернативу ThreadLocal, которая хорошо работает с виртуальными потоками, а также решает многочисленные недостатки, присущие API своего аналога двадцатипятилетней давности. В этой статье мы рассмотрим основные отличия ScopedValue, и за счет чего он может работать быстрее.

Читать далее

Новостной Telegram бот на Java

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

Долгое время изучаю Java (но работаю с Oracle) и всё время хочется написать что-то полезное и интересное. Так наткнулся на статьи о Телегам ботах, которые меня и надоумили соорудить своего бота Avandy News.

За идеей для функционала далеко ходить не пришлось, т.к. у меня имеется одна более менее успешная программа, которая попала в Реестр российского ПО (о ней и о том как попасть в Реестр я писал в этой статье).

Читать далее

CompletableFuture. Глубокое погружение

Уровень сложностиСложный
Время на прочтение20 мин
Охват и читатели91K

java.util.concurrent.CompletableFuture - класс не новый. Он предстал перед нами во всём своём величии в 2014-м году вместе с выпуском Java 8. Много лет с тех пор прошло, а проще он не стал.

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

Читать далее

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

Задача на собеседовании, её решение и его разбор

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

Привет, обычно пару раз в год я хожу на собеседования без намерения менять работу, а для получения нового опыта и в поисках актуального ответа на вопрос "А что сейчас спрашивают?"


Часто там задают обычные, даже скучные вопросы вроде "расскажите о контракте между equals()и hashCode()", но иногда попадаются очень умные и приятные интервьюеры, проводящие собеседование вдумчиво, расспрашивающие о технологиях, используемых на целевом проекте (а не об абстрактном volatile), ставящие нестандартные вопросы и задачи. Сегодняшняя статья будет об одном из таких замечательных собеседований (вернее о задаче) и о вопросах, поднятых в ходе её обсуждения.

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

Project Valhalla: эпичный квест Java за перфомансом

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

Java продолжает наносить ответные удары. В Java 21 релизнулись виртуальные потоки. Теперь есть надежда, что в ближайших версиях двинется к релизу старый и очень ожидаемый JEP-401 aka Project Valhalla. Эта короткая статья описывает проблему, которую решает JEP, и содержит бенчмарк на основе превью фичи из Java 22.

Читать далее

Хабргорода

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

У меня возникла идея сделать список упоминаний названий городов в статьях Хабра за 2023 год и карту по которой можно найти статьи. Публикации, где упоминается конкретный город. С первого взгляда задачка простая, но это как всегда дьявол кроется в деталях!

Для этого нужны данные статей Хабра, названия городов с координатами и поиск этих названий в текстах статей. Задача осложняется великим и могучим языком со склонениями и многозначностью слов. Создание списка статей с Хабра за 2023 год по городам мне чем-то напомнило работу первых поисковых движков в рунете. Теперь я понимаю как кусали себя за локти программисты тех дней!

Читать далее

Как мы начали использовать виртуальные потоки Java 21 и на раз-два получили дедлок в TPC-C для PostgreSQL

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

В этом посте мы расскажем о примере дедлока в TPC-C для PostgreSQL, причиной которого является исключительно переход на виртуальные потоки Java 21 - и никаких проблем обедающих философов.

Читать далее

Плагин для анализа планов PostgreSQL в IDE JetBrains и его разработка

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

Для пользователей explain.tensor.ru - нашего сервиса визуализации PostgreSQL-планов, мы создали плагин "Explain PostgreSQL" для всех IDE от JetBrains, теперь есть возможность форматировать запросы и анализировать планы непосредственно в IDE.

Как использовать плагин и детали о его разработке читайте ниже.

Читать далее

Apache Flink. Как работает дедупликация данных в потоке Kafka-to-Kafka?

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

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

В предыдущей части «Как использовать Spring в качестве фреймворка для Flink-приложений» я рассказывал, как реализовать минимальное Flink-приложение с использованием фреймворка Spring. Мы запустили первую Flink-задачу в поднятом в docker-compose кластере, а также проверили корректность результата по соответствующим логам. В этой статье решим реальную бизнес-задачу дедупликации данных в пайплайне Kafka-to-Kafka.

Читать далее

Кодим 24/7: Прокачиваем продуктивность в условиях жесткого цейтнота

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

Привет! Меня зовут Михаил, я Senior Software Developer в YouHodler.

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

Читать далее