Your Codename One App, Now A Native Mac App

DZone Java · 2026.07.11
Your Codename One App, Now A Native Mac App

Codename One의 네이티브 macOS 빌드, 무엇이 달라졌나

Codename One 7.0.250 버전에서 실제 네이티브 macOS 애플리케이션 타겟이 공식 지원된다. 기존 데스크톱 빌드는 JavaSE 타겟을 기반으로 하여 시뮬레이터와 동일한 엔진 위에서 동작했다. 결과적으로 OS 메뉴바 위치에 툴바를 직접 그리거나, 스크롤바를 마우스로 잡을 수 없는 등 모바일 UI 습관이 데스크톱 환경에 그대로 노출되는 문제가 있었다. Preferences나 Quit 같은 macOS 표준 메뉴 항목도 정상적으로 동작하지 않았다.

새로운 Mac Native 타겟은 이러한 근본적인 한계를 해결하기 위해 도입됐다. iOS 빌드 파이프라인, 즉 기존 iPhone 빌더와 ParparVM을 그대로 재활용하여 macOS용 네이티브 바이너리를 생성한다. JVM을 별도로 번들링하지 않는다는 점도 주목할 만하다.

iOS 파이프라인 재활용의 실무적 의미

기술적으로 흥미로운 점은 새로운 빌드 인프라를 별도로 구축하는 대신, 검증된 iOS 빌드 파이프라인을 macOS 타겟으로 확장했다는 것이다. ParparVM은 Java 바이트코드를 네이티브 코드로 AOT 컴파일하는 방식으로, JVM 없이도 실행 가능한 바이너리를 만들어낸다. iOS에서 이미 안정성이 검증된 파이프라인을 그대로 가져왔기 때문에 플랫폼 간 동작 일관성을 확보할 수 있다.

JVM 번들링을 제거한 것은 배포 측면에서 실질적인 이점을 가져온다. 기존 JavaSE 기반 배포물은 JRE를 포함해야 했기 때문에 패키지 크기가 커지고, 사용자 환경의 Java 버전 호환성 문제도 관리 포인트가 됐다. 네이티브 바이너리로 전환하면 이런 운영 부담이 줄어든다.

// 기존 JavaSE 타겟: JVM 위에서 실행
// 새로운 Mac Native 타겟: ParparVM으로 AOT 컴파일된 네이티브 바이너리
// 빌드 타겟 선택만으로 결과물이 달라짐
<buildTarget>Mac Native</buildTarget>

백엔드 개발자 관점에서 보는 크로스플랫폼 전략

Codename One은 단일 Java 코드베이스로 iOS, Android, 데스크톱을 모두 타겟팅할 수 있는 프레임워크다. 이번 업데이트는 "Write Once, Run Anywhere"라는 Java의 오래된 철학을 실제 네이티브 수준에서 구현하는 방향으로 한 걸음 더 나아간 사례다. 특히 사내 도구, 어드민 패널, 모바일과 데스크톱을 동시에 지원해야 하는 B2B 애플리케이션 개발 시 코드 중복 없이 플랫폼별 네이티브 경험을 제공할 수 있다는 점이 실무 관점에서 가치 있다.

macOS 표준 메뉴 항목(Preferences, Quit 등)을 올바르게 지원하게 된 것은 단순히 기능 하나가 추가된 게 아니라, 플랫폼 UX 가이드라인을 준수할 수 있는 토대가 마련됐다는 의미다. 사용자가 운영체제 수준에서 기대하는 동작을 충족시키지 못하면 앱의 완성도 인식에 직접 영향을 준다.

정리

  • Codename One 7.0.250의 Mac Native 타겟은 JVM 번들 없이 iOS와 동일한 AOT 컴파일 파이프라인(ParparVM)으로 진짜 네이티브 macOS 바이너리를 생성한다.
  • 기존 JavaSE 기반 데스크톱 빌드의 고질적 문제(툴바 렌더링, 스크롤바 조작 불가, 표준 메뉴 미지원)가 해결된다.
  • 단일 Java 코드베이스로 iOS·Android·macOS 네이티브 배포를 동시에 관리할 수 있어, 멀티플랫폼 지원이 필요한 사내 도구나 B2B 앱 개발에 실용적 선택지가 늘어난다.
Source
DZone Java
원문 보기 →
← 목록으로 돌아가기