«Як я провів це літо»: відео з літніх зустрічей JUG.ru

Ось і настала осінь. Хтось повертається в місто з центнером яблук в багажнику, хтось — з норвезьким пивом прямо з JavaZone, а ми підготували для вас матеріал, який, сподіваємося, перечекає непогоду. Ми розповімо про трьох літніх зустрічах JUG.ru. Тому розробники, повернувшись із відпусток, мають чудову можливість запастися чашкою гарячого чаю, загорнутися в плед і подивитися відео з наших митапов.

Отже, влітку у нас було три зустрічі:
    — Douglas Hawkins з Azul розповів про особливості роботи JIT-компіляторів в HotSpot JVM;
    — Alvaro Hernandez, розробник ToroDB, розповів про те, як Java працює з PostgreSQL;
    — нарешті, Євген Борисов порадував нас новою порцією загадок на тему Spring.


Читати далі →

Особливості роботи JIT-компіляторів в HotSpot JVM — зустріч з Дагом Хокінсом, Санкт-Петербург

У четвер, 30 червня, о 20:00, в пітерському офісі компанії Luxoft відбудеться зустріч JUG.ru з Дагом Хокінсом, JVM-інженером в Azul Systems. Тема зустрічі — особливості роботи JIT-компиляторов в HotSpot JVM.

Мова зустрічі — англійська. Участь — безкоштовна. Кількість місць обмежена, необхідна реєстрація за посиланням.


Читати далі →

Вибір і налаштування Garbage Collector для Highload системи в Hotspot JVM



Введення
При роботі в сфері RTB (Real Time Bidding) однією з ключових характеристик є час, витрачений на показ реклами користувачеві, зайшов на сайт. Воно складається з декількох етапів, один з яких – аукціон за рекламне місце, проводиться SSP (Supply Side Platform) між кількома DSP (Demand Side Platform) системами. У цьому випадку критичною величиною є час, за який DSP встигне відповісти своїм інвентарем і грошовою ставкою за цей показ. Як правило, верхня межа цього часу становить приблизно 100 мілісекунд. З урахуванням того, що для оптимальної продуктивності рекламних кампаній потрібно десятки тисяч запитів в секунду, виконання цієї вимоги може стати вельми нетривіальним завданням.

Читати далі →

Дюк, винеси сміття! — Частина 3

Частина 3 - CMS GC і G1 GC
Сьогодні ми продовжуємо цикл статей про збирачів сміття, що поставляються з віртуальною машиною Oracle Java HotSpot VM. Ми вже вивчили трохи теорії і розглянули, яким чином з купою розправляються два базових складальника — Serial GC і Parallel GC. А в цій статті мова піде про збирачів CMS GC і G1 GC, першочерговим завданням яких є мінімізація пауз при наведенні порядку в пам'яті програм, що оперують середніми і великими обсягами даних, тобто здебільшого в пам'яті серверних додатків.

Два цих складальника об'єднують загальною назвою «mostly concurrent collectors», «здебільшого конкурентні збирачі». Це пов'язано з тим, що частину своєї роботи вони виконують паралельно з основними потоками додатки, тобто в якісь моменти конкурують з ними за ресурси процесора. Звичайно, це не минає безслідно, і в підсумку вони розмінюють поліпшення в частині пауз на погіршення у частині пропускної здатності. Хоча роблять це по-різному. Давайте подивимося, як.

Читати далі →

Volker Simonis — Нутрощі SAP JVM [Зустріч JUG в Пітері]

Вже в цю середу, 14 жовтня, в петербурзькому офісі компанії Oracle відбудеться зустріч JUG.ru c Фолькером Симонисом з SAP. Тема зустрічі — внутрішній устрій SAP JVM.

sap-jvm
Напевно багато з вас чули про SAP — німецького гіганта, який робить різні корпоративні системи — бухгалтерський облік, контроль за виробництвом, фінанси, HR, кадри, управління складом та інший «Кривавий ентерпрайз», який з великою ймовірністю стоїть у вашій організації, якщо її чисельність перевищує тисячу осіб.

Фокус в тому, що багато (якщо не всі) з перерахованих рішень так чи інакше працюють на Java, і відповідно всередині них крутиться JVM. Прикол в тому, що це їх власна JVM. Ну як власна — у свій час вона була ліцензована у Sun разом з вихідними кодами, з яких і розроблялася. У даний момент — вона ліцензується у Oracle. Відповідно, це деякий форк Oracle JDK / JVM зі своїми косинкою і секретарками, ліцензований, сумісний і т. д. і т. п.

