Рубрика «java» - 207

Производительность и многопоточность на Java-конференции JPoint 2016 - 1

Всего 8 недель осталось до крупнейшей в России Java-конференции JPoint 2016. Я уже рассказывал на хабре, что нас с вами ожидает:

  • два дня под одной крышей в центре Москвы
  • около 40 докладов в четырёх параллельных залах. Мы хотели сделать 36 докладов, как на Joker, но видимо всё же, уплотним сетку и сделаем 44 доклада
  • море общения с коллегами — около 1000 Java-программистов приедут к нам отовсюду

Я попробую потихоньку рассказать про основные темы JPoint и начну с нашей любимой — производительность и многопоточность.

На эту тему уже анонсированы следующие доклады:

  • Алексей Шипилёв, Oracle — Если не Unsafe, то кто: восход VarHandles
  • Сергей Куксенко, Oracle — Quantum Performance Effects, level up. За пределами ядра
  • Руслан Черёмин, Deutsche Bank — Escape Analysis и скаляризация
  • Владимир Ситников, NetCracker — Ну и производительность у вашего OpenSource!
  • Volker Simonis, SAP — HotSpot Intrinsics
  • Алексей Шипилёв, Oracle — The Lord of the Strings: Two Scours
  • Тагир Валеев — Stream API puzzlers
  • Владимир Иванов, Oracle — Native код, Off-heap данные и Java
  • Владимир Озеров, GridGain — (Почти) неблокирующая синхронизация

Читать полностью »

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

В java.util.concurrent много различных классов, которые по функционалу можно поделить на группы: Concurrent Collections, Executors, Atomics и т.д. Одной из этих групп будет Synchronizers (синхронизаторы).

Справочник по синхронизаторам java.util.concurrent.* - 1

Синхронизаторы – вспомогательные утилиты для синхронизации нитей, которые дают возможность разработчику регулировать и/или ограничивать работу нитей и предоставляют более высокий уровень абстракции, чем основные примитивы языка (мониторы).
Читать полностью »

В пятницу, 26 февраля (да, уже завтра!), в 20:00 в петербургском офисе компании Oracle пройдет встреча JUG.ru c разработчиками языка Kotlin Андреем Бреславом и Дмитрием Жемеровым. Андрей — вообще самый главный человек в Kotlin, возглавляет разработку языка, а Дмитрий — возглавляет разработку плагина к IntelliJ IDEA. Так что у нас будет всем котлинам котлин!

Тема встречи — недавний и долгожданный релиз языка Kotlin. Это уже никакая не бета и не RC, это полноценный Final Release. И поэтому встреча тоже называется очень просто:
[Питер] Встреча JUG.ru с разработчиками Kotlin - 1
Для тех, кто всё проспал:
Kotlin — новый язык программирования для JVM и Android, выпущенный компанией JetBrains неделю назад. Выпуску предшествовало несколько лет разработки, ребята из JetBrains довольно много рассказывают про Kotlin на конференциях.

Докладчики

Дмитрий Жемеров работает в JetBrains с 2003 года и успел поучаствовать в разработке многих проектов, включая IntelliJ IDEA, PyCharm, WebStorm и другие. Сейчас он руководит командой, которая делает Kotlin-плагин для IntelliJ IDEA, а также в соавторстве со Светланой Исаковой пишет книгу о Kotlin.

Андрей Бреслав возглавляет разработку языка Kotlin в компании JetBrains. Раньше преподавал и в университете и в старшей школе; теперь вместо этого выступает на различных конференциях, рассказывая о своём проекте и о фундаментальных принципах, лежащих в основе профессии разработчика ПО.

[Питер] Встреча JUG.ru с разработчиками Kotlin - 2

Программа встречи

Встреча будет состоять из 4 частей, и целиком будет посвящена языку Kotlin.
Читать полностью »

В пятницу, 19 февраля, мы выпустили бета-версию IntelliJ IDEA 16. Учитывая то, что с момента выхода IntelliJ IDEA 15 прошло немногим более трех месяцев, вы будете приятно удивлены тем, что мы успели сделать за это время. Мы приглашаем вас скачать свежую версию прямо сейчас и самостоятельно попробовать все улучшения, о самых главных из которых я с удовольствием расскажу далее.

image

Читать полностью »

