Обновить
256K+

Java *

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

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

Шпаргалка по структурам данных в Java

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

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

Читать далее

Поймать перо jar-птицы: новый сезон Java на Хабре

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

Спят усталые игрушки, книжки спят… А вот Хабр не дремлет. Уже целый год прошёл с прошлого сезона Java. Стал ли за это время язык менее актуальным? Его всё ещё путают с JavaScript? Помогла ли Java 20 поставить новый рекорд длины Hello World? Чтобы ответить на эти и другие вопросы, мы запускаем новый сезон Java.

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

С 31 июля по 19 сентября мы будем говорить о чудесах больших и поменьше, о кровавых ритуалах энтерпрайза и защитных пентаклях тестовых окружений. Лучший кудесник, избранный народным голосованием, получит в награду Apple MacBook Air 13, а его имя навсегда останется на страницах нашей сказки.

Читать далее

Ивентная модель данных с использованием Kafka и Kafka Connect: Построение гибкой и распределенной архитектуры

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

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

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

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

Читать далее

IntelliJ IDEA 2023.2. Language Server Protocol, AI Assistant, IntelliJ Profiler в редакторе, GitLab merge requests, ftw

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

Только что вышла IntelliJ IDEA 2023.2. В этом релизе в IDE появилась куча интересных фичей и важных улучшений.

Вы можете скачать последнюю сборку с официального сайта, или из бесплатного приложения Toolbox, или из snap-пакетов для Ubuntu.

Этот релиз IntelliJ IDEA 2023.2 представляет вам AI-ассистента, вооруженного набором инструментов машинного обучения. IntelliJ Profiler показывает подсказки в редакторе, делая профилирование более интуитивным и иформативным. Еще, в этом релизе появилась интеграция с GitLab.

В том посте мы пробежимся по всем основным фичам IntelliJ IDEA 2023.2. В отличие от официального анонса, вся европейская политкорректность выкинута на свалку, автор перевода не видит никакой ценности в соблюдении повесточки.

Кроме того, в этот четверг в Питере будет встреча Javawatch, посвященная Java 21. Я прочитаю мини-доклад минут на 30 о новых фичах, и потом мы сможем все вместе собраться и за кружкой пива это обсудить. Анонс события в телеге, обсуждение в чате. Я бывший PMM в JetBrains Big Data и тимлид в Remote Development/Projector, а сейчас работаю над российским дистрибутивом Java - Axiom JDK.

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

Магия Spring Framework своими руками

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

Spring Framework позволяет сфокусироваться на бизнес-логике, а вся настройка инфраструктуры выполняется автоматически благодаря постобработке бинов. Зачастую для реализации дополнительной функциональности применяется Spring AOP - аспектно-ориентированное программирование.

Spring AOP бин, который накручивает дополнительную функциональность другим Spring бинам, помечается аннотацией @Aspect, но как потом этот бин используется для добавления дополнительной функциональности в поток исполнения?

В статье будет рассмотрен механизм проксирования объектов и его применение в Spring Framework.

Читать далее

«Входить в IT неспеша» или как стать Middle Java Backend разработчиком минуя ступень Junior

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

Статья о том, как шаг за шагом при дефиците свободного времени обучиться и устроиться на работу сразу Middle Java разработчиком перескочив через Junior ступеньку, основанная на личном опыте, и о том, как мне это помогло, когда сразу после трудоустройства пришлось тянуть проект практически в solo.

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

Давай-ка разберёмся с этим

Сертификат Java: за и против

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

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

Этой публикацией мы продолжаем серию постов про сертификацию для Java‑разработчиков. Про подготовку к экзамену рассказали здесь и здесь. А тут текст про саму сертификацию.

Читать далее

Выход Micronaut 4! Что нового?

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

14 июля вышла новая версия Java фреймворка Micronaut. С последнего мажорного обновления прошло почти два года (оно было 18.08.2021), и за это время произошло немало событий как в мире Java-разработки, так и в самом фреймворке. Под катом постараюсь рассказать, что же нового появилось в Micronaut.

Читать далее

Приглашаем на Ozon Tech Intro meetup: как работают системы поиска, рекомендаций и рекламы

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

UPD: Добавили записи докладов и слайды

Всем привет!
Меня зовут Алексей, я руководитель отдела по продукту и технологиям «Рекомендации и персонализация».

Мы уделяем много времени проектированию архитектуры, улучшению скорости и оптимизации алгоритмов:

Ищем пути продукта и UX.

Ускоряем рантайм поиска.

Используем ML для рекламной платформы.

Обучаем модели для наилучшего результата рекомендаций.

И со всем этим ещё и закапываемся в аналитику и проводим множество A/B-экспериментов.

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

Читать далее

Интеграция Jmix с bpmn-js для эффективного моделирования бизнес-процессов при разработке приложений

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

Jmix — это платформа с открытым исходным кодом для повышения эффективности разработки корпоративного ПО. Java-разработчики со всего мира используют ее для создания приложений, ориентированных на работу с данными, корпоративным контентом и бизнес-процессами. Jmix особенно эффективен, если у проекта есть строгие ограничения по бюджету и срокам. По сути, Jmix позволяет Java-разработчику стать fullstack-программистом и в результате своей работы получить полноценное веб-приложение на основе Spring Boot. Платформа привлекает тем, что не требует затрат на лицензирование конечных пользователей, а  для разработки и backend, и frontend используются один язык: Java или Kotlin. В основе платформы лежат широко распространенные технологии и IDE, дружественная разработчику. В этой статье расскажем, с чего начиналась поддержка моделирования бизнес-процессов в Jmix, как мы встроили в платформу фреймворк bpmn-js, и какие плюсы от этого получили пользователи. 

Первые шаги в направлении BPMN 

В случае приложений для управления транзакциями, документами или другими корпоративным данными часто требуется отделить бизнес-логику от кода. Это можно сделать с помощью визуального конструктора, в котором аналитики и разработчики моделируют  бизнес-процессы в соответствии с нотацией BPMN. К этой идее мы пришли в 2017 году, после большого количества запросов со стороны сообщества разработчиков Jmix. Поначалу для создания бизнес-процессов мы использовали собственный инструмент на основе движка Activiti. Он был частью CUBA Platform, прошлого поколения платформы Jmix.  

Читать далее

Инструментация байт-кода Java

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

В рамках текущей статьи будет рассказано о способах инструментации байт-кода java или другим языком, внесения изменений в компилированный файлы java .class. Здесь будут приведены примеры работы с фреймворками Javaassist и ASM и базовое описание байт-кода.

Читать далее

Изучаю мок-сервера и пишу свой

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

Однажды передо мной возник некий «чёрный ящик» — Шина, которая отвечает за преобразование данных из внешнего формата во внутренний. Какие внутри происходят преобразования, какие процессы, как идут запросы, потому что они очень большие, — непонятно. Логи есть, но они ограничены, к тому же часто запросы не логируются, потому что некоторые данные пользователей нельзя показывать. В попытках решить проблему и возник мок-сервер, как решение задачи понять, как работает «ящик», на каких принципах, и понять, правильно ли он работает. 

План статьи:

— Проблематика черного ящика и почему его вообще нужно вскрывать.
— Варианты решения проблемы.
— Подробно про мок-сервер, как один из вариантов решения проблемы: зачем нужен, в чём польза и как выбрать между готовыми и самописными решениям.
— Как написать свой мок-сервер.
— Посмотрим как он работает на реальной задаче. 
— Закрепляем материал в блоке «Польза мок-сервера».

Читать далее

Эффективное и комплексное устранение утечек памяти в Android

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

Цель этой статьи — изучить эффективные и комплексные решения по нахождению и устранению утечек памяти в контексте Android-разработки. Стоит понимать, что утечка памяти чаще всего возникает из-за незнания технологии или собственного кода на подкапотном уровне, поэтому основной целью является научиться правильно писать код, учитывая специфику работы Java Memory Model, Garbage Collector и File descriptor.

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

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

Особенности разработки автотестов различными инструментами, а также статистика по использованию

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

