Как стать автором
Поиск
Написать публикацию
Обновить
178.24

Java *

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

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

Java: свертывание многострочных логов в однострочный лог с помощью Spring и логгера Logback или Log4j2

Время на прочтение7 мин
Количество просмотров7.7K
Logback и Log4j2 – одни из самых известных фреймворков логирования в JAVA. Фреймворк Logback используется только совместно с библиотекой SLF4J, которая представляет собой интерфейс для систем протоколирования событий. Log4j2 представляет собой вторую, улучшенную версию логгера Log4, библиотеку логирования, в которой интерфейс API и реализация выделены отдельно, что позволяет использовать API Log4j 2 совместно с реализацией другого логгера.

Spring Music является приложением для использования сервиса базы данных среды Cloud Foundry совместно со Spring Framework и Spring Boot. Оно создано для сохранения одних и тех же доменных объектов в одном из множества различных хранилищ – объектно-реляционном, документно-ориентированном или распределенном (key-value store).
Читать дальше →

Mash — язык программирования, компилирует сам себя

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

Приветствую всех в новом 2020-м году.

С момента публикации первого поста про Mash прошел практически ровно 1 год.

За этот год язык был сильно доработан, были продуманы многие его аспекты и определен вектор развития.

Этим всем я рад поделиться с сообществом.
Читать дальше →

Вещи, которые вы [возможно] не знали о Java

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

Приветствую, читатель!


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

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

А суть-то в чём, или Минимизация исходников — проще, чем кажется

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

В эти чудесные январские дни всех нас, конечно, волнует вопрос минимизации исходного кода с сохранением инварианта. В смысле, не волнует?!? Зря… Вот упал у вас компилятор, а программа гигантская — как-то неудобно такое разработчикам слать. И тут начинается веселье: а если вот это выкинуть? О, не падает — ладно, оставляем, а если это? — всё ещё падает, и это, и это, и то… Ой, я компилятор на старых исходниках запускал.


В то же время, автоматизация поиска багов — дело-то житейское: git bisect, llvm-bugpoint, creduce,… В статье я опишу yet another способ решения проблемы упрощения тестового случая, более-менее универсальный по отношению к языку программирования, и покажу некоторые примеры использования.

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

Регистрация и авторизация с помощью Spring Security на примере простого приложения

Время на прочтение21 мин
Количество просмотров336K
Добрый день!

В этой статье будет рассмотрено создание простого веб приложения с использованием Spring Boot и Spring Security. В приложении будет реализована регистрация новых пользователей и авторизация, ограничение доступа к страницам сайта в зависимости от роли пользователя.
Главная цель статьи показать как можно ограничить доступ к различным страницам сайта для пользователей с разными ролями.

Что будет представлять из себя приложение


Сайт со следующими страницам:

  • страницы доступные всем пользователям: главная, регистрации и логина;
  • страница доступная для зарегистрированных пользователей: новости;
  • страница доступная для администратора.

Что будем использовать


  • JDK 8+;
  • Intellij Idea;
  • Spring (Spring Boot, Spring MVC, Spring Security);
  • Hibernate;
  • JSP;
  • PostgreSQL.
Читать дальше →

История эволюции интерфейсов в Java

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

Интерфейс в Java сильно эволюционировал за прошедшие годы. Давайте рассмотрим, какие изменения произошли в процессе его развития.
Читать дальше →

JavaFX — еще не умер

Время на прочтение4 мин
Количество просмотров8.2K
Примечание переводчика.
Недавно я опубликованных на сайте habr переводы на русский язык нескольких уроков по JavaFX,.
И один из моих читателей спросил меня: «А этим сейчас вообще кто-то пользуется?»
Неделю назад я увидел пост в блоге Стивена Чина (Stephen Chin) и решил, что он дает очень хороший ответ на вопрос моего читателя.

Стивен Чин — Java Champion и один из авторов недавно вышедшей книги «The Definitive Guide to Modern Java Clients with JavaFX» любезно разрезрешил опубликовать перевод его поста.



У нас было несколько кандидатов названия, которые мы с нашим издателем придумали для нашей новой книги JavaFX. Моим личным фаворитом был «JavaFX — еще не умер. Я думаю, что он довольно точно описывает то, что чувствуют многие из нас, давних поклонников JavaFX, но наш издатель предпочел наш дополнительный вариант «The Definitive Guide to Modern Java Clients with JavaFX» (Полное руководство для современных Java клиентов с JavaFX). Хотя это неплохой заголовок, он явно не то же самое. Как вы думаете, какая обложка лучше?

