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

Meet Jewel — Create IDE plugins in Compose (wit...

Meet Jewel — Create IDE plugins in Compose (with Chris Sinco)

Jetpack Compose is the declarative UI toolkit for Android that makes it easy to create beautiful, responsive apps. However, until recently, there was no easy way to use Compose to create IDE plugins without too many compromises. Jewel is a new library that solves this problem by providing a set of tools and components that make it easy to create Compose for Desktop-based plugins for Android Studio and IntelliJ IDEA.

In this talk, we will introduce Jewel and show you how to use it to create your own IDE plugins. The session will cover the following topics:

* Why Compose makes a huge difference in IDE plugin development
* How to set up Compose in your IDE plugin project
* What's Jewel, a library implementing the IntelliJ themes and a composables
* What are the tradeoffs in using Compose and Jewel
* Case studies of existing implementations
* What's the future for Jewel and Compose as a plugin UI framework

This talk is intended for Android developers who are familiar with Compose but have never created an IDE plugin because they don't wanna learn Swing. By the end of this talk, you will have a good understanding of how to use Jewel to create your own Compose-based IDE plugins.

Sebastiano Poggi

October 26, 2023
Tweet

More Decks by Sebastiano Poggi

Other Decks in Programming

Transcript

  1. Sure, you could. But. Obsolete model Little documentation No community

    & support API didn’t age well Prevents best practices
  2. Supports Desktop (and iOS and web) Works in the IntelliJ

    Platform Modern and easy to use Why isn’t it already being used? Compose Multiplatform
  3. Jewel is a Compose for Desktop implementation of the IntelliJ

    New UI design system Int UI. Built on Compose Foundation Limited to desktop for now
  4. Jewel is a Compose for Desktop implementation of the IntelliJ

    New UI design system Int UI. Built on Compose Foundation Limited to desktop for now Check it out!
  5. Jewel has three parts. Core Foundation (components, styling primitives) Int

    UI theme Standalone theme of the IntelliJ New UI Swing bridge Bridge to the IntelliJ Platform for IDE plugins
  6. How? Not trivial! Mostly reverse engineering Goal: consistency Replicate IJP

    magic Reuse over reimplement Specs ! implementation
  7. How? Not trivial! Mostly reverse engineering Goal: consistency “Swing compat”

    mode Replicate IJP magic Reuse over reimplement Specs ! implementation
  8. How? Not trivial! Mostly reverse engineering Goal: consistency “Swing compat”

    mode Replicate IJP magic Reuse over reimplement Specs ! implementation
  9. expect breaking changes Whatever Cancel Warning The Jewel library is

    not prod level yet. Do you still want to use it?
  10. What’s happening NOW Piloting with several teams Across JetBrains and

    Google Working with IntelliJ Platform Supporting Jewel and Compose for Desktop
  11. Why Jewel Better DevEx  Better UX Modern language and

    ecosystem Ability to iterate and debug faster Higher UI fidelity and quality