Обновить
512K+

Java *

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

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

Книга «Грокаем функциональное программирование»

Время на прочтение2 мин
Охват и читатели24K
image Привет, Хаброжители!

Вам кажется, что функциональное программирование — это нечто сложное, доступное только гуру программирования? Эта книга развенчает миф об элитарности и позволит любому программисту с легкостью разобраться в хитросплетениях кода.

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

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

Учимся бесплатно деплоить Java (и не только) приложения (Docker, CircleCI, Google Cloud)

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

Всех приветствую. В последнее время все чаще задумывался о том какую бы еще полезную статью написать. Параллельно этому постоянно видел в интернетах рекламу о "крутых" курсах в IT, обещают сделать из вас Java, Python и какого угодно разработчика за полгода/год, и ладно с ним, допустим за год они чему-то вас обучат и, возможно, где-то вы попадете на бесплатную стажировку (что еще тоже под воросом, учитывая нынешний рынок). Но когда рекламируют "крутые курсы DevOps'ов", я уже начинаю задаваться вопросом, как можно стать ДевОпсом, не имея опыта программирования, не опробовав самому весь цикл разработки на хоть каком-то языке, не опробовав различные настройки сборки приложений, не опробовав Линукс, со всеми его утилитами, докер, кубер, git и т.д. в работе, а просто "обучиться" этому в обособленности от всего и ожидать, что тебя куда-то возьмут, а если и возьмут, то к чему-то серьезному подпустят? Ответа на этот вопрос я так и не нашел у себя в голове.

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

Задеплоить

Java Digest #5

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

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

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

Сегодня вспомним Гете: «Не бойся, я от слов не отступлюсь. И отчего бы стал я вероломней? Ведь если в росте я остановлюсь, Чьей жертвою я стану, всё равно мне». 

Фауст — это человек, стремящийся к постоянному развитию и познанию жизни во всей ее полноте. Надеемся, наш дайджест поможет вам в этом. Stay Tuned! ?

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

Упрощаем работу с Excel с помошью Apache POI + Jxls: готовый шаблонный код

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

В рамках нашего свежего курса «Работа с документами в Java» есть тема: «Работа с Excel с помощью Apache POI». Хочу поделиться здесь основными моментами кода этого занятия и решением проблем, с которыми пришлось столкнуться.

Пошаговое практическое руководство c преобразованием шаблона poiTemplate.xlsx в Excel документ с возможностью программной модификации страниц. Также код может послужить образцом применения паттерна стратегия.
Читать дальше →

Автоматизация разработки с помощью подхода DB-first

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

Интеграция с БД - привычно сложная и хрупкая часть большинства кодобаз, постоянно отвлекающая внимание разработчиков и раздувающая сроки. Какой бы хайпующий фреймворк вы ни пробовали, вы неизбежно обнаруживаете себя борющимся с одними и теми же симптомами, но ощущение того, что проблема могла бы решаться проще не покидает вас. Знакомо?

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

Читать далее

Может ли Java быть быстрой? Сравнение производительности Helidon Níma и Spring

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

Основной тренд в мире IT сейчас - экономия ресурсов и легковесные решения. В облаке мы платим только за те ресурсы, которые действительно используем. И чем эффективнее мы их используем, тем меньше денег тратится впустую: уменьшая издержки, увеличиваем маржинальность.

Java долгое время была и остается фаворитом в enterprise решениях, но все чаще в высоконагруженных проектах предпочтение отдается более "производительным" языкам, таким как Go, а порой даже C++. Но вдруг Java тоже может быть быстрой?

Читать далее

Подтверждение электронной почты с помощью Spring Boot & Angular

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

Как сделать подтверждение почты с помощью Spring Boot & Angular?

Всем привет! Мы с вами поговорим о важном аспекте безопасности — подтверждении почты пользователей. Мы расскажем, как сделать это с использованием Spring Boot и Angular, двух мощных инструментов для создания современных веб-приложений.

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

Читать далее

jenv — удобный инструмент для управления версиями Java

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

Иногда может возникнуть необходимость использовать какую-то определенную версию Java для вашего проекта. Мы тоже в Surf с таким столкнулись при работе над одним из Flutter приложений-долгожителей. Решение нашлось в виде использования менеджера версий Java. Рассказываем, что за инструмент и как с ним базово работать на MacOS.

Читать далее

Spring Cloud Config и Git. Хранение и распространение конфигураций приложений

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

Еще одна статья о том, как можно применять Spring Cloud Config Server при выборе Git репозитория как хранилища конфигураций приложений в облаке и не только в облаке.

Читать далее

Аннотации и рефлексия в Java

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


Привет, уважаемые читатели Хабра!

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

Объектно-ориентированный подход к созданию REST-клиентов, или возможна ли жизнь без Open API

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

Как-то в общении с моим другом-разработчиком из одной крупной софтверной компании у нас зашёл разговор о взаимодействии распределённых команд. В его компании было множество достаточно изолированных команд, каждая из которых разрабатывала свой сервис. В ответ на мой вопрос, как команды расшаривают API, я получил ожидаемый ответ: Open API. Open API, безусловно, прекрасный инструмент, но у него есть ряд недостатков. 

