Как стать автором
Обновить
166.94

Java *

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

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

Без ручного нет автоматизированного. Почему одна Java не сделает вас автоматизатором?

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

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

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

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

Упрощаем теорию языков программирования и сокращаем выбор до:

🔵 Python
🔴 Java
🟡 JavaScript

На языках, указанных выше, так же может идти разработка ваших проектов.
Сегодня мы будем писать на Java.

Читать далее
Всего голосов 4: ↑1 и ↓3 -2
Комментарии 0

Новости

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

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

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

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

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

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

Читать далее
Всего голосов 13: ↑2 и ↓11 -9
Комментарии 2

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

Время на прочтение 6 мин
Количество просмотров 4.4K

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

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

Читать далее
Всего голосов 14: ↑8 и ↓6 +2
Комментарии 19

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

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

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

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

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

Ознакомиться
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 18

Истории

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

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

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

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

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

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

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 0

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

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

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

Читать далее
Всего голосов 1: ↑0 и ↓1 -1
Комментарии 6

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

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

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

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

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Комментарии 0

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

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

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

Читать далее
Всего голосов 24: ↑7 и ↓17 -10
Комментарии 33

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

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


Читать дальше →
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 0

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

Время на прочтение 12 мин
Количество просмотров 2.4K

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

Читать далее
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 2

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

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

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

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

Читать далее
Всего голосов 4: ↑3 и ↓1 +2
Комментарии 8

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

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

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

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

Читать далее
Всего голосов 35: ↑35 и ↓0 +35
Комментарии 19

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

Время на прочтение 9 мин
Количество просмотров 13K

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


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

Читать дальше →
Всего голосов 11: ↑10 и ↓1 +9
Комментарии 15

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

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

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

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

Читать далее
Всего голосов 35: ↑34 и ↓1 +33
Комментарии 13

Хабргорода

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

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

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

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 9

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

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

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

Читать далее
Всего голосов 17: ↑16 и ↓1 +15
Комментарии 31

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

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

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

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

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 20

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

Время на прочтение 20 мин
Количество просмотров 4.3K

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

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

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 0

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

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

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

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

Читать далее
Всего голосов 12: ↑0 и ↓12 -12
Комментарии 3

Простыми словами про обработку текстовых запросов пользователя в Телеграмм ботах на java

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

Тем, кто так или иначе уже сталкивался с разработкой Telegram-ботов на java, известно, что бот должен уметь отправлять запросы Telegram-серверу и получать от него обновления (updates). В настоящее время существует два способа получения обновлений:

- использование LongPolling (регулярную отправку запрос к серверу Telegram для получения обновлений. Все обновления обрабатываются последовательно, что делает бота очень простым для отладки, а все поведение - предсказуемым),

- использование Webhooks (Telegram сам отправляет запросы по нужному URL).

Поскольку LongPolling используется по умолчанию, я буду рассматривать взаимодействие с ботом на его примере.

Итак, для того, чтобы класс, содержащий логику бота, реализовывал взаимодействие с сервисами Telegram, его необходимо унаследовать от класса TelegramLongPollingBot и реализовать следующие его базовые методы:

- public void onUpdateReceived(Update update);

- public String getBotUsername();

- public String getBotToken().

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

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 4

Вклад авторов

Работа

Java разработчик
333 вакансии