Список докладов
Алексей Шипилёв, Oracle — (The Art of) (Java) Performance Benchmarking II
Доклад про построение корректных (микро)бенчмарков для JVM, учитывая всевозможные грабли, которые нас поджидают от автоматических оптимизаций, особенностей работы рантайма, случайной игры в кости богоподобных существ и прочих жизненных неприятностей. Доклад расширяет и углубляет первый доклад про микробенчмарки, читавшийся в 2009 году. Примеры микробенчмарков показаны на примере JMH — фреймворка, использующегося для тестирования OpenJDK.
Николай Чашников, JetBrains — IntelliJ IDEA изнутри: архитектура, производительность, процесс разработки
В докладе рассмотрены некоторые аспекты архитектурного устройства среды разработки IntelliJ IDEA. Описаны изменения в архитектуре, которые были сделаны в процессе развития продукта для улучшения производительности. Приведены советы по настройке IntelliJ IDEA и окружения для увеличения скорости работы. Также будет рассказано о процессе разработки продукта IntelliJ IDEA, о том, как происходит планирование новой функциональности, тестирование и взаимодействие с пользователями.
Владимир Долженко, Deutsche Bank — GC: друг или враг?
Одним из системных камней преткновения в производительности Java является сборщик мусора. Рассказ пойдёт о том, зачем появился на свет безмусорный логгер, чего стоит не мусорить и как это влияет на работу приложения, а так же некоторые другие общие подходы по уменьшению мусорности.
Дмитрий Завалишин, Digital Zone — Конвертер байткода JVM для виртуальной машины Фантом
Главный миграционный путь для операционной системы Фантом — возможность портирования готовых приложений для JVM и Dalvik (Android). Этот путь требует наличия транслятора байткода виртуальной машины Java в виртуальную машину Фантом. На сегодняшний день было предпринято две попытки написания такого транслятора. Первая — на основе кода транслятора байткода Java в С (Toba), вторая — на основе фреймворка Soot. В докладе будет рассказано о проблемах наивного (Toba) подхода к трансляции байткода и причинах перехода на более сложную Soot-модель.
Андрей Солнцев, Codeborne — Eclipse vs Intellij IDEA
Принято считать, что выбор IDE — вечный вопрос, не имеющий правильного ответа. Различий так много, что трудно выбрать, какие из них важнее, но все сходятся в одном: обе IDE примерно одинаковы по своим возможностям, и выбор одной из них — это дело вкуса. Не опускаясь в споры о плагинах, горячих клавишах и пр., я хочу показать, в чём состоит существенная разница между Eclipse и IDEA, и как это связано с разными стилями программирования и вообще процессами разработки.
Андрей Бреслав, JetBrains — Type-safe Web with Kotlin
В HTML и CSS нет средств повторного использования, не говоря о типизации и т.д. Существует множество различных приспособлений для борьбы с этой проблемой: Templating-движки для HTML, разные препроцессоры для CSS вроде LESS или SAS и т.д. Такие инструменты прекрасны по сравнению с «сырым» HTML/CSS, но в действительности весьма примитивны. Kotlin — язык программирования общего назначения, в который не встроено никакой поддержки веб-программирования. Однако набор абстракций, предоставляемых в Kotlin, даёт возможность вывести эту область на совершенно другой уровень, где весь HTML/CSS статически типизирован, подлежит повторному использованию и вообще дисциплине программной инженерии.
Одной из первых попыток реализовать этот подход является фреймворк Kara, одновременно ставший одним из первых продуктов, написанных на Kotlin за пределами JetBrains (и России). Kara предоставляет типизированные билдеры (type-safe builders) для HTML/CSS, а также типизированный роутинг (отображение URL на конкретные сервлеты, генерация ссылок и пр.). В докладе будут изложены как основные принципы реализации подобных фреймворков, так и наши планы на светлое будущее, включающие бесшовное встраивание JavaScript'а, выполняемого на клиенте в шаблоны страниц и др.
Сергей Куксенко, Oracle — Quantum Performance Effects
Что Java-разработчику стоит знать об устройстве Hardware? Каков минимальный объем знаний требуется Performance-специалисту? В докладе будут рассмотрены конкретные примеры с точки зрения Java Performance. Кроме прочего, мы попробуем ответить на следующие вопросы:
- Должен ли Java разработчик знать, как устроены современные процессоры?
- Защищены ли Java разработчики от утекания микроархитектурных проблем на высокий уровень?
- Как не удивляться тому, что две почти одинаковые программы на Java могут работать с разной на порядки скоростью?
Maurice Naftalin, Incept5 — Closures and Collections — the World After Eight
The introduction of closures will bring new idioms to Java programming. Collections in particular will be managed very differently, with stream-oriented processing and lazy evaluation becoming the norm for many applications. Collections connected by these streams will offer new «parallel views» — implementations that will make optimal use of highly-concurrent hardware. It's going to be a different world after Java 8!
Олег Анастасьев, Одноклассники — Класс!ная Cassandra
«Одноклассники» начали использовать NoSQL-систему хранения данных Cassandra с 2010 года, решая проблемы масштабируемости и отказоустойчивости сайта. Сейчас Cassandra широко используется во всё большем числе высоконагруженных подсистем портала. Мы расскажем о том, как Cassandra устроена под капотом, рассмотрим её сильные и слабые стороны и поговорим о том, какие решения мы принимали и что мы изменили в Cassandra, чтобы сделать наше хранилище более высокопроизводительным и надежным.
Руслан Черёмин, Deutsche Bank — Модель памяти Java: близкие контакты третьей степени
Формальную модель памяти Java, уникальный инструмент, позволяющий писать на Java доказуемо корректные многопоточные программы, практически никто не понимает и не умеет использовать в полной мере. В лучшем случае люди помнят про нотацию happens-before, но на практике просто используют полдюжины «как надо» и «как не надо» делать, в худшем случае вообще полагаются на ересь вроде «volatile store выполняет flush в глобальную память».
Для такого положения дел есть свои причины: авторы JMM как будто специально старались сформулировать ее таким образом, чтоб без поллитры рабочему человеку было не разобраться. Конечно, за 50 минут мы вряд ли успеем всё понять, но, надеюсь, вы сможете посмотреть на JMM другими глазами.
Алексей Шипилёв, Oracle — Bulletproof Java Concurrency
Доклад про опыт тестирования Concurrency в JDK/JVM, разного рода загадки и примеры, как оптимизации и баги в реализации виртуальной машины и библиотек ломают модель памяти, общую корректность, разумные ожидания, и что нам с этим делать. Доклад требует знания JMM, понимания внутренней работы JRE, и азов устройства железа.
Виталий Трифанов и Дмитрий Цителов, Devexperts — Динамическое обнаружение гонок в многопоточных Java-программах
Состояния гонки относятся к наиболее частым и неприятным ошибкам многопоточного программирования. Они возникают, когда несколько потоков несинхронизированно обращаются к общему участку памяти. Гонки очень сложно обнаружить вручную на всех этапах разработки ПО — их проявления обычно не видны сразу, а возникают они крайне редко, при очень специфическом чередовании операций в потоках. Гонки приводят к повреждению глобальных структур данных и ошибкам в работе программы, поэтому необходимость в инструменте автоматического обнаружения гонок чрезвычайно высока. В докладе мы расскажем о нашем опыте разработки детектора гонок:
- Как искать гонки в программах
- Как эффективно внедриться в ход работы Java-программы
- С какими принципиальными техническими трудностями мы столкнулись
- Как справиться с большим объемом данных.
Андрей Паньгин, Одноклассники — Java Runtime: повседневные обязанности виртуальной машины Java
Что делает JVM? Компилирует код и выполняет сборку мусора, — скажете вы и будете совершенно правы. Тем не менее, Java приложения могут работать даже при полном отсутствии JIT и GC.
Виртуальная машина состоит из большого числа компонентов, благодаря которым исполнение Java-программ становится возможным. Из доклада вы узнаете, что представляет собой байткод, где лежат переменные, что содержится в class-файлах, кто ловит исключения, насколько дороги JNI методы, как работает синхронизация и многое другое.
Александр Макаров, Luxoft — Исследование возможностей и ограничений JVM по оптимизации памяти: история одного проекта
Для многих мир управления памятью в JVM остается тайной, покрытой мраком ровно до тех пор, пока не появляются неприятные проблемы. Мне довелось участвовать в проекте, где требования по памяти к системе были уменьшены в четыре раза, что потребовало от нас в кратчайшие сроки понять устройство Garbage Collector’а, разобраться в типах ссылок, алгоритмах сборки мусора и множестве контролирующих ключей. Помимо истории оптимизации проекта, в докладе будет рассказано о влиянии настроек и приёмах уменьшения расхода памяти на различных версиях и типах JVM.
Александр (Шура) Ильин, Oracle — Type annotations in Java 8. И почему это хорошо
Что нового появилось в Java, относящегося к аннотациям? Изменения языка, которые не выглядят такими значительными, как изменения, связанные с Lambda, в то же время являются очень важными для уменьшения количества ошибок в коде на этапе разработки. В докладе мы рассмотрим функциональность, встроенную в язык Java, The Checkers Framework и далее, вплоть до написания собственных проверок в терминах бизнес логики!
Keynote
Аня Барски, Azul Systems — Java Life Story
Для многих из нас технологии становятся такой же неотъемлемой частью жизни, как города и страны, где мы живем, близкие нам люди, и языки, на которых мы общаемся. В речи мы всё чаще употребляем названия технологий и продуктов, и они становятся в один ряд с другими аспектами нашего существования. Самое же интересное происходит тогда, когда нам выпадает возможность не просто использовать технологии, а создавать и развивать их, и продвигать их за пределы изначальной аудитории — в новые страны, в новые сообщества, в новые области применения.
Java появилась в моей жизни 15 лет назад, и за эти годы мне повезло не только стать участником создания и развития Java как языка и платформы, но и оказаться на передовой продвижения Java в Россию и в Петербург и стать основателем и руководителем петербургского Центра Высоких Технологий Sun Microsystems. Всё это время я наблюдала за становлением и ростом Java и хотела бы поделиться своими наблюдениями, а также взглядом на будущее развитие Java.
Maurice Naftalin, Incept5 — What's New in Java 8
Java 8 will ship with more than 50 new features. Some of the new features will provide big performance gains, others will radically change the way we write Java programs. This talk will survey the most prominent features of the changed landscape of Java development — after 8.