Попробуем разобраться в автоматизации тестирования ПО, сделаем обзор сервисов для автоматического тестирования, выясним, какой язык программирования лучше подходит для QA Automation. Вся информация основана в том числе на реальных событиях и моём реальном опыте.

Читать далее

Добавляем поддержку пользовательского языка в IntelliJ с помощью ANTLR

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

В этой статье я не буду описывать как создать плагин для IntelliJ с поддержкой %lang_name% с нуля. Кроме официальной документации и туториала от JetBrains в сети есть множество статей и примеров. На Хабре тоже есть пара весьма подробных статей от @pyltsinm. Фокус будет на разработке плагина с использованием ANTLR и моём опыте в этом нелёгком деле.

Примером в этой статье будет WebCalm - плагин для IntelliJ с поддержкой JavaScript и CSS, который я сделал с помощью ANTLR.

Читать далее

Работа с асинхронными операциями с помощью Kotlin Coroutines

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

Всем привет! Меня зовут Сергей, я Android-разработчик Студии Олега Чулакова на проектах Сбера. Недавно я написал статью Многопоточность в мобильной разработке. В ней был затронут один из наиболее популярных инструментов для работы с асинхронными операциями — Kotlin Coroutines. 

Сегодня я хочу углубиться в Kotlin Coroutines и разобрать их основные компоненты. Мы рассмотрим Kotlin Coroutines, предполагая, что у вас уже есть базовое понимание языка Kotlin и некоторый опыт разработки Android-приложений. Мы изучим основные концепции Kotlin Coroutines, способы работы с асинхронными операциями, управление потоком выполнения, обработку ошибок и исключений, а также многое другое.

Моя цель — помочь вам овладеть Kotlin Coroutines и научиться использовать их для упрощения и оптимизации вашего кода, обеспечения более гладкого пользовательского опыта и более эффективного управления асинхронными операциями. Приятного прочтения, мы начинаем!

Читать далее

Как на самом деле работает Java ClassLoader system? (с картинками) — Часть 1/3, Загрузка

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

Так ли на самом деле работает процесс загрузки классов, как его описывает Wikipedia и Baeldung? ClassNotFoundException — это откуда и чье? Какие виды загрузчиков классов актуальны в Java 20?

Объясняем подпроцесс загрузки, из системы Java ClassLoader, на приятных Excalidraw диаграммах, со ссылками на оригинальные источники.

Читать далее

SpringBoot и вебсокеты: едем в кластер

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

Всем привет! В этой статье я бы хотел затронуть тему горизонтального масштабирования SpringBoot-приложений, использующих вебсокеты. Основная особенность таких приложений - наличие состояния (state). Вебсокеты для работы используют постоянное TCP-соединение, собственно оно и является этим состоянием. А наличие состояния обычно вызывает проблемы при масштабировании. 

Stateless-сервисам все равно на какой из множества инстансов попал очередной запрос, или кто именно вычитал сообщение из очереди. Но когда на серверной стороне возникает понятие клиентской сессии, все запросы, связанные с этим клиентом, должен обрабатывать один и тот же инстанс. Либо должна быть возможность передать эту сессию на другой инстанс. Сложность реализации этого требования варьируется от "добавить одну строчку в конфиг балансировщика" до "написать подсистему мониторинга топологии сервиса и роутинга запросов, сложность которой может превышать сложность основного приложения". К счастью, для решения стандартных задач, как правило, существуют стандартные инструменты. Давайте посмотрим, что за инструменты используются при масштабировании вебсокетных приложений, написанных на SpringBoot.

Читать далее

Строим свой SSO. Часть 3: Redis, Swagger, Vue.js

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

Всем привет, мы продолжаем строить собственный SSO Server. Сегодня мы разберем подключение Redis и Swagger к нашему проекту. А также построим собственную, красивую форму аутнетификации, используя VueJS.

Читать далее

Работа с единицами системы СИ на Java

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

Библиотека по работе с единица системы СИ KotUniL, разработанная изначально на Kotlin, недавно сделана мультиплатформенной. В частности, она доступна теперь и на Java и JavaScript.

Читать далее