(Почти) все доклады конференции Joker 2013

    Всем привет!

    Итак, до питерской Java-конференции Joker 2013 осталось чуть больше недели. У нас в сетке осталось место только для трёх докладов, остальные — готовы. Если вы вдруг по какой-то причине ещё не знаете о нашей конференции, то почитайте о ней в моей предыдущей статье.

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



    Gil Tene, Azul Systems — Understanding Java Garbage Collection and what you can do about it

    Доклад о работе Garbage Collector'а: терминологии, метриках, основных принципах, ключевых механизмах, классификации существующих алгоритмов и имплементаций GC по различным признакам. Так же речь пойдёт об проблеме «Application Memory Wall» и о деталях работы С4 — сборщика мусора в Azul Zing.

    Kirk Pepperdine — The (not so) dark art of Performance Tuning

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

    Pawel Lipinski — Clean Tests: how to structure your tests, so that they serve you well

    Доклад о том, как писать и рефакторить тесты, чтобы их было легко читать, поддерживать и следить за их актуальностью.

    Александр Белоцерковский, Microsoft — Windows Azure + Java = (Open) Integration

    Речь пойдёт о том, как можно использовать Oracle Database, как развернуть Hadoop, как написать приложение и опубликовать его, используя плагин Windows Azure для Eclipse. Будет показано, как использовать эти и другие возможности облачной платформы Windows Azure в применении к Java-разработке.



    Александр Отенко, Oracle — О чём молчит профайлер

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

    Александр Тоболь, Одноклассники — Платформа для Видео сроком в квартал

    Чуть больше чем за квартал совсем небольшая команда перезапустила работающий в режиме 24/7 видео-сервис на «Одноклассниках» на написанной с нуля платформе, развернутой на парке из свыше 200 серверов, распределенных между несколькими центрами обмена данными. Речь пойдёт об успехах и неудачах в ходе решения задач по обеспечению бесперебойных загрузки, трансформации, хранения, раздачи видео и мониторинга, а также остановиться на особенностях, связанных с нагрузкой в 1000 просмотров в секунду.

    Алексей Шипилёв, Oracle — О чём молчат Heap Dump-ы

    Доклад о том, почему нельзя доверять Heap Dump-ам. Будет показано, как в HotSpot аллоцируются объекты: как раскладываются по памяти заголовки объектов, как поля, как ссылки, как выглядит выравнивание и т.п. Вживую будет роанализировано почти два десятка примеров, некоторые из которых весьма любопытны.

    Андрей Бреслав, JetBrains — Компромиссы, или Как проектируются языки программирования

    Доклад посвящен компромиссам в дизайне языков программирования: почему разработчики языков делают так или иначе. Будет рассмотрено несколько характерных примеров, касающихся Kotlin, Java, Scala и C#, что позволит сформировать некоторое представление о том, как проектируются языки.



    Андрей Паньгин, Одноклассники — Аварийный дамп — «черный ящик» упавшей JVM

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

    Антон Архипов, ZeroTurnaround — Скрипты в Java-приложениях

    На JVM работает множество скриптовых языков — Groovy, JRuby, JavaScript и т.д. Возможность внедрения скриптов в приложения на удивление недооценена. Существует два варианта для внедрения скриптов в Java-приложения: используя стандартный набор интерфейсов из пакета javax.script, или же средствами API внедряемого скриптового «движка». Будут рассмотрены «за» и «против» обоих подходов и дан ответ на вопрос, зачем встраивать Groovy, JRuby или JavaScript в свои Java-приложения.

    Антон Кекс, Codeborne — Как я создал desktop-приложение на Java, скачанное 9 000 000 раз

    Речь пойдёт об опыте докладчика по созданию популярной сетевой утилиты Angry IP Scanner, используемой сотнями тысяч людей по всему миру. Посмотрим, насколько всё ещё актуален изначальный слоган Java «write once, run anywhere» в реальном мире ожиданий конечных пользователей. Постараемся также разрушить миф о том, что программирование на Java — это только Enterprise и Android.

    Барух Садогурский, JFrog — Groovy DSL для plugin-ов: Расширения человеческим языком

    Существуют целые классы программ, функционал которых не может и не должен быть ограничен фантазией их непосредственных разработчиков. Доклад о том, какие архитектурые решения наиболее подходят для pluggable-программ, написанных на Java. После короткого обзора возможностей DSL на Groovy мы посмотрим, какие части DSL нам пригодятся, ответим на вопрос, нужна ли возможность написания плагинов на Java, рассмотрим аспекты безопасности и, конечно, обсудим варианты решения ада зависимостей.



    Виктор Полищук, Инфопульс — JBoss Drools Expert против грязи

    За время доклада будет разобрана простая бизнес-проблема, которая несмотря ни на что, способна вырастить множество седых волос у нелысого программиста. Покрутив в руках и отложив в сторону императивную Java-реализацию, аудитория на полчаса погрузится в красоты декларативного программирования на Drools, а так же покрытие юнит-тестами свеженаписаного приложения.

    Владимир Иванов, Oracle — Invokedynamic: Роскошь или необходимость?

    В Java 7 на уровне байткода появилась новая инструкция — invokedynamic (indy). Чем вызвано появление новой инструкции и какие бонусы дает использование indy? Доклад не ограничится сравнением indy c другими инструкциями семейства invoke*, а даст обзор всего JSR292, частью которого indy и является. Разговор будет идти о method handles, пакете java.lang.invoke.* и новых шаблонах программирования, которые стали возможны с появлением нового API. Также, будут затронуты детали реализации JSR292 в Java 7 и Java 8 от Oracle.

    Владимир Красильщик, Luxoft — Java-mapping для прагматичных программистов

    Речь пойдёт про технологический зоопарк способов «мапить» друг на друга объекты в Java. Будет дан обзор современных подходов и инструментов, как прагматичных, так и не очень. Transmorph, Dozer, Nomin, ModeMapper — вот только некоторые примеры библиотек, которые предлагают свою оригинальную методологию по организации кода «мапинга» одних объектов на другие. Будут даны советы по тому, как можно организовать хорошо структурированный код маппинга, который легко сопоставить со спецификацией и протестировать, который не страшно читать, рефакторить и поддерживать.

    Глеб Смирнов — Мутационное тестирование, или О чём молчит Code Coverage

    Mutation testing предлагает случайным образом изменить тестируемый код, а затем снова запустить тесты. И если эти тесты действительно хороши, то они должны упасть. Доклад включает в себя более детальный обзор парадигмы мутационного тестирования, описывает имеющие инструменты и рассказывает о том, как с помощью этих инструментов люди приходят к успеху в реальных проектах.



    Евгений Борисов — Spring 4.0: новое поколение

    Релиз Java 8 открывает программистам новые возможности. Будет ли новая версия Spring им соответствовать? В докладе вы узнаете о том, как Spring работает с Lambda-выражениями, с JSR-310 «Date and Time», c parameter name discovery и обновлённым java.util.concurrent. Кроме того, речь пойдёт о том, какие преимущества даёт в Spring 4.0 возможность задавать конфигурацию на Groovy.

    Михаил Хлуднев, Grid Dynamics — В поисках Tommy Hilfiger

    Чтобы настроить Apache Lucene / Solr и подключить для поиска по каталогу товаров на сайте, необходимо решить, как мингимум, две проблемы. Во-первых, разработать специфические модели документов и языка запросов. Во-вторых, реализовать эти модели с помощью базовых алгоритмов поиска Lucene с производительностью, достаточной для нескольких миллионов посетителей в Чёрную Пятницу. Этот доклад поможет справиться со второй проблемой — познакомит с деталями реализации алгоритмов поиска в Lucene. Доклад будет полезен тем, кто занимается поиском и хочет узнать «что внутри».

    Никита Липский, Excelsior и Миша Быков, Oracle — Занимательные истории из жизни технической поддержки JVM

    В этой сессии авторы расскажут о типичных случаях из техподдержки JVM и разбавят их веселыми историями, чтобы дать вам возможность отдохнуть от технических деталей и других докладов. Будут освещены следующие темы:
    • почему важно опираться только на то, что строго оговорено в спецификации платформы Java, и как опасно полагаться на поведение конкретной её реализации
    • Типичные ошибки программирования с использованием JNI
    • Мистические развалы JVM
    • Типичные проблемы в многопоточных программах, которые «не проявляются» (до поры до времени)
    • Проблемы управления памятью




    Никита Сальников-Тарновский, Plumbr — Спорим, в твоем приложении есть утечка памяти?

    Будет представлено маленькое стандартное веб-приложение на Java, которое использует стандартные и распространенные библиотеки и каркасы. Докладчик продемонстрирует, как в таком крошечном и симпатичном приложении может скрывать 8 утечек памяти в Permanent Generation/Metaspace. Будут показны проблемы с драйверами баз данных, пулами соединений с базой данных и нитей, JNDI контекстами, инициализацией библиотек логов и кое-что еще.

    Николай Алименков, XP Injection, Zoral Labs — Парадигмы ООП, основы здравого дизайна и архитектуры Java-приложений

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

    Николай Чашников, JetBrains — Разработка API в Java-проекте: как оказывать влияние на людей и не приобрести врагов

    Чем больше кода в продукте, чем больше людей над ним работают, чем дольше он существует, тем более важную роль играет качество API, при помощи которого разные части продукта взаимодействуют друг с другом. Как разрабатывать удобный API? Как безболезненно менять API? Как защитить других от неправильного использования создаваемого API? Как (и зачем) можно разработать свой микро-язык (DSL) на Java? В докладе автор поделится опытом разработки API для различных подсистем платформы IntelliJ IDEA, которые затем использовались в десятках плагинов к IDE.

    Павел Павлов, Excelsior — Scala для профессионалов

    Каждый язык для JVM хорош для какого-то класса задач, но как понять, что именно и для какой задачи использовать? Оправданы ли вообще вложения в изучение ещё одного инструмента и обретение зависимости от него? Не правильнее ли будет хранить верность старой-доброй Java и игнорировать всякие новомодные штучки? Автор расскажет о том, почему именно Scala — это тот инструмент, который представляет реальную практическую альтернативу как другим альтернативным языкам для JVM, так и самой Java.



    Роман Антипин, Одноклассники — Франкенштейнизация Voldemort или key-value данные в Одноклассниках

    В докладе будут освещены Java-технологии хранения данных, обслуживающие десятки миллионов пользователей и работающие на сотнях серверов. На примере социальной сети «Одноклассники» будут рассмотрена эволюцию хранилищ данных с высоким уровнем конкурентного доступа и с соблюдением требования постоянной доступности. Будут разобраны сильные и слабые стороны каждого из решений, начиная от технологии master-slave репликации на основе Berkeley DB и заканчивая симбиозом распределенных хранилищ Voldemort и Cassandra.

    Роман Елизаров, Devexperts — Факты и заблуждения о Java-сериализации

    Java-сериализация разрабатывалась ещё в те времена, когда дальнейшая судьба развития распределённых систем была туманна. Многие технологии «распределённых объектов», разрабатывавшиеся в то время, не дожили до наших дней, и некоторые отголоски этих мёртвых идей можно еще откопать в дизайне Java-сериализации. Несмотря на ряд недостатков, сериализация в Java имеет ряд неоспоримых преимуществ перед многими альтернативными способами реализации. В докладе будут рассмотрены наиболее популярные заблуждения о Java-сериализации, и разложены по полочкам реальные факты о её достоинствах и недостатках, которые вы не услышите от авторов альтернативных библиотек сериализации.

    Сергей Куксенко, Oracle — JDK8: Stream style

    Приближается выход JDK8. А JDK8 — это, в первую очередь, JSR335 aka «Project Lambda». Но Project Lambda — это не только лямбды, но и default/static методы в интерфейсах. Project Lambda — это новый API и, в частности, Stream API, про который и пойдёт речь в докладе.

    Шура Ильин, Oracle — Project Jigsaw. Take 2

    Проект модуляризации платформы Java и введения модулей как нового элемента языка, который изначально планировался для JDK 8, был перенесен на JDK 9 и прямо сейчас подвергается детальному анализу и редизайну. Какими будут требования к проекту? Понадобится ли специальный язык для определения зависимостей? Будет ли новая реализация самостоятельной распределённой системой? В чем она будет похожа и в чем отличаться от существующих систем? Ответы на эти вопросы мы получим уже очень скоро. Доклад будет посвящен описанинию требований, дизайна и новой реализации Project Jigsaw.



    Яков Жданов, GridGain Systems — In-Memory Mongo Accelerator

    Речь пойдет о Performance-проблемах Mongo DB и о том, как новый продукт GridGain In-Memory Mongo DB Accelerator помогает решить многие из них без единого изменения кода клиентских приложений. Будет рассказано об особенностях In-Memory подхода, его преимуществах и недостатках. Доклад будет интересен всем, кто интересуется In-Memory технологиями и распределенными вычислениями.



    Заключение


    Неопубликованными осталось 3 доклада. Претенденты:
    • ребята из питерского Deutsche Bank, думают над темой
    • ребята из DataArt, думают над темой
    • ребята из Sperasoft с темой о Java в геймдеве
    • Сергей Клименков из Tune IT о Java-сертификации
    • ребята из Boteon с докладом о Java в робототехнике


    С полными анонсами можно ознакомиться на сайте конференции. Билеты всё ещё в продаже.
    Стоимость билета составляет 4000 рублей для частных лиц и 5000 рублей для организаций.
    JUG.ru Group 1 299,50
    Конференции для взрослых. Java, .NET, JS и др. 18+
    Поделиться публикацией
    Похожие публикации
    Комментарии 35
    • 0
      Речь пойдёт о том, как можно использовать Oracle Database, как развернуть Hadoop, как написать приложение и опубликовать его, используя плагин Windows Azure для Eclipse. Будет показано, как использовать эти и другие возможности облачной платформы Windows Azure в применении к Java-разработке.

      Вот это действительно очень интересно.
      • +4
        Что решили с записью видео?
        • 0
          Присоединяюсь к вопросу. Живу далеко, доехать будет сложно.
          • 0
            плюсую, с удовольствием бы посмотрел
            • +3
              Цитирую предыдущую статью:
              Видео

              Все 4 трека будут записаны на видео. Будем ли мы давать доступ к эим видео всем желающим — пока непонятно. С одной стороны, наша жадность говорит нам, что если видео не публиковать в открытом доступе или тупо не снимать, то нас четвертуют больше народу придёт на конференцию. С другой стороны, мы прекрасно понимаем, что людям из других городов тратить 2-3 рабочих дня на нашу конференцию (плюс поезд/самолёт, плюс гостиница) может быть слишком накладно.

              Видеозапись всех докладов конференции точно будет доступна участникам конференции. Возможно, для остальных она будет платной. Посмотрим ближе к делу.
              • +1
                По одной записи в руки после предъявления паспорта с иногородней пропиской.
                • +2
                  С возвратом. Посмотрел — закачай обратно, дай другим посмотреть.
                  • +1
                    можно продать видео на офиц. сайте после проведения за $10-$20. Дороже никто не купит.
          • –6
            Вот хотел сходить. Но в первом же описании доклада увидел следующее:
            Для JVM создано множество скриптовых языков — Groovy, JRuby, JavaScript

            И как-то сильно засомневался
            • +1
              А Rhino с Nashorn-ом мы проигнорируем?
              • +1
                я в целом соглашусь, что формулировку лучше поменять. Поменял.
                • +1
                  Да, JavaScript не был создан как скриптовый язык для JVM, но придирка, все таки, мелочная. Понятно, о чем речь.
                  • 0
                    По-моему непонятно, судя по исправлению.
                    • +1
                      не будете ли Вы так добры раскрыть суть своего комментария?
                • –5
                  Конечно проигнорируем, как и GWT. Речь идет о скриптовых языках для JVM, а не о средствах преобразования одного в другое.
                  • +3
                    Я думаю, нам нужно прерваться, пока вы прочитаете что такое Rhino и Nashorn. Когда вы убедитесь, что это чистые имплементации JavaScript-а, а не преобразователи, мы продолжим обсуждение с вопроса о том, чем они отличаются по подходу от JRuby.
                    • +1
                      тонко :)
                    • 0
                      ок
                      • +2
                        Я понял, вам попалось коварное слово «преобразует». Да, так сразу и не сообразишь, кто кого во что преображает.
                        GWT преображает java сорцы в js в бразуре, а Rhino, Nashorn, Groovy, JRuby, и, страшно сказать, Java, преображает сорцы в классы байткода!
                        То преображает, это преображает, конечно, запутаешься!
                        • 0
                          и засомневаешься
                        • 0
                          отличный юмор. Только вот теперь полезем в дебри и разберемся, а что же делает Rhino, такого, чего не делает Groovy.
                          Rhino может работать в 2х режимах рассмотрим первый — кодогенерация:
                          Нас больше всего интересует внутрянка, а именно класс org.mozilla.javascript.optimizer.Codegen.
                          Рассмотрим метод org.mozilla.javascript.optimizer.Codegen.compile(CompilerEnvirons, ScriptNode, String, boolean)
                          И заметим, что здесь формируется имя класса как
                          String baseName = "c";
                                  if (tree.getSourceName().length() > 0) {
                                    baseName = tree.getSourceName().replaceAll("\\W", "_");
                                    if (!Character.isJavaIdentifierStart(baseName.charAt(0))) {
                                      baseName = "_" + baseName;
                                    }
                                  }
                          String mainClassName = "org.mozilla.javascript.gen." + baseName + "_" + serial;
                          

                          Далее пропустим стэк вызовов и перейдем сразу к самой интересной части — к методу org.mozilla.javascript.optimizer.Codegen.generateCode(String);
                          Здесь, по коду, создается переменная ClassFileWriter cfw, которая по сути и отвечает за преобразованный код.
                          И далее происходит самая интересная магия в методе org.mozilla.classfile.ClassFileWriter.addInvoke(int, String, String, String), исходя из кода этого метода мы можем увидеть что в описание класса добавляются:
                          hasTopCall(.....), doTopCall(.....) — который и будет содрежать скомпилированный код, если мы вызываем исполняемый скрипт.
                          далее вызывается метод org.mozilla.javascript.optimizer.Codegen.generateResumeGenerator(ClassFileWriter), который добавляет
                          resumeGenerator(...) не всегда, но добавляет
                          Далее метод org.mozilla.javascript.optimizer.Codegen.generateNativeFunctionOverrides(ClassFileWriter, String)
                          Который добавит еще кучку методов.

                          Далее возьмем для документацию компилятора Groovy:
                          … Each groovy class then just becomes a normal Java class you can use inside your Java code if you wish.
                          Indeed the generated Java class is indistinguishable from a normal Java class, other than it implements the
                          ...


                          Таким образом код:
                              alert('Я люблю троллить людей');
                          


                          преобразуется во что-то типа такого

                          class org.mozilla.javascript.gen.GenScript_123125 implements org.mozilla.javascript.Script {
                          
                              public void exec()
                          
                               public Object doTopCall(Object... params ) {
                                     ......
                                     alert('Я люблю троллить людей');
                                     ......
                               }
                               public boolean hasTopCall(.....) {
                                 return true;
                               }
                          
                          // Остальные методы здесь
                          }
                          


                          А код в Groovy
                          class GroovyClass {
                             def message() {
                                 println ''Я люблю троллить людей''
                            }
                          }
                           
                          

                          Превратиться в

                          public class GroovyClass  extends GroovyObject {
                             public Object message() {
                                 System.out.println(''Я люблю троллить людей'');
                                 return null;
                            }
                          }
                          
                          


                          Таким образом, чтобы не путаться в первом случае мы имеем.
                          1. Преобразование исходников.
                          2. Создание псевдокласса.
                          3. Компиляция исходников в Java-код.
                          4. Создание псевдокласса и из всех исходников в java-класс.

                          Во втором случае мы имеем
                          1. Преобразование Groovy-класса в Java-класс.
                          2. Компиляция Java-класса.

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

                          • НЛО прилетело и опубликовало эту надпись здесь
                            • 0
                              Попробую распутать:
                              a) Rhino разбирает js на лексемы и строит из них java-код. Генерирует обертку в которой они исполняются.
                              b) groovyc — делает из .groovy -> .java и компилирует.
                              с), d) конечно, иначе оно не исполняется в jvm.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                • +1
                                  Спор ниочём.

                                  Какая разница, кто кого во что компилирует? Доклад вообще не об этом заявлен.
                              • +1
                                а чем преобразование из языка X в язык Y отличается от компиляции?
                    • +1
                      ну не идите, дело Ваше. Мы не рубль, чтобы всем нравиться.
                    • 0
                      Зашёл почитал комменты. Подумал, «The free lunch is over». Вышел.
                      • 0
                        с тебя:
                        1. брэд питт
                        2. марсианка с тремя грудями
                        3. 146%
                        • 0
                          146% занято.
                          • 0
                            боюсь, что нет — у него целевой доклад про coverage :)

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое