JetBrains는 오픈 소스 크로스 플랫폼 UI 개발 프레임워크인 데스크톱용 Jetpack Compose의 새 버전을 출시했습니다.
어떤 종류의 개발 작업을 하신다면 아마도 JetBrains에 대해 들어보셨을 것입니다. IntelliJ(Android Studio의 기반), CLion, PhpStorm 등을 포함하는 대규모 IDE 제품군을 개발한 회사입니다. 만든 사람들도 그 사람들이고 코틀린, 매우 인기 있는 크로스 플랫폼 프로그래밍 언어입니다.
그리고 JetBrains가 다시 돌아왔습니다. 약 1년 전 Google은 Jetpack Compose라는 새로운 Android용 레이아웃 엔진을 출시했습니다. 지나갔어 그 이후로 몇 가지 중요한 변화가 있었습니다., 그러나 Android의 고전적인 XML 레이아웃에 대한 유능한(여전히 다소 불안정하긴 하지만) 대안으로 바뀌었습니다.
Jetpack Compose는 JetBrains와 어떤 관련이 있나요? 우선 Kotlin으로 작성되었습니다. 또한 JetBrains는 Compose를 데스크톱 공간으로 포팅하는 작업을 조용히 진행해 왔습니다. 이는 초기 개발자 미리보기로 공개되었으며 이제 JetBrains는 이 기능의 존재를 공식적으로 발표할 준비가 되었습니다.
Jetpack Compose란 무엇인가요?
서론에서 조금 이야기했지만 좀 더 설명할 가치가 있다고 생각합니다. 이전에 Android에서 개발해 본 적이 있다면 아마도 레이아웃 작동 방식에 익숙할 것입니다. 먼저 XML 파일로 레이아웃을 디자인한 다음 Java 또는 Kotlin에서 해당 레이아웃과 상호작용합니다. 기능적이지만 약간 구식이며 레이아웃을 언어별로 분할하는 것은 관리하기 어려울 수 있습니다.
이에 대한 대안으로 Google은 Jetpack Compose 개발을 시작했습니다. Compose는 Kotlin을 기반으로 구축된 Android용 레이아웃 엔진입니다. 모든 레이아웃과 논리 코드가 한 곳에 있으므로 상호 작용이 훨씬 쉬워집니다. 또한 XML 레이아웃의 명령형 스타일 대신 선언적입니다.
명령형 레이아웃 엔진에서 선언적 레이아웃 엔진으로 전환하는 데 익숙해지는 데 다소 시간이 걸릴 수 있지만 Compose는 아직 초기 단계이지만 확실히 XML에 비해 개선된 것입니다.
데스크톱용 Jetpack Compose
따라서 Compose는 기본 Android 앱을 위한 훌륭한 레이아웃 대안입니다. 그러나 (일반적으로) 크로스 플랫폼은 아닙니다. JetBrains가 바로 여기에 있습니다. 이 회사는 Windows, Linux 및 macOS(Intel 및 ARM 모두)를 지원하여 Jetpack Compose를 데스크톱 공간으로 포팅했습니다.
Electron, JavaFX, UWP 등 데스크톱용으로 존재하는 다른 레이아웃 엔진이 있지만 지금은 다소 혼란스럽습니다. 일부는 크로스 플랫폼이 아니므로 하나의 특정 운영 체제에서만 작동합니다. 다른 것들은 기술적으로 크로스 플랫폼이지만 배포하려면 많은 작업이 필요합니다. 그러나 여전히 JavaFX와 같은 다른 것들은 작업하기가 어렵습니다.
반면 데스크톱용 Jetpack Compose는 상대적으로 사용하기 쉽고, 디스플레이 크기 조정을 지원하고, 스타일이 내장되어 있으며, (거의) 완전히 크로스 플랫폼입니다. 아직 하나의 운영 체제에서 모든 배포판을 컴파일할 수는 없지만 코드 자체는 완전히 이식 가능합니다. Android와 마찬가지로 패키지 앱은 Java를 기반으로 하지만 사용자는 이를 사용하기 위해 JDK를 설치할 필요가 없습니다.
상호 호환성
데스크톱용 Compose는 아직 새롭기 때문에 일부 기능이 누락되었습니다. 개발자가 이러한 제한 사항을 해결하는 데 도움이 되도록 Compose for Desktop은 가장 널리 사용되는 두 가지 Java 레이아웃 엔진인 JavaFX 및 Swing과 상호 운용됩니다. 이러한 엔진 중 하나(또는 둘 다)에서 개발된 데스크톱 앱이 있는 경우 현재 코드베이스를 유지하면서 Compose로 전환을 시작할 수 있습니다.
안드로이드 + 데스크톱
Compose Android 앱을 데스크톱으로 가져오려면 어떻게 해야 하나요? 글쎄, 당신도 그렇게 할 수 있습니다. 앱의 UI 요소는 Android와 데스크톱 간에 쉽게 공유될 수 있습니다. 모든 것을 공유할 수는 없지만 확실히 개발이 더 쉬워집니다.
Apple 실리콘 지원
위에서도 언급했지만 다시 언급하겠습니다. 그만큼 새로운 Apple Silicon Mac 꽤 놀랍지만 프로세서는 ARM CPU 아키텍처를 기반으로 합니다. 이는 현재 많은 macOS 앱이 Rosetta 2 x86 변환기를 통해 실행되고 있음을 의미합니다. Apple이 해당 번역 작업을 꽤 잘 수행했지만 기본 ARM 프로그램은 여전히 더 잘 실행됩니다.
음, 데스크탑용 Jetpack Compose는 기본적으로 Apple Silicon을 지원합니다. 이는 번역으로 인한 성능 저하나 Apple이 번역을 중단할 때 향후 지원에 대해 걱정할 필요가 없음을 의미합니다.
기능성
JetBrains가 데스크톱용 새 레이아웃 엔진을 만든 것은 정말 좋은 일입니다. 하지만 그것이 현재 우리가 가지고 있는 것보다 낫다고 누가 말할 수 있겠습니까?
나.
저는 이 글을 쓰는 시점에 사용 가능한 최신 빌드(0.2.0-build132)를 사용하여 SystemUI Tuner용 간단한 권한 부여 앱을 만들었습니다. 저는 Compose와 선언적 디자인에 익숙하지 않기 때문에 XML 레이아웃 앱보다 조금 더 어려웠지만 해냈습니다. 그리고 JavaFX보다 사용하기가 훨씬 쉽습니다.
테마 지원(예: 다크 모드)은 여전히 약간 불확실하지만 대화형 레이아웃을 구축하는 것은 매우 쉽고 창 크기를 조정할 때 몇 가지 깜박임을 제외하면 모든 것이 잘 작동합니다.
앱을 확인하고 싶다면 소스 코드를 확인하세요. GitHub. IntelliJ 또는 Android Studio로 가져오기만 하면 실행할 준비가 완료됩니다.
개인적으로 저는 Jetpack Compose for Desktop에 대해 매우 기대하고 있습니다. 이전에는 그것이 존재하는지조차 몰랐지만 이미 내가 선택한 데스크탑 레이아웃 엔진입니다. 자세한 내용은 다음에서 확인할 수 있습니다. 데스크톱용 Jetpack Compose 웹사이트 또는 GitHub에서.
당신이 그것에 대해 어떻게 생각하십니까? 다른 사용 가능한 프레임워크 대신 확인해 보고 사용해 볼 가치가 있나요? 알려줘요!
주요 이미지 크레딧: GitHub의 JetBrains