Всем привет. Эта статья продолжение 10к на ядро с конкретными примерами оптимизаций, которые были проделаны для повышения производительности сервера. С написания первой части прошло уже 5 мес и за это время нагрузка на наш продакшн сервер выросла с 500 рек-сек до 2000 с пиками до 5000 рек-сек. Благодаря netty, мы даже не заметили это повышение (разве что место на диске уходит быстрее).

Blynk load
(Не обращайте внимание на пики, это баги при деплое)

Эта статья будет полезна всем тем кто работает с netty или только начинает. Итак, поехали.

Нативный Epoll транспорт для Linux

Одна из ключевых оптимизаций, которую стоит использовать всем — это подключение нативного Epoll транспорта вместо реализации на java. Тем более, что с netty это означает добавить лишь 1 зависимость:

<dependency>
   <groupId>io.netty</groupId>
   <artifactId>netty-transport-native-epoll</artifactId>
   <version>${netty.version}</version>
   <classifier>linux-x86_64</classifier>
</dependency>

и автозаменой по коду осуществить замену следующих классов:

  • NioEventLoopGroup → EpollEventLoopGroup
  • NioEventLoop → EpollEventLoop
  • NioServerSocketChannel → EpollServerSocketChannel
  • NioSocketChannel → EpollSocketChannel

Дело в том, что java реализация для работы с не блокирующими сокетами реализуется через класс Selector, который позволяет вам эффективно работать с множеством соединений, но его реализация на java не самая оптимальная. Сразу по трем причинам:

  • Метод selectedKeys() на каждый вызов создает новый HashSet
  • Итерация по этому множеству создает iterator
  • И ко всему прочему внутри метода selectedKeys() огромное количество блоков синхронизации

В моем конкретном случае я получил прирост производительности около 30%. Конечно же, эта оптимизация возможна только для Linux серверов.
Читать полностью »

image

На днях JetBrains после пятилетней работы выпустила первый релиз языка Kotlin. Давайте посмотрим, что же это за язык, попробуем разобраться зачем и для кого он, какие имеет функциональные особенности. Скорее всего в статью затесались и личные впечатления от языка, но я старался, чтобы они не влияли на изложение полезной информации. Если вы еще ничего или почти ничего не знаете о Kotlin, то я завидую вам, ибо по моему ощущению почитать про инструмент, который ты долго ждал, сродни распаковке новогоднего подарка. Впрочем судите сами.

Читать полностью »

На этой неделе случилось важное для нас событие — вышла первая версия языка программирования Kotlin! Так как почти вся разработка Kotlin велась в Питерском офисе компании JetBrains, многиее уже знают, что такое Kotlin и пробовали его на практике, поэтому этот пост больше для комментариев: задавайте любые вопросы и команда Kotlin ответит. Мы онлайн!

image

Читать полностью »

Пост расcчитан на начинающих, на людей незнакомых с технологией Apache Lucene. В нем нет материала о том, как устроен Apache Lucene внутри, какие алгоритмы, структуры данных и методы использовались для создания фреймворка. Пост является обучающим материалом-тизером, написанным для того, чтобы показать, как организовать простейший нечёткий поиск по тексту. В качестве материала для обучения предоставлен код на github, сам пост в качестве документации и немного данных для тестирования поисковых запросов.

Материал по работе с Apache Lucene и созданию простейшего нечёткого поиска - 1

Читать полностью »

Вчера вышел первый релиз (1.0) языка программирования Kotlin от компании JetBrains.
Как пишет компания в своем вчерашнем пресс-релизе — «это был долгий путь но мы наконец выпустили первый релиз и вместе с тем представляем новое лого(иконку) языка»

It’s been a long and exciting road but we’ve finally reached the first big 1.0, and we’re celebrating the release by also presenting you with the new logo

image

Читать полностью »

Грабли Java - 1Недавно в нашей компании среди разработчиков прошел конкурс на знание подводных камней языка Java. Победители получили почет и призы, все получили много позитива, а также поводов для раздумий и дискуссий. По горячим следам спешим поделиться с хабраобщественостью самыми интересными вопросами, прозвучавшими на викторине. Если вы новичок в Java или профессионал, но хотите освежить в памяти темные стороны языка, добро пожаловать под кат. Там вас ждут 4 каверзных вопроса с ответами, обоснованиями и выводами.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js