Однак це не тільки форк, але і порт, що підтримує 7 CPU-архітектур: x86, x86_64, SPARC, PowerPC, Itanium, z/Arch and PA-RISC на семи різних операционках: OS X, Windows, Solaris, Linux, AIX, as400 and HP/UX. За заявою SAP, вони підтримують єдину систему конфігурування, єдине поведінка, однакові плюшки і розширення, інструменти аналізу і підтримай на всій цій аццької комбінації платформ.



Як видно з цієї таблички, вони досі підтримують Java з 1.4 до 8 на всіх згаданих платформах. Наприклад, Oracle підтримує нині тільки Java 8, а Azul і Red Hat, як я розумію, тільки 6, 7 і 8.

Так от, у нас велике щастя. В цю середу на пітерському JUG Volker Simonis, наш великий друг та розробник SAP JVM буде в стандартному двогодинному форматі розповідати про все це щастя. Він буде виступати на Joker і планував прилітати в четвер, але ми спеціально попросили прилетіти його на день раніше, щоб зробити з ним окремий JVM-ний івент.

Читати далі →

Без слайдів: інтерв'ю з Андрієм Паньгиным з Однокласників

Сьогодні я приготував для вас велике інтерв'ю з Андрієм Паньгиным aka apangin, провідним інженером Однокласників. Андрій більше 6 років пропрацював JVM-інженером в Sun Microsystems, в тому числі, в команді HotSpot, а потім — більш 4 років в Однокласниках, вирішуючи там питання, теж пов'язані з JVM. Так що Андрій по праву вважається одним з найсильніших JVM-ників в Росії.



Андрій — експерт в системному програмуванні, займався системами зберігання і системами передачі інформації. Складав цеглинки, які лежать в основі порталу Однокласники і забезпечують надійність і швидкодію сервісів.

Ось про що ми поговорили з Андрієм:

  • чого варто переїзд з Java 7 на Java 8;
  • sun.misc.Unsafe
  • архітектурі Однокласників
  • інженерні компроміси, шардінг і збірка сміття
  • системи зберігання даних Cassandra;
  • у чому Однокласники попереду планети всієї, а чого ще варто повчитися у Google;
  • як стати крутим системним програмістом


Для тих, кому знову колись дивитися відео під катом розшифровка інтерв'ю.

Читати далі →

Клас дедлоков про дедлок класів



Чи знаєте ви, як уникнути дедлоков у своїй програмі? Так, цьому вчать, про це запитують на співбесідах… І тим не менш, взаємні блокування зустрічаються навіть у популярних проектах серйозних компаній на кшталт Google. А в Java є особливий клас дедлоков, пов'язаний з ініціалізацією класів, пробачте за каламбур. Такі помилки легко допустити, але важко зловити, тим більше, що сама віртуальна машина вводить програміста в оману.

Сьогодні піде мова про взаємні блокування при ініціалізації класів. Я розповім, що це таке, проілюструю прикладами з реальних проектів, попутно знайду багу в JVM, і покажу, як не допустити такі блокування в своєму коді.


Читати далі →

HotSpot - нотатки на полях

В цій статті спробую описати, як підготувати мережеве обладнання для організації громадського HotSpota і яке обладнання при цьому добре себе зарекомендувало. Розповім, що краще в певних випадках і як організувати останню милю.

Читати далі →

Ахаха, HotSpot, що ти робиш, припини!

       
 
 Як ви напевно вже знаєте , скоро в Пітері пройде чергова конференція Joker . Я збираюся зробити на ній доповідь про те, як розслідувати поведінку JVM, позірна спочатку таємничим і загадковим. Цей пост — тизер, призначений для того, щоб дати вам можливість зрозуміти, чого чекати від доповіді.
 
Припустимо, що до вас раптом приходить інформація про проблему: при збірці сміття відображуються причини «Last Ditch Collection» і «No GC» , і пошук в інтернеті не дає нічого зрозумілого. На щастя, HotSpot практично повністю збирається з OpenJDK, і тому, як мінімум в теорії, ми можемо знайти відповіді на всі цікаві для нас питання прямо в исходниках. Чим ми і займемося!
 
 
Читати далі →