Обновить
128K+

Java *

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

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

Как большинство Java проектов выглядят изнутри

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

Меня зовут Аксёнов Вячеслав, я бэкенд разработчик и в последние годы пишу веб приложения на java/kotlin. Основная идея этой статьи описать основные технические задачи, которые ставятся перед современными веб приложениями, а также перечислить те библиотеки, которые чаще всего используются для решения этих задач.

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

Читать далее

Yet another JSON-парсер

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

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

Посмотреть реализацию

Интеграционное тестирование микросервисов Spring Boot в монорепозитории

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

Привет, Хабр! С ростом количества микросервисов и их взаимосвязей может возникнуть потребность комплексной проверки работоспособности системы. Со временем API сервисов и их поведение может дорабатываться и изменяться, при этом хочется иметь уверенность, что система микросервисов в совокупности ведёт себя согласно ожиданиям. Мы разберём простой пример написания интеграционных тестов, которые в дальнейшем можно встроить в CI/CD-процесс для решения подобной проблемы.

Читать далее

Java Stream API на простых примерах

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

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

Читать далее

Security микросервисов с помощью Spring, OAuth2, JWT и Service Account

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

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

Читать далее

Сокрытие и затенение переменных в Java

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

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

Основываясь на этих критериях, можно разделить все переменные в Java на следующие типы: локальные переменные, переменные экземпляра и переменные класса. Затемнение и сокрытие переменных происходит, когда оказываются одноименными  две переменные в разных областях видимости (в локальной и глобальной области видимости, в родительских и дочерних классах). При таком сценарии используется значение той переменной, которая находится во внутренней области видимости, так как она затемняет/скрывает значение той переменной, что находится во внешней области видимости.

Читать далее

Java 8: гид по классу Optional

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

Задачей этого класса является предоставление решений на уровне типа-обертки для обеспечения удобства обработки возможных null-значений

Читать далее

Из Excel в JSON. Универсальные методы для формирования тела запроса из Excel книги для API тестов (Java)

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

Недавно нужно было написать API автотесты - запросы Post с большим количеством параметров в теле, в том числе вложенные JSON объекты, массивы , массивы JSON объектов. Многие параметры не обязательные, а значит - большое количество наборов тестовых данных.

Дано: Датапровайдер - для многократного запуска тестов, тестовые данные в таблице Excel.

Что бы сформировать тело первого запроса пришлось создать несколько классов, через сеттеры присваивать значения переменным в классе и из базового класса формировать JSON, который и использовался как тело запроса. И вдруг оказалось, что все написанное никак не получится переиспользовать для других эндпоинтов. Тогда и решил написать метод, который будет превращать таблицу Excel в JSON объект без всяких там классов и правок в коде. Нужно только придерживаться некоторых правил при составлении таблицы.

Итак! Для получения данных из таблицы использовал, как обычно, Fillo. Название столбца будет ключом, значения в столбце, собственно, значениями ключа в запросе. Строка таблицы - один набор тестовых данных.

Читать далее

Пошаговое развитие RESTful API

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

Разработка интуитивно понятного и удобного RESTful API — непростая задача. Она даже может оказаться весьма сложной задачей, если это ваша первая попытка. Планирование управления жизненным циклом вашего API, скорее всего, будет казаться второстепенным. Однако во всяком случае развитие вашего API весьма вероятно.

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

Читать далее

«Чиним» OpenApi в springdoc-open-api

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

На смену springfox пришел springdoc. Он приносит нам в проект Swagger и поддерживает спецификацию OpenApi 3. Но есть еще некоторые шерховатости, а именно правильное отображение параметров запроса для сортировки и постраничного вывода.

Давайте посмотрим, можно ли их исправить и как это сделать.

Читать далее

Spring4Shell RCE — критическая уязвимость в Java Spring Framework

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

Не успел мир отойти от Apache Log4j2, как в сети появились сообщения о новых 0-day уязвимостях. В Spring Framework для Java обнаружено сразу несколько уязвимостей "нулевого дня", позволяющих, в том числе, выполнять произвольный код (RCE).

Читать далее

Spring: Жизненный цикл бинов, методы init() и destroy()

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

Жизненный цикл любого объекта означает следующее: как и когда он появляется, как он себя ведет во время жизни и как и когда он исчезает.

Читать далее

Улучшаем комментарии с помощью плагина Comment Lint

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

Пишете ли вы комментарии в коде? Используете ли при этом русский язык? Сталкиваетесь ли вы с тем, что спустя несколько месяцев комментарии становятся нечитаемы даже вами?

Этот плагин расширит проверку орфографии и грамматики для Intellij IDEA.

Читать далее

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

Java: отличия Map и HashMap

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

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

Читать далее

JPA-Buddy — избавляемся от рутины. Практические кейсы

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

Совсем недавно мне под руку попался плагин, который помогает генерировать код при написании программ - это JPA Buddy. В этой статье я не буду транслировать официальную документацию проекта или показывать на примере видеороликов, как нужно с ним работать, а приведу примеры своих рабочих кейсов, где плагин действительно выручил и сэкономил мое время. Спойлер: в создании POJO-классов, репозиториев для тучи сущностей, DTO-классов.

Читать далее

Необычная Java: StackTrace Extends Throwable

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

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

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

Chronicle Software обычно использует ряд различных шаблонов в своих низкоуровневых библиотеках, с которыми большинство разработчиков вообще не сталкивается.

Один из них — это класс, который расширяет Throwable, но не является ошибкой или исключением.

Читать далее

Работа в Highload командах 1С сейчас: Java/С++/ C#/TS/JS  Hiring day

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

Вечером 30 марта 2022 года (среда) в формате онлайн мы проводим Java/С++/ C#/TS/JS  Hiring day.

Приглашаем всех заинтересованных в разработке на Java, С++, C#, JS,  TS принять участие!

На митапе в течение часа мы расскажем:

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

Опыте разработки highload-решений, которые ежедневно используют миллионы людей

Читать далее

Apache NLPCraft, подготовка к выходу мультиязычной версии 1.0

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

Apache NlpCraft — библиотека с открытым исходным кодом, предназначенная для интеграции языкового интерфейса в пользовательские приложения. 

Подробнее с проектом можно ознакомиться на его сайте или, напрмер, по ссылкам на хабре. Состояние проекта - Apache инкубация. Так как java NLP сообщество весьма ограничено, продукт имеет небольшое, но достаточно активное количество пользователей.    

Читать далее

Java в Visual Studio Code: обновление за февраль

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

Всем привет, добро пожаловать в февральское обновление для Java в Visual Studio Code, и на этот раз у нас специальный образовательный выпуск! Материалом делимся к старту курса по разработке на Java.

Читать далее