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

Java *

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

Время на прочтение4 мин
Количество просмотров10K
Тезисы из третьей части и, конечно, конспект-таблица в конце статьи для тех, кто хочет за 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 мин
Количество просмотров49K
Дошли руки до книги Чеда Фаулера «Программист-фанатик».

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

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

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

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


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

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

Время на прочтение13 мин
Количество просмотров3.6K
Привет, Хабр!

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


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

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

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


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

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

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


  • Вышел первый пробный билд JDK 15. Страничка проекта — здесь, но смотреть там пока совершенно нечего.
  • RedHat зарелизили WildFly 18. Заявлена поддержка Jakarta EE 8, MicroProfile 3.0, JDK 13, есть куча изменений в подсистемах безопасности и EE, и многое другое.
  • Tobias Hartmann, HotSpot-инженер в Oracle, опубликовал в почтовой рассылке valhalla-dev большое письмо «Optimizing the way to Valhalla: JIT Status Update». Valhalla — это проект в OpenJDK, представляющий из себя инкубатор самых крутых современных идей в виртуальной машине и языке Java, такие как Value Types и Generic Specialization. Письмо представляет собой сплошной чеклист, и копипастить его в этот дайджест бессмысленно. В целом, там подробности про оптимизацию доступа к массивам и скаляризацию в C2.
Читать дальше →

Качество кода Apache Hadoop: production VS test

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

Рисунок 1

Для того, чтобы получить качественный production код, недостаточно просто обеспечить максимальное покрытие тестами. Несомненно, для того, чтобы добиться высоких результатов, основной код проекта и тесты обязаны работать в идеально сплоченном тандеме. Поэтому уделять внимания тестам нужно столько же, сколько и основному коду. Написание хорошего теста – залог того, что он отловит регрессию в production. Чтобы показать важность того, что баги в тестах ничем не хуже, чем в production, рассмотрим очередной разбор предупреждений статического анализатора PVS-Studio. Цель: Apache Hadoop.
Читать дальше →

Быстрая разработка Web приложения на Vaadin и Spring Boot

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

КПДВ


Целью данной статьи является систематизация процесса разработки веб приложения на Vaadin 14 с использованием Spring Boot.


Перед прочтением данной статьи, рекомендую прочитать следующий материал:


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

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

Hello World из байт-кода для JVM

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

Скомпилируем простенькую программу выводящую "Hello World" и пройдемся по его структуре


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


На самом деле, это не так сложно. Достаточно использовать инструмент javap из JDK и рассмотреть дизассемблированный код.


А мы приступим к разбору самой структуры байт-кода для JVM

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

REST API на Java без фреймворков

Время на прочтение9 мин
Количество просмотров77K
Перевод статьи подготовлен специально для студентов курса «Разработчик Java».




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

Вы можете сказать, что Spring — это стандарт и зачем изобретать велосипед? А Spark — это хороший удобный REST-фреймворк. Или Light-rest-4jis. И я скажу, что вы, конечно, правы.

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

Сообщество open source очень активное, и есть большая вероятность, что ошибки в фреймворке будут быстро исправлены. Но все же, я хотел бы призвать вас подумать, действительно ли вам нужен фреймворк. Если у вас небольшой сервис или консольное приложение, возможно, вы сможете обойтись без него.
Читать дальше →

Не все патчи одинаково полезны

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

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


Здесь мы рассмотрим несколько "улучшений", отклонённых из-за непонимания тонкостей спецификации языка, неочевидных угловых случаев и других причин. Поехали!

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

5 скрытых cекретов в Java

Время на прочтение12 мин
Количество просмотров19K
Привет, Хабр! Представляю вашему вниманию перевод статьи "5 Hidden Secrets in Java" автора Justin Albano.

Хотите стать джедаем Java? Раскройте древние секреты Java. Мы сосредоточимся на расширении аннотаций, инициализации, на комментариях и интерфейсах enum.

По мере развития языков программирования начинают появляться и скрытые функции, а конструкции, о которых никогда не задумывались основатели, все больше распространяются для всеобщего использования. Некоторые из этих функций становятся общепринятыми в языке, тогда как другие отодвигаются в самые темные уголки языкового сообщества. В этой статье мы рассмотрим пять секретов, которые часто упускаются из виду многими разработчиками Java (справедливости ради, некоторые из них имеют веские на это причины). Мы рассмотрим как варианты их использования, так и причины, которые привели к появлению каждой функции, а также некоторые примеры, демонстрирующие, когда целесообразно использовать эти функции.
Читать дальше →

О плагинах Gradle, многопоточности в распределенных системах и автоматизации мониторинга: видео с митапа Яндекс.Денег

Время на прочтение2 мин
Количество просмотров3K
В нашем офисе состоялась традиционная встреча бэкенд-разработчиков — митап Java Jam.

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

Для тех, кто хотел посетить митап, но не смог, а также для всех желающих узнать опыт Яндекс.Денег и эксперта Hazelcast, видео трех докладов — под катом.


Pipes & Filters. Пример применения и реализации при помощи Spring

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

В данной статье речь пойдёт о применении паттерна Pipes & Filters.


Для начала мы разберём пример функции, которую позже перепишем с помощью выше упомянутого паттерна. Изменения в коде будут происходить постепенно и каждый раз мы будем создавать работоспособный вариант, пока не остановимся на решении с помощью DI (в данном примере Spring).


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

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

ExtJS 7 и Spring Boot 2. Как построить SPA, взаимодействующее с вашим API и внешними ReactJS плагинами?

Время на прочтение3 мин
Количество просмотров6.3K
Последние версии Ext JS, особенно Modern Toolkit снизили порог вхождения во фреймворк (примеры Kitchen Sink), упростили создание нужного интерфейса (привет Sencha Architect) и добились минимального размера веб-приложений (Sencha Cmd).

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


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

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