Обновить
128K+

Java *

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

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

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

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

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

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

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

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

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

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


  • Рон Пресслер собрал и выложил новый «официальный» прототип 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 мин
Охват и читатели9K
В прошлом месяце 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.8K
Все ближе Новый год. Только ленивый не написал про тренды 2020 года, а мы решили зафиксировать самые значимые события из года уходящего — 2019. Держите ТОП-7 событий в мире разработки от практик Java и Frontend центра разработки компании “Рексофт” в Воронеже.


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

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

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


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

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

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

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.9K
FunCorp проводит конкурс для бэкенд-разработчиков на языке Java/Kotlin с призовым фондом в 550 000 рублей.

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


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

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

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


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


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

  • CompletableFuture#allOf
  • CompletableFuture#anyOf


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

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

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


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


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


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


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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

Время на прочтение4 мин
Охват и читатели11K
Тезисы из третьей части и, конечно, конспект-таблица в конце статьи для тех, кто хочет за 30 секунд узнать основные мысли книги.

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

Планы команды IntelliJ Platform на 2020 год

Время на прочтение6 мин
Охват и читатели11K
Сегодня мы хотели бы рассказать о некоторых из текущих проектов команды IntelliJ Platform, которые затронут IntelliJ IDEA и другие IDE на базе нашей платформы. Результаты этих проектов будут выпускаться в течение следующего года; некоторые из них попадут уже в релиз 2020.1, который выйдет весной. Проекты, о которых мы хотели бы рассказать, касаются двух больших областей: производительности и поддержки современных сценариев разработки.

Производительность


Скорость индексации


Индексация на данный момент — одно из самых проблемных мест с производительностью наших IDE. Мы планируем подойти к ее решению с нескольких направлений.

Во-первых, мы планируем поддержать готовые фрагменты индекса. Теперь вместо того, чтобы каждая копия IntelliJ IDEA заново индексировала класс java.lang.String, мы сможем предоставить для скачивания готовый фрагмент индекса для JDK, который можно будет переиспользовать без дополнительных затрат CPU. Помимо JDK, мы изучаем возможность предоставлять готовые фрагменты индекса для библиотек из Maven Central, а также для интерпретаторов и пакетов в других IDE. Мы также хотели бы позволять командам и организациям использовать готовые фрагменты индекса для кода своих проектов, но у нас пока нет на этот счет конкретных планов.
Читать дальше →

Исследуем бинарные форматы на примере байткода .class файла

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

image


Если вас не пугает картинка выше, если вы знаете чем отличается big-endian от little-endian, если вам всегда было интересно как "устроены" бинарные файлы, значит эта статья для ВАС!

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

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

Время на прочтение4 мин
Охват и читатели50K
Дошли руки до книги Чеда Фаулера «Программист-фанатик».

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

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

Топ 10 ошибок в проектах Java за 2019 год

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


2019 год подходит к концу, и команда PVS-Studio подводит итоги уходящего года. В начале 2019 года мы расширили возможности анализатора, поддержав язык Java. Поэтому список наших публикаций про проверку открытых проектов пополнился обзорами Java проектов. За год было найдено немало ошибок, и мы решили подготовить Top 10 самых интересных из них.
Читать дальше →

Смешиваем OpenJDK и NodeJS: межъязыковые взаимодействия и вертикальная архитектура

Время на прочтение13 мин
Охват и читатели3.8K
Привет, Хабр!

Давно вынашивали мысль обсудить с вами тему GraalVM, откладывали, пока не нашли, наконец, сегодняшнюю статью, тематика которой серьезно выходит за рамки разбора конкретной виртуальной машины. Автор Майк Хёрн (Mike Hearn) ни много ни мало излагает целую парадигму межъязыковых взаимодействий и многоязычного программирования (polyglot programming). Далее — знаменитый пример вертикального масштабирования и весьма длинная статья под катом.


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

Алексей Рагозин про новые и старые возможности Java Flight Recorder в OpenJDK 11 на встрече jug.msk.ru

Время на прочтение2 мин
Охват и читатели3.1K
12 декабря на завершающей 2019 год встрече московского сообщества Java-разработчиков jug.msk.ru Алексей Рагозин провёл мастер-класс по использованию новых версий Java Flight Recorder и Mission Control.


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