Меня зовут Андрей Зяблин, я главный разработчик в «Магните». Расскажу о том, как распространять API нативным для Java способом и пользоваться им в объектно-ориентированном стиле без использования генераторов кода. 

Читать далее

Как я делал солнечную зарядку для своего моноколеса и вот что получилось

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

Получилось так, что с недавнего времени я обзавелся личным электротранспортом, который называется моноколесо. Долго я шел к этому, но все же решился и ни о чем не жалею, даже наоборот, испытываю полный восторг от поездок на этом сногсшибательном транспорте. А еще очень люблю поездки на природу, а езда на моноколесе умножают эту любовь на 100500. Но есть одно «НО», и об этом далее...

Читать далее

Обыкновенное чудо: итоги сезона Java

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

Что бы вы сделали, имея на руках сказочный артефакт? Ответы могут быть разные. Кто-то захочет удивлять людей, показывая фокусы-покусы. Другим интереснее эксперимент: разрубит ли меч-кладенец яйцо дракона? Третьи попробуют сделать артефакт ещё сказочнее — чтоб скатерть-самобранка имела пять звёзд Мишлена, а сапоги-скороходы разгонялись до сверхзвука.

Как показал этот сезон Java, среди обитателей Хабра есть и те, и другие, и ещё всякие разные. Написать свой сборщик? Компилировать Java в WASM? Найти хитрый пример, над которым сеньор голову сломит? Нет ничего невозможного, когда в руках перо jar-птицы. C ним, как показывает практика, можно даже национальную платёжную систему создать.

Однако как ни крути, а сезон подошёл к концу, и пришло время подвести итоги. Под катом вы узнаете, кто из здешних кудесников оказался самым кудесатым и, по древнему обычаю, получит Apple MacBook Air 13 от партнёров сезона — Мир Plat.Form. А ещё — чем запомнился сезон и какие выводы можно из него сделать.

Читать далее

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

Кэширование контекста Spring между запусками тестов: как ускорить процесс локального тестирования

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

Тестирование является важным элементом процесса разработки программного обеспечения. При этом работа с тестами может занимать достаточно большое количество времени в сравнении с самой разработкой, в связи с этим возникает необходимость оптимизировать этот процесс. В этой статье рассказывается про плагин Sprinter для IntelliJ IDEA, который может помочь значительно сократить время на локальный запуск тестов.

Читать далее

В Java 21 собираются реализовать сопоставление с образцом – так, глядишь, я снова на этот язык перейду

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

Преуведомление

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

Выпуск Java 21 состоялся 19 сентября 2023 года. В этой версии поддерживаются паттерны записи в switch-блоках и выражениях. Такой синтаксис выглядит монументально (как минимум, по меркам Java). Это водораздел, после которого мы вправе говорить, что в Java полноценно поддерживаются паттерны функционального программирования, подобно тому, как это сделано в Kotlin, Rust или C#. Вот и первый пункт, который пробуждает во мне зависть (я Kotlin-разработчик).

Читать далее

Добавление отзывов с фотографиями в S3 с помощью AWS SDK Java

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

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

Воспользуемся S3-хранилищем Yandex Object Storage для сохранения фотографий и получения ссылок на них с использованием AWS SDK Java. А еще с помощью Java Concurrency увеличим производительность в 5 раз.

Читать далее

Сделали по красоте: победители «Конкурса красоты кода»

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

Вчера прошла наша технологическая конференция SmartDev на которой мы подарили заслуженные призы победителям «Конкурса красоты кода». Свои работы прислали больше 1000 талантливых программистов. Некоторых мы даже пригласили к себе работать. Код оценивало очень большое жюри из экспертов Сбера и других компаний.

Напомним, что в конкурсе было пять категорий: Python, Java, Mobile (Android), Data Science, Fronted, — и в каждой из них было по три номинации.

Читать далее

OOM: direct memory при работе с сетью TCP/IP через NIO в Java

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

Привет, меня зовут Денис Агапитов, я руководитель группы Platform Core компании Bercut. Работаю в компании без малого 20 лет, из них 18 пишу на Java.

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

Эта статья основана на реальной практике борьбы с "OutOfMemory: direct memory".

Читать далее

Построение гибкой и распределенной архитектуры с использованием Kafka и Kafka Connect: Часть 2 — Получатель и Helm Chart

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

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

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

Читать далее

Решаем задачу о секретном рукопожатии на Java

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

Привет! Меня зовут Сергей Чеботарёв, я наставник на курсе «Java-разработчик». Многие обучаются программированию полностью самостоятельно, кто-то выбирает курсы и решает практические задачи в рамках программы. И тем и другим важно тренироваться дополнительно. Чтобы помочь с практикой, я приготовил небольшую задачу о выдуманном секретном рукопожатии. 

Давайте напишем программу на Java и вместе разберём эту задачку: вспомним двоичное счисление, простые операции по работе с Map и работу с пользовательским вводом.

Читать далее