Обновить
179.6

Java *

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

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

Строим свой SSO. Часть 2: PostgreSQL и ролевая модель

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

Всем привет, и мы продолжаем нашу серию статей по созданию собственного SSO. В предыдущей статье мы создали замечательную основу приложения и проработали множество нюансов связанных как с Spring Authorization Server, так и с Spring Security, Spring OAuth2 Client. Подключили "Social login" через Google, Github и Yandex. Теперь настало время превращения этого SSO в реальный проект.

Читать далее

Осенние конференции JUG Ru Group: Москва, Питер, онлайн

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

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

Так что продолжим это в нашем большом осеннем сезоне: проведём целых 10 конференций, и на этот раз не только в Москве. Все подробности — под катом.

Читать далее

Тестирование Spring Boot через MockMVC

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

Автор статьи: Рустем Галиев

Сегодня мы посмотрим на то, как тестировать Spring Boot через MockMVC. MockMvc – это тестовый фреймворк на стороне сервера, который позволяет проверять большинство функциональных возможностей приложения Spring MVC с помощью облегченных и целевых тестов.

Читать далее

Автоматически ищем техдолг с помощью RefactorFirst

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

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

Она ищет в Java-коде Божественные Классы и классы с очень высоким уровнем связности, которые следовало бы отрефакторить. Для этого используются правила God Class Rule и Coupling Between Objects Rule из опенсорсного коданализатора PMD.

Коротко опишу, что это такое, и как этим пользоваться.

Интересно. Читать далее.

Java Digest #2

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

Всем привет! ? ? ?

Мы — Java-разработчики Тинькофф: Константин, Андрей и Арсений. Собираем новости, статьи, туториалы и другие интересные материалы из мира Java-разработки. Решили делиться этим не только с коллегами, но и со всем сообществом.

Джо Аберкромби писал: «Чем больше ты узнаешь — тем больше понимаешь, как мало знаешь. Однако усилие само по себе стоит того». Надеемся, наш дайджест поможет вам на этом пути. Stay tuned! ?

Читать свежий выпуск

Простыми словами об InlineKeyboard в Телеграмм ботах на java

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

За 4 месяца самостоятельной жизни моего первого бота стало понятно, что пользователям не хочется что‑либо вводить в поле сообщения. Что значительно удобней было бы просто нажимать на очередную кнопку при выборе формы документа. Иными словами, в целях упрощения взаимодействия с ботом необходимо минимизировать возможность использовать обычную клавиатуру смартфона или ПК.

И такая возможность есть, если применить InlineKeyboard — вариант кнопок (за которыми скрыт необходимый функционал), прикрепленных непосредственно к сообщению от бота.

Применить такую клавиатуру я решила при разработке другого бота. Однако столкнулась с тем, что ни в документации Telegram bot Api, ни в статьях / разборах, размещенных в Интернет, нет прозрачного пошагового пояснения всей цепочки процессов. Разобравшись для себя с взаимосвязями вызовов в InlineKeyboard я решила этим поделиться с другими разработчиками.

Читать далее

Новые фичи в IDEA 2023.2 EAP 7

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

Быстро приближается релиз IntelliJ IDEA 2023.2, а значит, текущему EAP-у осталось жить недолго. Вы все еще можете успеть попробовать новые фичи, и попросить исправить их до релиза, когда исправлять будет уже поздно.

JetBrains ушел из России, но его IDE всё ещё является основным средством разработки на Java. Как у бывшего product marketing manager в JetBrains, у меня есть некоторый опыт в написании и переводе таких статей. Изначально, принести эту новость сподвигло то, что в ней есть важное обновление плагина Big Data Tools, над которым когда-то работала моя команда. Кроме того, JB разродились официальной поддержкой LSP, что наверняка, стоило им титанических моральных усилий. PMM-ов бывших не бывает, им просто перестают за это платить.

Я попробую описывать самые значимые новости, касающиеся JetBrains IDE. Чтобы получать больше таких новостей - подписывайтесь на Хабре на наш блог, а ещё вы можете пройти в мою личную телегу @Javawatch.

Под катом - обзор перечисленных фичей, со скриншотами. Поехали.

Читать далее

Собственные исключения в Java: как управлять ошибками в вашем приложении

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

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

Читать далее

Введение в многопоточность в Java очень простым языком: Процессы, Потоки и Основы синхронизации

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

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

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

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

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

Читать далее

LLM API для Java

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

Прочитав сегодняшнюю статью о том, как в Сан-Франциско массово собираются LLM-щики, коллега сказал — "лучше б там собирались BDSM-щики, это, по крайней мере, понятное развлечение". Для человека не посвященного, "нейросети" — это всё ещё что-то про Python и математическую статистику.

Тем не менее, можно кусать низко висящие фрукты и с помощью Java, дергать API для Chat GPT, и тогда ничего учить не придётся. В этой статье будут ссылки на несколько фреймворков с простым API для жабы и котла, которые можно использовать хоть сейчас.

Волшебно. Читать далее.

Project Loom и Spring Boot: тесты производительности

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

В 2023 году джава-сообщество ожидает выхода нового LTS-релиза JDK 21. Одной из долгожданных фич, потенциально способных сделать джаву great again, является JEP 444: Virtual Threads.

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

