Codename One은 Java 및 Kotlin 개발자를 위한 모바일 우선 크로스 플랫폼 환경입니다. Java 바이트코드를 기본 OS 실행 파일(iOS, Android, UWP 등)로 컴파일할 수 있습니다. 가상 머신, 시뮬레이터, 디자인 도구(시각적 테마/빌더/CSS), IDE 통합, 여러 OS로의 포트 등을 갖춘 완전한 모바일 플랫폼입니다. 100% 코드 재사용이 가능한 이식 가능한 추상화를 통해 기본 네이티브 OS 코드(예: Objective-C, C#, Dalvik/ART)에 대한 전체 액세스를 제공합니다.
Android 등에서 볼 수 있는 에뮬레이터와 달리 Codename One은 시뮬레이터를 사용합니다. 이는 디버깅 중에도 빠르게 시작된다는 의미입니다. 런타임 시 코드를 수정하기 위한 라이브 코드 다시 로드와 같은 IDE 기능을 즐길 수 있습니다.
이는 더 빠른 디버깅 주기와 더 빠른 개발 프로세스를 의미합니다!
다양한 장치 "스킨" 중에서 선택하여 특정 장치에서 앱이 어떻게 보이는지 확인하세요. 스킨은 해상도, 기기 밀도 등의 요소를 고려하여 실제 기기에 나타나는 것처럼 픽셀 단위로 완벽한 앱 프레젠테이션을 제공합니다. 장치 스킨 간 전환은 거의 즉각적입니다.
여기에서 자체 오픈 소스 프로젝트에서 스킨을 편집하고 기여할 수 있습니다.
대화형 Groovy 콘솔을 사용하여 런타임 시 애플리케이션의 API와 상호작용합니다. 앱이 실행되는 동안 애플리케이션 상태를 검사하거나 변경 사항을 실험해 보세요.
이를 통해 약간의 재컴파일 오버헤드 없이도 문제를 조사하고 실험할 수 있습니다.
시뮬레이터를 사용하면 IntelliJ의 "변경된 클래스 다시 로드" 기능(NetBeans에서는 "코드 변경 사항 적용"이라고 함)을 활용하여 Java 소스 코드에서 변경한 내용이 시뮬레이터에서 이미 실행 중인 앱에 즉시 적용되도록 할 수 있습니다.
이는 대화형 콘솔보다 우수한 경우가 많지만 메서드 추가/코드 구조 변경 기능과 같은 제한 사항이 있습니다. 이러한 제한은 대화형 콘솔에는 적용되지 않습니다!
앱의 CSS 스타일시트를 변경하면 변경 사항이 시뮬레이터에 즉시 반영됩니다. 여기에는 테마, 이미지, 글꼴 등의 변경이 포함됩니다. 모든 변경 사항은 저장 시 즉시 새로 고쳐지므로 다시 로드하거나 새로 고칠 필요가 없습니다!
이를 통해 애플리케이션 스타일링 프로세스가 매우 쉽고 빠르게 수행됩니다.
강력한 구성 요소 검사기를 사용하여 앱의 UI 구성 요소 계층 구조를 찾아보세요. 이 도구를 사용하면 추가 패딩이 어디서 나오는지 또는 왜 원하는 대로 정렬되지 않는지 쉽게 찾을 수 있습니다. 런타임 시 구성 요소의 UIID(선택기)를 변경하여 UI에 어떤 영향을 미치는지 확인하고 계층 구조의 어떤 구성 요소가 구성 요소 트리(DOM과 동일)의 요소에 매핑되는지 확인할 수도 있습니다.
네트워크 모니터를 사용하여 앱이 만드는 모든 네트워크 연결을 확인하세요. 이 귀중한 도구는 HTTP 요청이 작동하지 않는 이유를 알아내려고 할 때 유용합니다. 요청과 응답의 헤더와 본문을 모두 확인하세요. 느린 네트워크 연결을 시뮬레이션하기 위해 네트워크를 조절할 수도 있습니다.
테스트 레코더 도구를 사용하여 앱의 단위 테스트를 기록하세요. 기록을 시작하면 나중에 재생하여 동작이 올바른지 확인할 수 있는 단위 테스트에 상호 작용이 저장됩니다.
그런 다음 자동화된 장치 테스트를 포함하여 기록된 테스트를 CI 프로세스에 연결할 수 있습니다.
Codename One은 핵심 기본 구성 요소 중 하나가 개발되어 오픈 소스화되었던 Sun Microsystems(2006)로 거슬러 올라가는 성숙한 오픈 소스 프로젝트입니다. 이 비디오에서 그 역사와 작동 방식에 대해 알아볼 수 있습니다.
Codename One 앱은 실제 네이티브 앱이기 때문에 네이티브 앱처럼 작동합니다.
대상 플랫폼의 공식 빌드 도구를 사용하여 네이티브 바이너리로 정적으로 컴파일됩니다.
iOS와 같이 기본적으로 Java를 지원하지 않는 플랫폼에서는 앱의 JVM 바이트코드가 먼저 기본 빌드 도구가 허용하는 형식으로 변환됩니다. iOS에서는 실제 xcode 프로젝트에서 앱의 JVM 바이트코드가 C 소스 코드로 변환됩니다. Android에서는 Java가 기본적으로 지원되므로 이러한 변환이 필요하지 않습니다. 앱 jar은 Android SDK 빌드 도구를 사용하여 직접 빌드할 수 있는 Android 스튜디오 Gradle 프로젝트에 직접 번들로 제공됩니다.
여기에서 이미지를 클릭하면 PDF 버전을 확대하거나 볼 수 있습니다.
팁: 우리는 현재 Maven으로 전환 중이며 프로젝트 생성을 위한 새롭고 간단한 방법을 만들었습니다. 지금 시작하려면 https://start.codenameone.com을 확인하세요.
Codename One에 대해 알아야 할 것이 많습니다. 이 3분짜리 비디오는 매우 간결하고 높은 수준의 보기를 제공합니다. Eclipse, IntelliJ/IDEA 및 Netbeans에 대한 유사한 비디오가 여기에 있습니다.
Codename One은 기본 OS 코드를 포함할 수 있는 타사 라이브러리를 사용하여 쉽게 확장할 수 있습니다. 여기에는 이러한 라이브러리(cn1libs)의 광범위한 목록이 있습니다. 라이브러리 목록은 이 github 프로젝트를 기반으로 자동 생성됩니다.
기본 사이트에서 Codename One과 해당 기능에 대해 자세히 알아볼 수 있으며 여기에서 광범위한 문서 및 튜토리얼 목록을 볼 수 있습니다.
다운로드 섹션에서 바이너리 및 조감도를 시작할 수 있습니다. 추가적인 중요한 링크는 다음과 같습니다:
참고: 우리는 Ant에서 Maven으로 마이그레이션하는 중입니다. 이는 소스에서 빌드하는 프로세스를 단순화합니다. 레거시 Ant 빌드 지침은 Ant 빠른 시작을 참조하세요.
이 기사와 비디오에서 설정에 대해 자세히 설명합니다.
중요: 현재 Codename One을 빌드하려면 JDK 8이 필요합니다. 일부 하위 모듈은 툴체인 부분과의 이전 버전 호환성을 유지하기 위해 -source 1.5
및 -target 1.5
사용해야 하므로 JDK 11을 사용할 수 없습니다.
git clone https://github.com/codenameone/CodenameOne
cd CodenameOne/maven
mvn install
그러면 로컬 Maven 저장소에 Codename One이 빌드되고 설치됩니다. 이 프로세스는 ~1GB 크기의 종속성을 자동으로 다운로드하므로 시간이 걸릴 수 있습니다.
소스에서 원형 프로젝트를 빌드하려면 cn1-maven-archetypes 저장소를 확인하고 빌드해야 합니다.
git clone https://github.com/shannah/cn1-maven-archetypes
cd cn1-maven-archetypes
mvn install
이제 Codename One이 로컬 Maven 저장소에 설치되었으므로 프로젝트에서 릴리스 버전 대신 해당 버전을 사용할 수 있습니다. Codename One 초기화를 사용하면 새로운 테스트 프로젝트를 빠르게 생성할 수 있습니다.
프로젝트를 다운로드하고 추출한 후 해당 pom.xml 파일을 열고 <cn1.version>
및 <cn1.plugin.version>
속성을 찾습니다. 그런 다음 mvn install
통해 로컬 Maven 저장소에 설치된 버전을 가리키도록 변경하세요. 로컬로 빌드된 버전은 일반적으로 SNAPSHOT 버전(예: 7.0.21-SNAPSHOT)입니다.
소스 가져오기 및 빌드
$ git clone https://github.com/codenameone/CodenameOne
$ cd CodenameOne
$ ant
단위 테스트 실행
$ ant test-javase
샘플 실행
Samples 디렉터리에는 점점 늘어나는 샘플 애플리케이션 세트가 포함되어 있습니다. 이 샘플은 데모용이 아니라 API 사용 방법에 대한 샘플입니다.
다음을 사용하여 명령줄에서 샘플 실행기 앱을 시작할 수 있습니다.
$ ant samples
Codename One의 iOS VM은 매우 독특하며 오픈 소스이기도 합니다. 이 저장소의 전용 폴더에서 이에 대한 자세한 내용을 읽을 수 있습니다.
ParparVM은 Java 바이트코드를 C 코드로 변환하는 독특하고 보수적인 VM입니다. 따라서 안전망을 제공하면서 기본 성능과 액세스를 제공합니다. 이 접근 방식은 Codename One의 고유한 방식이며 향후 호환성을 위해 필수적입니다!
Apple은 64비트 지원, 비트코드 등을 갑자기 변경하는 경향이 있습니다. ParparVM은 표준 Xcode 프로젝트를 생성하므로 이러한 구조적 변화에 필요한 코드 변경이 필요하지 않습니다. 마치 프로젝트를 직접 핸드코딩한 것과 같습니다!
xcode에서 결과 프로젝트를 열고 디버깅하거나 iOS 장치에서 직접 프로파일링할 수도 있습니다. 이는 읽을 수 있는 호출 스택 및 가치 있고 실행 가능한 성능 추적과 같은 많은 유용한 정보를 제공합니다.
이러한 경우 기존 컴파일러는 실패합니다.
Codename One은 CLR용 JVM인 iKVM의 포크를 유지 관리합니다. 이 수정된 포트를 사용하면 기본적으로 Windows 10 장치에서 Codename One의 유니버설 Windows 플랫폼 구현을 실행할 수 있습니다.
우리는 codenameone을 사용하여 태그를 지정할 때 StackOverflow에서 지원을 제공하며 거기에서 무엇이든 물어볼 수 있으며 우리는 응답을 잘하려고 노력합니다. StackOverflow 링크는 말 그대로 사용자 질문을 답변으로 매핑하므로 훌륭한 커뮤니티 중심 FAQ 역할도 합니다.
Codename One에는 질문을 게시할 수 있는 토론 그룹이 있습니다. 그러나 해당 그룹의 특성상 출처에 대한 논의는 제한하려고 합니다. 토론 포럼은 더 간단한 사용을 위한 것이며 더 복잡한 소스 코드 해킹/네이티브 컴파일로 인해 소음이 발생할 수 있습니다.
멋진 분들에게 감사드립니다(이모지 키):
비즐-피터 | 리안나캐스퍼 | sergey코드명One | 토마스H99 | 하비에르 안톤 | 다이아몬드 | 프란체스코 갈가니 |
쿠토만 | 램스톰 | 마아르티누스 | 듀랭크 | 다이어0 | 카를로스베르디에 | 로버트 에델만 |
Adalbert393 | 스티브 한나 | 디앱세프 | 파브니트 싱 | vprise | JrmyDev | 테리 윌킨슨 |
야누스 한센 | 야코프 게셰르 | 마이클 뭉크 | 새더 | 미구엘 무뇨스 | 아메드 아부말와 | 파비오 |
피오트르 | 마티아스 베이 | 사니 사노프 | McSym28 | 에릭 렁 | 데이비드 데이 | 닉 프라이스 |
아나프 빈 아자드 | 옥타비오 E 아니노 | 야쉬 여드름 | 니나 | FercueNat | ImmediandoSrl | 다비데프라이마스 |
DB107 | 엘토시에아르 아시미네 잇코 |
이 프로젝트는 모든 기여자 사양을 따릅니다. 어떤 종류의 기여도 환영합니다! ❤️