Многие считают, что клиентская Java мертва; тем не менее, JavaFX по-прежнему жив и здоров благодаря большему чем когда-либо использованию, большему количеству платформ и поддержке сообщества. Вот три главные причины, по которым вы также можете рассмотреть возможность использования JavaFX для следующего клиентского приложения:
Читать дальше →

Исследуем записи в Java 14

Время на прочтение12 мин
Количество просмотров17K
В прошлый раз мы тестировали улучшенный оператор instanceof, который появится в грядущей, 14-й версии Java (выйдет в марте 2020). Сегодня я хотел бы исследовать в деталях вторую синтаксическую возможность, которая также появится в Java 14: записи (records).

У записей есть свой JEP, однако он не сильно блещет подробностями, поэтому многое придётся пробовать и проверять самим. Да, можно конечно, открыть спецификацию Java SE, но, мне кажется, гораздо интереснее самим начать писать код и смотреть на поведение компилятора в тех или иных ситуациях. Так что заваривайте чаёк и располагайтесь поудобнее. Поехали.
Читать дальше →

Программист-фанатик. Как сохранить конкурентные преимущества и стать заметным?

Время на прочтение5 мин
Количество просмотров13K
Нужно ли продвигать себя? Почему и как это лучше грамотно сделать? Как лучше планировать карьеру? Как сделать, чтобы понимали на работе? Об этом и многом другом в конспекте этой книги.

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

Java-дайджест за 27 декабря

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


  • Рон Пресслер собрал и выложил новый «официальный» прототип Project Loom (файберы для Java). В качестве основы используется JDK 14. Скачать можно здесь, прочитать анонc можно здесь. Люди потихоньку начинают втягиваться в тему, и на GitHub уже лежит несколько проектов, использующих Loom: Loom Date Server, Fibry (реализация акторов с поддержкой файберов), RxJavaFiberInterop (мост между RxJava 3 и Loom), и пара примеров использования Loom (раз, два). На всякий случай напоминаю, что Рон есть на Reddit, временами он пишет туда анонсы и оставляет хорошие развернутые комментарии.


  • InfernoPlus опубликовали видео про то, как сделали фанатскую игру в жанре Battle Royale про Super Mario, которая неожиданно хайпанула. На бэке там были Java + Tomcat. Конец истории: авторам позвонили из Nintendo и пообещали засудить, из-за чего игрушку пришлось убить.

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

Туториал: Реактивный Spring Boot

Время на прочтение8 мин
Количество просмотров8.6K
В прошлом месяце Trisha Gee (JetBrains) представила на SpringOne демонстрацию создания приложения, отображающего стоимость акций в реальном времени, с использованием Spring Boot, Kotlin и JavaFX. Демонстрация в режиме реального времени была записана и доступна в виде 70-минутного видео.

18 декабря Trisha завершила публикацию на сайте dzone.com туториала про реактивный Spring Boot на основе указанного видео, в виде серии более коротких видеороликов с сопровождающим сообщением в блоге, объясняющих каждый из шагов более медленно и более подробно.

У меня появилась мысль перевести этот туториал на русский язык. Однако на мой запрос об этом Trisha ответила вежливым отказом:
«Let me check with my organisation. I would love to have it translated but we might have a prefered way to get things translated.»

Поэтому я решил ограничиться обзором этого туториала, включающего следующую серию уроков:
Читать дальше →

Чем запомнился 2019-й год в разработке?

Время на прочтение4 мин
Количество просмотров3.7K
Все ближе Новый год. Только ленивый не написал про тренды 2020 года, а мы решили зафиксировать самые значимые события из года уходящего — 2019. Держите ТОП-7 событий в мире разработки от практик Java и Frontend центра разработки компании “Рексофт” в Воронеже.


Источник
Читать дальше →

Зачем учить Java и как делать это эффективно. Доклад Яндекса

Время на прочтение11 мин
Количество просмотров64K
Чем Java отличается от других популярных языков? Почему именно Java может быть первым языком для изучения? Давайте составим план, который поможет выучить Java как с нуля, так и с применением навыков программирования на других языках. Перечислим отличия между созданием продакшен-кода на Java и разработкой на других языках. Михаил Затепякин прочитал этот доклад на встрече для будущих участников стажировки Яндекса и других начинающих разработчиков — Java Junior meetup.


— Всем привет, меня зовут Миша. Я разработчик из Яндекс.Маркета, и сегодня я расскажу вам, зачем учить Java и как делать это эффективно. Вы можете задать резонный вопрос: почему это буду рассказывать я, а не какой-нибудь сильный разработчик с кучей лет стажа? Дело в том, что я сам изучал Java недавно, года полтора назад, поэтому еще помню, как это примерно было и какие есть подводные камни.
Читать дальше →

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

