TGViewer
Kotlin Kotlin @kotlin_lib · 2.05K subscribers
Post #624 759
Создание WebView-контрола для Compose Desktop

В компании TeamDev мы занимаемся разработкой JxBrowser — коммерческой библиотеки, которая позволяет встраивать Chromium-движок в Java-приложения на десктопах. Ранее нами уже были реализованы контролы BrowserView для классических Java GUI-фреймворков: Swing, JavaFX и SWT. Теперь мы решили расширить поддержку и создать аналогичный компонент для Compose Multiplatform — для Desktop.

Что такое WebView внутри приложения

WebView — это UI-компонент, позволяющий приложению отображать и взаимодействовать с веб-контентом (вроде браузера внутри вашего приложения). Он отображает веб-страницы, обрабатывает JavaScript, куки и другие веб-взаимодействия — полностью в рамках жизненного цикла приложения.

Зачем Compose

Jetpack Compose быстро стал популярен среди Kotlin-разработчиков на Android. Compose Multiplatform расширяет этот подход на десктоп. Однако у Compose нет встроенного десктопного WebView — и мы увидели отличную возможность закрыть этот пробел.

Новая модель UI

Compose использует декларативный подход: UI описывается состоянием, вместо императивного обновления элементов. Компонент отображает текущее состояние, и изменения происходят автоматически по мере смены состояния.

Основная техническая задача: рендеринг

Chromium рендерит страницу в отдельном процессе, а затем результат — пиксели — нужно передать обратно Java/Kotlin для отображения внутри Compose. Мы решили это двумя способами:

1. Копирование пикселей — Chromium рендерит страницу, копирует пиксели в Java-буфер, и затем изображение рисуется в Compose Canvas.
2. Рендеринг на нативной поверхности — более производительно: Chromium отрисовывает контент напрямую на нативной поверхности, встроенной в Compose.

https://teamdev.com/jxbrowser/blog/building-web-view-for-compose/

✍️ @kotlin_lib
  • 👍 3
More from @kotlin_lib
  1. Aug 26, 2026🚧 Ваш Mutex тормозит корутины. Как перестать лочить и начать жить Вы пишете многопоточный…
  2. Jul 25, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  3. Jul 1, 2026🌪 Ваша дата в опасности: flatMapConcat vs Merge vs Latest Вам нужно взять поток ID-шников…
  4. Jun 24, 2026🤖 Android-приложение — это не только красивый экран. За ним стоят работа с внешним API, з…
  5. Jun 23, 2026🔮 Убийца бойлерплейта: Встречайте Context Parameters (Kotlin 2.x) Мы так привыкли к Depen…
  6. Jun 3, 2026Яндекс обновил Yandex Mobile Ads SDK для монетизации мобильных приложений — и это интересн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →