Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JetBrains Runtime: Зачем мы форкнули OpenJDK?

Michael Storozhilov
February 29, 2020
840

JetBrains Runtime: Зачем мы форкнули OpenJDK?

Причины и история создания JetBrains Runtime — форк OpenJDK, специализированный на десктопные приложения.

На докладе мы обсудим проблемы, с которыми столкнулись разработчики IntelliJ IDEA, и то как эти проблемы были преодолены через JetBrains Runtime.

Поговорим о рендеринге шрифтов, Antialiasing, HarfBuzz, HiDPI мониторах, Project Lanai.

Michael Storozhilov

February 29, 2020
Tweet

More Decks by Michael Storozhilov

Transcript

  1. JetBrains Runtime: — • OpenJDK fork • All JetBrains IDEs

    • Google Android Studio • YourKit • JProfiler • + Others • ~10M users
  2. Swing — • Создан в 1997 • Кроссплатформенный • Использовался

    в первом продукте Renamer • В 2000м не было альтернатив • Legacy (JComponent в API, сильносвязность)
  3. ⓷ • Не все баги можно починить в клиентском коде

    • Каждый UI баг в JDK превращается в N багов в продукте
  4. Откуда баги в JDK? — • Просто баги (фокус, клавиатура,

    etc) • Апдейты в OS, которые приводят к багам (скроллинг, variable font) • Апдейты в железе (touch bar)
  5. “Java's not worth building in. Nobody uses Java anymore. It's

    this big heavyweight ball and chain.” Steve Jobs, 2007
  6. Three years later. 2010 — - CVE-2008-5353: allows to run

    untrusted applets and applications in a privileged context - CVE-2009-3867: allows to execute arbitrary code via a long file: URL in an argument - CVE-2010-0094: allows to affect confidentiality, integrity, and availability via unknown vectors
  7. Java deprecation on OS X — Java for OS X

    v10.6 Update 3 is deprecated “Developers should not rely on the Apple-supplied Java runtime being present in future versions of OS X” October, 2010
  8. Java 7 — • Apple stopped supporting Java • Oracle

    started supporting Java for Mac • Text rendering is broken on Mac in Java 7
  9. Алгоритмы subpixel rendering — • ClearType (Microsoft) • OS X

    (Apple, part of Quartz 2D) • CoolType (Adobe) • FreeType • IBM
  10. Basic steps for text rendering — 1. Styling (parse markup,

    query system for fonts) 2. Layout (break text into pieces) 3. Shaping (compute the glyphs in a line and their positions) 4. Rasterization (rasterize needed glyphs into an cache) 5. Composition (copy glyphs from cache to their desired positions)
  11. Text in IntelliJ Platform — • Font rendering • Complex

    languages تﯾﻠﺑﺎﻗ • Emoji ❤ • RTL • Ligatures -> -= -= ----
  12. What is HiDPI? — • Retina ◦ Сетчатка – внутренняя

    оболочка глаза ◦ Общее маркетинговое название ЖК и OLED дисплеев, используемых в устройствах Apple с 2010 года • 4K (3840×2160) = 2160p • 5K (5120×2880) = 2880p • Quad HD (2560×1440) = 1440p