Читать далее

Определить и найти. Разработка алгоритма поиска изменений с Мap-ами и хешами

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

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

Читать как я прошел этот путь

Java-дайджест: начало июля

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

Привет, это Олег. Я вылез из криокамеры и пытаюсь заставить себя писать регулярные дайджесты.

В этом выпуске будет новый бесплатный (на самом деле нет) GraalVM Enterprise, отмена Java 8 в бигдате, совершенно новая система модулей (которую никто не просил, но мы её заслужили тем не менее), утилита для поиска и истребления легаси в проекте, библиотеки для работы с Large Language Models (иначе говоря, ChatGPT), всратый офис с графическим интерфейсом на Java, и многое другое. И конечно, обзор этой недели Java на Хабре.

Если есть время, оставьте комментарий, про какую часть Java-экосистемы вам хотелось бы читать дальше. Помогите Даше-путешественнице найти смысл существования. Новостей куча, поэтому пока я пишу про то, что интересно лично мне: GraalVM, Spring, Clouds, OpenJDK dev. Например, в Hibernate на каждый релиз чинят десятки каких-то багов, но я про них ничего не пишу, потому что не знаю ни одного живого человека, которому бы это было интересно.

Как всегда, статья подготовлена при поддержке "российской джавы" AxiomJDK и моего IT-бара Failover Bar, потому что я пишу её в рабочее время :)

Прекрасно. Читать далее.

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

Parallel Stream — не панацея или используй с умом (tutorial для начинающих)

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

Данная статья может быть интересна тем, кто только изучает Stream API, либо набирает практический опыт их использования. В ней раскрывается функционал, плюсы и минусы использования Parallel Stream, но не касаемся использования последовательных Stream API в целом.

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

Читать далее

Правильные тестовые данные или почему Вася Пупкин лучший друг тестировщиков?

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

Будучи молодым QA-инженером, я тестировал модуль регистрации пользователя одного десктопного приложения. Набирать сочетания случайных букв в качестве тестовых имени и фамилии мне изначально не нравилось, а использование личных данных считалось некорректным, поэтому я начал использовать имена и фамилии существующих политиков. Барак Обама, Джордж Буш и другие регистрировались в сервисе кастинга голосовых актеров, проводили сессии голосовых записей, исправно платили по счетам и выполняли прочие бизнес-действия. Через некоторое время об этом узнал наш ПМ, который попросил отказаться от практики привлечения политиков в ряды наших тестовых пользователей. Передо мной встал выбор: пользоваться случайным набором букв или придумать некий шаблон. Я выбрал второй вариант. С тех пор персонаж Василий Пупкин стал моим лучшим другом.

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

Узнать больше о правильных тестовых данных

Приручаем Liquibase. Как скормить базе данных список из 10К офисов, чтобы потом не писать костыли?

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

Привет! Меня зовут Михаил, я Java Backend Developer в Simbirsoft. В этой статье хочу поделиться своим опытом создания миграций файлов с большим списком данных при помощи Liquibase. Cтолкнувшись с такой задачей на проекте, я был сильно удивлен тому, как мало материалов написано по этой теме, даже на английском. Поэтому описал то, что удалось собрать и проверить на собственном опыте.

Читать далее

Введение в Java Process Memory Model

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

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

О том, как именно JVM работает с памятью во время работы Java приложения мы поговорим в этой статье.

Читать далее

Автоматизированная работа с DevTools в Selenium 4

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

Специалисты QA- и SDET-направлений довольно часто используют DevTools браузера, поскольку в нем есть ряд инструментов, необходимых для отладки и тестирования веб-приложений.

Например, при интеграции REST API методов с интерфейсом приложения достаточно трудоемко читать информацию по запросам и ответам в DevTools после каждого действия, а также сопоставлять это с документацией. Этот кейс можно автоматизировать, например, с помощью сравнительно новой библиотеки DevTools Selenium 4 и инструментов, которые она предоставляет.

В этой статье я — SDET-специалист SimbirSoft Мария, — расскажу про функциональности DevTools, которые были актуальны на наших проектах.

Погрузиться

Собеседования для бэкендеров: как готовиться, тренироваться и не облажаться

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

Привет, Хабр! Меня зовут Гриша Скобелев, я бэкенд-разработчик, у меня есть гитара, кошка и скейтборд. Я так сильно люблю Spring Framework, что назвал кошку в честь него — Веснуша. Возглавляю программный комитет Podlodka Java Crew, где мы делаем классные конференции. Еще я организовал книжный клуб для бэкенд-разработчиков { между скобок }. Хочу поделиться своим опытом развития бэкендера — от собеседования до наработки разных навыков для роста. Тут будет много ссылок, практических советов и инструкций, которые я наработал за время своей карьеры, общения с другими бэкендерами и проведения конференций и консультаций.

Читать далее

Собеседование на Java разработчика. Разбор 1606 вопросов и ответов. Часть 2 (с 170 по 269 вопрос)

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

Всем привет! Меня зовут Владимир Баганов. Я продолжаю серию статей с простым разбором вопросов на собеседованиях на Java разработчика. Под капотом 269 разобранных вопросов из 1606 вопросов.

Читать далее

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