Spring Boot vs Spring MVC vs Spring — Как они сравниваются?

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

Spring Boot vs Spring MVC vs Spring — Как они сравниваются?


image

Spring, Spring Boot, Spring MVC, везде есть слово “spring”! Давайте пройдемся где и когда вы можете применять каждый из этих инструментов


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

Что за основная проблема, которую этот Spring Framework решает?


Долго и упорно подумайте. Какова проблема, решаемая Spring Framework?

Почему это важно? Потому что, когда DI или IOC правильно используются, мы можем разрабатывать слабо связанные приложения. А слабо связанные приложения могут быть легко протестированы юнит-тестами.

Давайте рассмотрим простой пример.

Пример без внедрения зависимостей


Рассмотрим пример ниже: WelcomeController зависит от WelcomeService, чтобы получить приветственное сообщение. Что он делает, чтобы получить экземпляр WelcomeService?

WelcomeService service = new WelcomeService();

Эта строка создает экземпляр данного сервиса. А это значит что они сильно связаны. Например, если я создаю мок для WelcomeService в юнит-тесте для WelcomeController, как мне заставить WelcomeController использовать мок? Не легко!

@RestController
public class WelcomeController {   private WelcomeService service = new WelcomeService();   @RequestMapping("/welcome")
   public String welcome() {
       return service.retrieveWelcomeMessage();
   }
}
Читать дальше →

Конкурс для бэкенд-разработчиков FunCode Java/Kotlin challenge

Время на прочтение1 мин
Количество просмотров5.8K
FunCorp проводит конкурс для бэкенд-разработчиков на языке Java/Kotlin с призовым фондом в 550 000 рублей.

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


Условия участия

Улучшаем allOf и anyOf в CompletableFuture

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


И снова здравствуйте. В преддверии старта курса «Разработчик Java» подготовили для вас перевод полезного материала.


В CompletableFuture есть два метода, дизайн которых меня удивляет:

  • CompletableFuture#allOf
  • CompletableFuture#anyOf


В этой статье мы посмотрим, что с ними не так и как их можно сделать более удобными.
Читать дальше →

Как Kafka стала былью

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


Привет, Хабр!


Я работаю в команде Tinkoff, которая занимается разработкой собственного центра нотификаций. По большей части я разрабатываю на Java с использованием Spring boot и решаю разные технические проблемы, возникающие в проекте.


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


В качестве замены нам предложили Apache Kafka, которая обладает высоким потенциалом масштабирования, но, к сожалению, требует практически индивидуального подхода к конфигурированию для разных сценариев. Кроме того, механизм at least once delivery, работающий в Kafka по умолчанию, не позволял поддерживать необходимый уровень консистентности из коробки. Далее я поделюсь нашим опытом конфигурации Kafka, в частности расскажу, как настроить и жить с exactly once delivery.

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

Ненормальное реактивное программирование

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

Еще одна статья про реактивное программирование. И только не надо на этой строчке закатывать глаза и томным голосом говорить вслух — "Ну что еще ты можешь мне рассказать про реактивное программирование… а?". Она немного отличается от кучи других, написаных словно под копирку, поэтому некоторые вещи в ней могут показаться… странными или даже совершенно неуместными, как сортирный юмор.


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


Будет интересно.

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

TelegramBot. Базовый функционал. Мухи отдельно, котлеты отдельно. (Часть 2)

Время на прочтение13 мин
Количество просмотров48K
Продолжаем разрабатывать базовый функционал для бота в телеграм. В предыдущих частях обсуждался момент, что работу бота по получению сообщений, обработке и отправке нужно разделять. Давайте попробуем с помощью базовых инструментов Java Core сделать нашего бота многопоточным и асинхронным. Придумаем ему такое задание, которое занимает очень много времени на обработку. Рассмотрим как работают команды в телеграмме и как их нужно обрабатывать.

Это продолжение первой части статьи по программированию ботов для телеграмм на Java
TelegramBot инструкция по созданию базового функционала для бота. (Часть 1)
Кому интересно дальше, милости прошу под кат…
Читать дальше →

Программист-фанатик. Конспект часть 2 + конспект-таблица. Рыба, гиганты и наставники

Время на прочтение3 мин
Количество просмотров14K
В комментариях к первой части некоторые писали, что и конспект можно сделать короче. Но в таком случае где-то терялись бы логические переходы. Поэтому для тех кто хочет совсем коротко и только сжато самую суть я сделал конспект-таблицу. Она в самом конце статьи. Там же голосовалка с вопросом «Насколько удачен такой формат?».

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

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