코로나, 폰갭, 티타늄 비교
저는 웹 개발자이고 제 웹 제품을 아이폰으로 옮기고 싶습니다.제품 중 하나는 Google 지도와 같습니다. 전화 화면에 지도를 표시하고 지도를 끌거나 크기를 조정하여 지도에 추가한 정보를 볼 수 있습니다.
네이티브 아이폰 앱을 개발하기 위해 HTML, CSS, Javascript를 사용할 수 있는 몇 가지 기술이 있다는 것을 알고 있습니다.몇 가지를 확인했습니다.
비슷한 제품이 또 있습니까?그들 사이의 차이점은 무엇입니까?어떤 것을 선택해야 합니까?
저는 대부분 투표된 답변에 댓글을 달 목적으로 스택 오버플로에 등록했습니다.나쁜 점은 스택 오버플로가 새 멤버가 댓글을 다는 것을 허용하지 않는다는 것입니다.그래서 저는 이 댓글을 좀 더 답처럼 만들어야 합니다.
로리 블라이스의 답변에는 두 개의 자바스크립트 모바일 프레임워크에 대한 몇 가지 타당한 요점이 포함되어 있습니다.하지만, 그의 요점은 틀렸습니다.사실 티타늄과 폰갭은 다르다기보다는 비슷합니다.그들은 모두 자바스크립트 API 세트를 통해 휴대전화 기능을 노출시키고, 애플리케이션의 로직(html, css, javascript)은 네이티브 WebView 컨트롤 내에서 실행됩니다.
PhoneGap은 단순히 웹 앱의 네이티브 래퍼가 아닙니다."웹앱"은 PhoneGap Javascript API를 통해 위치정보, 가속도계 카메라, 연락처, 데이터베이스, 파일시스템 등의 휴대전화 기능을 이용할 수 있습니다.기본적으로 휴대폰 SDK가 제공하는 모든 기능은 자바스크립트 세계로 "브릿지"될 수 있습니다.반면에 모바일 웹 브라우저에서 실행되는 일반 웹 앱은 이러한 기능의 대부분에 액세스할 수 없습니다(보안이 주요 원인임).따라서 PhoneGap 앱은 웹 앱이라기보다는 모바일 앱에 가깝습니다.PhoneGap API를 전혀 사용하지 않는 웹 앱을 랩하기 위해 PhoneGap을 사용할 수는 있지만, PhoneGap이 만들어진 것은 아닙니다.
티타늄은 html, css 또는 javascript 코드를 "네이티브 비트"로 컴파일하지 않습니다.이러한 패키지는 내장된 이미지 파일과 마찬가지로 실행 파일 번들에 리소스로 패키지화됩니다.응용 프로그램이 실행되면 이러한 리소스가 UI WebView 컨트롤에 로드되어 실행됩니다(물론 네이티브 비트가 아닌 javascript로 실행됩니다).자바스크립트-네이티브-코드(또는 to-objective-c) 컴파일러 같은 것은 없습니다.이것은 PhoneGap에서도 동일한 방식으로 수행됩니다.구조적 관점에서 볼 때, 이 두 프레임워크는 매우 유사합니다.
자, 그들은 다를까요?네. 첫째, 티타늄은 자바스크립트에 더 많은 휴대폰 기능을 연결하여 PhoneGap보다 더 풍부한 기능을 가지고 있는 것으로 보입니다.가장 눈에 띄는 점은 PhoneGap이 많은 네이티브 UI 구성 요소를 Javascript에 노출시키지 않는다는 것입니다.반면 티타늄은 자바스크립트로 호출하여 모든 종류의 네이티브 UI 컨트롤을 생성하고 제어할 수 있는 포괄적인 UI API를 가지고 있습니다.이러한 UI API를 활용하면 Titanium 앱이 PhoneGap 앱보다 더 "원본적"으로 보일 수 있습니다.둘째, PhoneGap은 Titanium보다 더 많은 휴대폰 플랫폼을 지원합니다.PhoneGap API는 보다 일반적이며 iPhone, Android, Blackberry, Symbian 등과 같은 다양한 플랫폼에서 사용할 수 있습니다.티타늄은 적어도 현재로서는 아이폰과 안드로이드를 주로 겨냥하고 있습니다.일부 API는 플랫폼별로 다릅니다(예: iPhone UI API).이러한 API를 사용하면 애플리케이션의 교차 플랫폼 기능이 저하됩니다.
따라서 앱을 보다 "원본적인" 모양으로 만드는 것이 고민이라면 티타늄이 더 나은 선택입니다.만약 당신이 당신의 앱을 다른 플랫폼으로 더 쉽게 "포트"할 수 있기를 원한다면, PhoneGap이 더 나을 것입니다.
2010년 8월 13일 업데이트: 미키의 질문에 대한 티타늄 직원의 답변 링크.
2010년 12월 4일 업데이트: 저는 이 게시물의 정보를 최신 상태로 유지하기 위해 연례 검토를 하기로 결정했습니다.1년 사이에 많은 것들이 바뀌어서 최초 게시물의 일부 정보가 구식이 되었습니다.
가장 큰 변화는 티타늄에서 왔습니다.올해 초 Appelerator는 아키텍처 관점에서 이전 버전에서 크게 벗어난 Titanium 1.0을 출시했습니다.1.0에서는 UI WebView 컨트롤이 더 이상 사용되지 않습니다.대신, 당신은 모든 UI 기능에 대해 티타늄 API를 호출합니다.이러한 변화는 다음과 같은 몇 가지를 의미합니다.
앱 UI가 완전히 기본이 됩니다.네이티브 티타늄 API가 모든 UI 요구를 제어하기 때문에 앱에 더 이상 웹 UI가 없습니다.티타늄은 "크로스 플랫폼 네이티브 UI" 개척을 통해 많은 찬사를 받을 만하다.그것은 네이티브 UI의 모양과 느낌을 선호하지만 공식 프로그래밍 언어를 싫어하는 프로그래머들에게 대안을 제공합니다.
웹 뷰가 사라졌기 때문에 앱에서 HTML이나 CSS를 사용할 수 없습니다.(참고: Titanium에서 웹 보기를 계속 만들 수 있습니다.그러나 웹 뷰에서 활용할 수 있는 티타늄 기능은 거의 없습니다.)티타늄 Q&A: HTML과 CSS는 어떻게 되었습니까?
JQuery와 같은 DOM 개체의 존재를 가정하는 일반적인 JS 라이브러리는 사용할 수 없습니다.코드화 언어로 JavaScript를 계속 사용하고 있습니다.하지만 당신이 Titanium 1.0에 웹 프로그래머로 온다면 그것이 당신이 사용할 수 있는 거의 유일한 웹 기술입니다.
티타늄 1.0은 자바스크립트를 "네이티브 비트"로 컴파일합니까?아니요. 앱 액셀러레이터는 마침내 다음 개발자 블로그를 통해 이 문제를 해명했습니다.티타늄 가이드 프로젝트: JS 환경우리 프로그래머들은 마케팅 부서에 있는 사람들보다 더 진정성 있는 사람들이죠? :-)
PhoneGap으로 이동합니다.폰갭에 대해 새롭게 말할 수 있는 것은 많지 않습니다.제 생각에는 올해 말 IBM이 참여하기 전까지는 PhoneGap 개발이 그다지 활발하지 않았습니다.어떤 사람들은 심지어 IBM이 Nitobi보다 PhoneGap에 더 많은 코드를 기여하고 있다고 주장했습니다.사실이든 아니든 폰갭이 활성화되고 있다는 것은 좋은 일입니다.
PhoneGap은 HTML, CSS 및 JavaScript와 같은 웹 기술에 계속 기반을 두고 있습니다.PhoneGap은 Titanium처럼 네이티브 UI 기능을 JavaScript에 연결할 계획이 없는 것 같습니다.웹 UI는 성능과 네이티브 룩 앤드 필에서 네이티브 UI에 비해 여전히 뒤쳐져 있지만, 이러한 격차는 빠르게 좁혀지고 있습니다.성능 측면에서 모바일 웹 UI의 밝은 기능을 보장하는 웹 기술에는 두 가지 경향이 있습니다.
인터프리터에서 가상 시스템으로 이동하는 JavaScript 엔진입니다.JavaScript는 빠른 실행을 위해 JIT를 네이티브 코드로 컴파일합니다.사파리 JS 엔진: 다람쥐 물고기 익스트림
웹 페이지 렌더링이 CPU에 의존하는 것에서 GPU 가속화를 사용하는 것으로 이동합니다.페이지 전환 및 3D 애니메이션과 같은 그래픽 집약적인 작업은 하드웨어 가속의 도움으로 훨씬 더 매끄럽게 됩니다.Chrome에서 GPU 가속화
데스크톱 브라우저에서 비롯된 이러한 개선 사항이 모바일 브라우저에 빠르게 전달되고 있습니다.실제로 iOS 3.2와 Android 2.0 이후로 모바일 웹 뷰 제어는 훨씬 더 성능이 좋고 HTML5에 친숙해졌습니다.모바일 웹의 미래는 매우 유망하여 큰 아이들을 마을로 끌어들였습니다. JQuery는 최근 모바일 웹 프레임워크를 발표했습니다.JQuery Mobile은 UI 가젯을 제공하고 PhoneGap은 전화 기능을 제공함으로써, 두 가지가 결합되어 완벽한 모바일 웹 플랫폼을 만들었다고 생각합니다.
저는 또 다른 모바일 웹 UI 가젯 프레임워크로 센차 터치를 언급해야 합니다.Sencha Touch 버전 1.0은 최근 GPLv3를 포함한 이중 라이센스 모델로 출시되었습니다. Sencha Touch는 JQuery Mobile과 마찬가지로 PhoneGap과 잘 작동합니다.
만약 당신이 (나와 같은) GWT 프로그래머라면, 당신은 GWT로 모바일 웹 앱을 만들기 위한 오픈 소스 프로젝트인 GWT Mobile을 확인하고 싶을 것입니다.GWT에서 PhoneGap을 사용할 수 있는 PhoneGap GWT 래퍼가 포함되어 있습니다.
제가 수집한 바로는, 두 가지 차이점이 있습니다.
PhoneGap은 기본적으로 여전히 웹 앱인 네이티브 래퍼를 생성합니다.그것은 무엇이든 뱉습니다.PlatformIs 프로젝트를 구축하고 배포합니다.iPhone(내가 시간을 보내는 곳)을 말하는 것이라면 웹 앱 런처(Springboard 아이콘을 직접 얻는 바로 가기)를 만드는 것과 크게 다르지 않아 보입니다. 따라서 네이티브 앱처럼 실행할 수 있습니다."app" 자체는 여전히 html/js/ 등이며 호스트된 브라우저 컨트롤 내에서 실행됩니다.PhoneGap은 JavaScript와 네이티브 장치 API 간의 가교 역할을 합니다.따라서 PhoneGap API에 대해 JavaScript를 작성한 다음 PhoneGap이 해당하는 네이티브 콜을 수행합니다.그런 점에서 일반적인 오래된 웹 앱을 배포하는 것과는 다릅니다.
티타늄 소스는 네이티브 비트로 컴파일됩니다.즉, html/js/ 등이 단순히 프로젝트에 연결된 후 웹 브라우저 컨트롤 내부에서 호스팅되는 것이 아니라 기본 앱으로 전환됩니다.예를 들어 앱의 인터페이스가 네이티브 UI 구성 요소로 구성된다는 의미입니다.네이티브 앱을 사용하지 않고 네이티브 룩앤필을 사용할 수 있는 방법도 있지만,음...보통 악몽으로 밝혀지곤 합니다
일반적인 웹 기술(html/js/css/blah blah blah)을 사용하여 모든 내용을 작성하고 사용자 정의 JavaScript API를 통해 기본 기능에 액세스할 수 있다는 점에서 두 가지가 유사합니다.
하지만 다시 폰갭 앱(폰갭?모르겠어요...그것은 어리석은 이름입니까?그들의 삶을 웹 앱으로 시작하고 웹 앱으로 끝내는 것은 더 쉽게 말할 수 있습니다.iPhone에서는 UI WebView 컨트롤 내에서 html/js/ 등이 실행되고 js 호출하는 PhoneGap JavaScript API가 네이티브 API로 라우팅됩니다.
티타늄 앱은 웹 개발 기술을 사용하여 개발된 네이티브 앱이 됩니다.
이것은 실제로 무엇을 의미합니까?
티타늄 앱은 궁극적으로 "진짜" 앱이기 때문에 "진짜" 앱처럼 보일 것입니다.
PhoneGap 앱은 궁극적으로 브라우저 컨트롤에서 호스팅되는 웹 앱이기 때문에 브라우저 컨트롤에서 호스팅되는 웹 앱처럼 보입니다.
어떤 것이 당신에게 맞습니까?
웹 개발 기술을 사용하여 네이티브 앱을 작성하려면 티타늄이 가장 좋습니다.
여러 플랫폼(iPhone, Android, Blackberry 등 포함하기로 결정한 다른 플랫폼)에 현실적으로 배포할 수 있는 웹 개발 기술을 사용하여 앱을 작성하고 통합 JavaScript API를 통해 기본 플랫폼 기능(GPS, 가속도계 등)의 하위 집합에 액세스하려면 PhoneGap이 필요할 것입니다.
다음과 같은 질문을 할 수 있습니다.웹에서 호스팅되는 웹 앱이 아닌 PhoneGap(이름을 사용하기로 결정했습니다)을 작성하려는 이유는 무엇입니까?사용자가 내 "네이티브" 앱을 다운로드하여 설치하도록 강요하는 대신 일부 네이티브 장치 기능에 여전히 액세스할 수 있을 뿐만 아니라 진정한 웹 배포의 편리성도 가질 수 있습니까?
답은: 앱스토어에 폰갭을 제출하고 요금을 청구할 수 있기 때문입니다.또한 런처 아이콘이 표시되므로 사용자가 앱을 잊기가 어렵습니다(앱 아이콘보다 북마크를 잊기가 훨씬 더 쉽습니다).
웹 호스팅 웹 앱에 대한 액세스 비용을 청구할 수는 있지만, 실제로 얼마나 많은 사람들이 이 과정을 거치게 될까요?앱스토어에서 앱을 선택하고 "구매" 버튼을 누르고 암호를 입력하면 완료됩니다.설치됩니다.몇 초 후에, 저는 그것을 사용하고 있습니다.제 이름, 주소, 전화 번호, CC 번호 등 제가 도청하고 싶지 않은 것들을 제가 도청해야 하는 다른 사람의 일회성 모바일 웹 트랜잭션 인터페이스를 사용해야 한다면, 저는 거의 확실히 그렇게 하지 않을 것입니다.또한, 저는 애플을 신뢰합니다. 저는 스티브 잡스가 제 정보를 기록하고 나서 제 CC에 장난꾸러기 잡지 구독료를 많이 청구하지 않을 것이라고 확신합니다.
어쨌든, 웹 개발 기술이 관련되어 있다는 사실을 제외하면, PhoneGap과 Titanium은 표면적으로만 비교될 정도로 매우 다릅니다.
참고로 저는 웹 앱을 싫어합니다. 그리고 iTunes App Store 리뷰를 읽어보면 사용자들은 그것들을 꽤 잘 발견합니다.이름은 밝히지 않겠지만, 제 휴대폰에 쓰레기처럼 보이고 실행되는 "앱"이 몇 개 있습니다. UI WebView 인스턴스 내에서 호스팅되는 웹 앱이기 때문입니다.웹 앱을 사용하려면 Safari를 열고 Safari로 이동합니다.저는 아이폰과 비슷한 것들을 원하기 때문에 아이폰을 샀습니다.예를 들어, 사파리에서 멋진 구글 웹 앱을 사용하는 데는 문제가 없지만, 구글이 웹 앱을 네이티브로 제시하여 스프링보드에 북마크를 몰래 설치한다면 속은 기분이 들 것입니다.
지금 가야 해요.제 여자친구는 3초 동안 그 컴퓨터 사용을 멈출 수도 있다는 표정을 짓고 있어요.
저는 Android/iPhone 개발 과정을 수강하고 있으며, 8주 동안 Titanium(풀타임은 아님)을 사용했습니다(버전은 Titanium 1.4.2, 시간은 2010년 11월경).여기 제 경험이 있습니다.
아이폰 안드로이드 듀얼 타겟팅
API 가이드에서 Android와 iPhone 모두 해당 기능을 사용할 수 있다고 주장하지만 그렇지 않습니다.많은 것들이 단순히 플랫폼 중 하나에서 작동하지 않습니다.어떤 것들은 다르게 작동합니다.
반의 많은 사람들이 아이폰 애플리케이션을 해봤고, 그들은 큰 수정 없이 안드로이드에서 작동할 수 없습니다.저는 애니맵(안드로이드 마켓/스웨덴 앱스토어 참조)이라는 간단한 어린이 앱을 개발하여 윈도우로 개발하기 시작했습니다.안드로이드 타겟이 작동하자 OS X에서 프로젝트를 열었습니다.그것은 단지 안드로이드를 위한 아이폰의 빌드를 보여주지 않습니다.OS X에서 이중 대상 프로젝트를 시작해야 합니다. (네, 관련 파일을 새 프로젝트에 복사했습니다.)다음 문제 - 애니메이션은 iPhone에서 작동하지 않습니다(Android에서 작동합니다).스크롤 이벤트는 iPhone에서 동일하게 작동하지 않습니다. (즉, Android에서는 사용자가 스크롤을 중지하고 화면에서 손가락을 떼면 언터치 이벤트가 발생합니다. iPhone에서는 이러한 현상이 발생하지 않습니다.)
이것은 어디선가 언급되지 않았기 때문에 기본적으로 한 플랫폼에서 시행착오 프로그래밍을 하고 다른 플랫폼에서 실행해야 합니다.시행착오를 겪으면서 다른 플랫폼에서 애니맵과 같은 간단한 앱을 작동시키려면 이틀 정도 걸릴 것이라는 뜻입니다.만약 (안드로이드)가 있다면, 당신은 또한 필요할 필요가 있을 것입니다.아니면 만약에...네 코드 전체에...
다운로드 및 설정
당신은 지시사항을 철저히 따라야 합니다.Java 64비트를 사용하지 마십시오.KitchenSink 1.4.0 데모 응용 프로그램을 컴파일하지 않습니다. (1.3은 정상!)경로 이름이 길면 외부 프로그램이 모든 명령줄 매개 변수를 수신할 수 없기 때문에 C 드라이브에 직접 파일을 넣어야 합니다. (작은 프로그램의 경우는 괜찮지만) 1/3은 툴체인이 멈추고 다시 '실행'을 눌러야 합니다.그러면 아마 효과가 있을 겁니다매우 신뢰할 수 없는시작할 때 시뮬레이터를 찾을 수 없으며 Ctrl+Alt+Delete를 사용하여 adb.exe를 제거한 후 다시 시도하십시오.
네트워크 연결
와이파이 네트워크에서 때때로 라이브 연결이 끊어지고 티타늄이 충돌합니다(컴파일/배포 인터페이스). 작동하는 인터넷 연결이 없으면 서버에 로그인할 수 없기 때문에 시작되지 않습니다.
API
CSS, HTML, jQuery는 이것에 비하면 쉬운 일입니다.티타늄은 다른 오래된 GUI API와 유사하며, 모든 버튼/필드/등에 대해 몇 가지 속성을 설정해야 합니다.필드를 틀리는 것은 설정해야 하는 모든 속성을 기억하는 것이 너무 쉽습니다.당신은 그것을 정확한 위치에 대문자로 철자를 썼습니까?(이것은 컴파일러에 의해 잡히지 않지만, 만약 당신이 그 부분을 테스트할 수 있다면 런타임 오류로 보일 것입니다.
Titanium에서는 컨트롤 위에 다른 보기를 추가하거나 GUI의 다른 곳을 클릭하면 내용이 깨집니다.
문서화
일부 API 페이지에는 Android 기호가 있지만 컨트롤을 만들 때만 null이 반환됩니다.기호에도 불구하고 Android 플랫폼에서 단순히 사용할 수 있는 것은 아닙니다.때때로 Android는 특정한 방법을 지원하지 않는다고 언급되지만, 전체 API가 누락됩니다.
키친싱크
데모 응용 프로그램입니다.경로가 너무 길어져서 Eclipse 프로젝트 폴더에 넣으면 컴파일되지 않는다고 말했습니까?루트 폴더의 C 드라이브에 있어야 합니다.현재 심볼릭 링크(mklink /J...)를 사용하고 있습니다.
문서화되지 않은 메서드
신뢰할 수 있는 레이블을 변경하려면 label.setText('HelloWorld')로 올바르게 사용해야 하지만 이는 전혀 문서화되어 있지 않습니다.
디버깅
티타늄.API.info ("프린트 출력만이 디버깅할 수 있는 유일한 방법");
편집
API는 좋은 형식으로 제공되지 않으므로 Eclipse에서 도움말 등으로 일반적인 코드 완성을 얻을 수 없습니다.압타나 도와주세요!
하드웨어
컴파일러/툴이 멀티스레드화되어 있지 않은 것 같아서, 많은 시행착오를 겪어야 하기 때문에 빠른 하드 드라이브가 있는 빠른 컴퓨터가 필수입니다.제가 부실한 문서를 언급했나요?당신은 믿을 수 없으니 그곳에서 모든 것을 시도해야 합니다!
몇가지 긍정적인 것들
- 오픈 소스
이전 프로젝트에서 저는 시간과 인력을 투입하는 것만으로는 문제를 해결할 수 없기 때문에 다시는 폐쇄 소스를 사용하지 않겠다고 스스로에게 약속했습니다.프로젝트에 늦고 힘든 마감일에 납품해야 할 때 중요합니다.이것은 오픈 소스이며 저는 툴 체인이 고장나는 이유를 확인하고 실제로 수리할 수 있었습니다.
버그 데이터베이스
그것도 열려 있습니다.시행착오에 소요되는 4시간 대신 혼자만의 문제가 아님을 확인하고 해결책을 제시할 수 있습니다.
지역 사회
- 그들의 포럼에서 활동하는 것 같습니다.
벅스
- 티타늄 1.4는 스레드 세이프가 아닙니다.즉, 스레드(createWindow 호출에서 url: 속성 사용)를 사용하고 스레드가 작동하는 것과 같은 프로그램을 사용하여 데이터를 주고받으며 이벤트를 전송하면 핸들러 손실, 창 손실, 이벤트 수가 너무 많거나 이벤트 수가 너무 적은 등 매우 매우 이상한 상황에 처하게 됩니다.이는 모두 타이밍에 따라 다르며 코드 행을 다른 순서로 배치하면 응용 프로그램이 중단되거나 복구될 수 있습니다.다른 파일에 창을 추가하면 app.js 실행이 중단됩니다...또한 Titanium의 내부 데이터 구조를 추적합니다. 내부 데이터 구조를 병렬로 업데이트하여 방금 변경된 값을 다른 값으로 덮어쓸 수도 있습니다.
Titanium과 관련된 문제의 대부분은 OSE와 같은 실시간 시스템에서 수백 개의 스레드, 이벤트 및 메시지 전달을 지원하는 배경에서 비롯되었습니다.이것은 티타늄 1.4에서 작동해야 하지만 단순히 안정적으로 작동하지 않습니다.
Javascript(처음 보는)는 런타임 오류가 발생하면 자동으로 사라집니다.이는 변수 이름의 철자를 잘못 쓰거나 null 포인터에서 읽는 것과 같은 작고 일반적인 버그가 필요할 때 충돌하지 않으므로 디버깅할 수 있습니다.대신 사용자가 캐릭터를 잘못 입력했거나 잘못 입력했기 때문에 프로그램의 일부(예: 이벤트 핸들러)가 작동을 중지합니다.
그런 다음 일부 매개 변수가 기능에서 작동하지 않는 것과 같은 티타늄의 더 간단한 버그가 있습니다(적어도 안드로이드 플랫폼에서는 상당히 일반적입니다).
시행착오 디버그 주기 속도 여러 컴퓨터에서 Titnium Developer를 실행해보니 병목 현상이 하드 드라이브라는 것을 알게 되었습니다.노트북의 SSD 드라이브는 4200rpm 드라이브보다 빌드 주기가 약 3-5배 빠릅니다.데스크톱에서 RAID 1(스트라이핑 모드)의 듀얼 드라이브를 사용하면 CPU가 다소 빠른 단일 드라이브보다 약 25% 더 빠르게 빌드할 수 있으며 SSD 드라이브 노트북을 능가합니다.
요약
- 이 스레드의 댓글을 보면 이러한 도구가 앱을 제공할 수 있는 플랫폼의 수에 대한 싸움이 있는 것 같습니다.API의 수가 핵심 세일즈 포인트인 것 같습니다.
이것은 사용하기 시작하면 매우 빛납니다.열려 있는 버그 추적기를 보면 버그의 수가 수정된 버그의 수보다 더 빠르게 증가하는 것을 볼 수 있습니다.이는 일반적으로 개발자가 버그 수를 줄이는 데 집중하기보다는 기능을 계속 추가한다는 신호입니다.
고객을 위해 여러 플랫폼에 간단한 앱을 제공하려는 컨설턴트로서, 두 개의 플랫폼에서 기본 앱 개발을 수행하는 것보다 실제로 더 빠르다고 확신할 수 없습니다.이는 속도를 낼 때 티타늄을 사용하는 속도가 빠르기 때문입니다. 하지만 갑자기 아래를 내려다보면 너무 깊은 구멍에 빠져 얼마나 많은 시간을 해결해야 하는지 알 수 없기 때문입니다.특정 기한/시간/비용에 대해 특정 기능을 약속할 수 없습니다.
나에 대해서:wxPython과 함께 2년 동안 Python을 사용하고 있습니다.(GUI는 일관성이 없지만 이렇게 부서지는 일은 절대 없습니다.Javascript와 Titanium에서 사용하는 스레드화 모델을 이해하지 못한 사람은 저일 수도 있지만, 그들의 공개 토론 포럼에 따르면 저는 혼자가 아닙니다. GUI 개체가 갑자기 잘못된 컨텍스트를 사용하고/업데이트하지 않습니다.?) 그 전에 모바일 기기를 위한 C 및 ASM 프로그래밍에 대한 경력이 있습니다.
[edit - 버그가 있고 스레드가 안전하지 않은 부분 추가] [편집 - 현재 한 달 이상 작업 중입니다. 대부분 PC에서 작업하지만 일부는 OS X에서도 작업할 수 있습니다.iPhone 및 Android 듀얼 타겟팅 추가.시행착오 디버그 주기 속도가 추가되었습니다.]
코로나 SDK(Ansca Mobile)는 Lua를 코딩 언어로 사용합니다.Lua에 대한 자세한 내용은 lua.org 을 참조하십시오.
웹 통합 및 네이티브 UI 요소를 추가할 계획이지만 웹 기반 기술이 아닌 게임 개발과 같은 그래픽 집약적인 애플리케이션에 중점을 둘 것입니다.다시 말해, 우리는 사람들이 완전히 자바스크립트/HTML/CSS로 코로나 앱을 작성하는 것을 상상하지 않습니다.
저는 티타늄과 일주일 넘게 일하고 있는데 티타늄의 약점에 대해 좋은 느낌을 받고 있습니다.
여러 플랫폼에서 동일한 코드를 사용하고 싶다면 행운을 빕니다!backgroundGradient와 같은 것을 보게 될 것이고 안드로이드 버전이 그것을 지원하지 않는다는 것을 알게 될 때까지 놀랄 것입니다.그런 다음 그라데이션 이미지를 사용하는 것으로 되돌려야 하는데, 코드를 더 쉽게 만들기 위해 두 버전 모두에 사용하는 것이 낫습니까?
Titanium Android skd에서는 뒤로 버튼을 작동하거나 방향 이벤트 추적을 개선하기 위해 "무거운" 창이 무엇인지 이해해야 합니다.이것은 안드로이드 플랫폼의 실제 모습이 아니라 티타늄이 그들의 API를 작동시키기 위해 노력하는 방식입니다.
어둠 속에 던져진 당신의 물건들은 충돌할 것이고 당신은 댓글 코드를 쓰기 시작해야 합니다 그리고 당신이 그것을 발견했을 때, 절대 그것을 사용하지 마세요.6개월 이상 문제가 된 안드로이드의 방향 및 백분율과 같은 명백한 버그가 있습니다.
버그는.. 많은 버그들이 보고될 것이고, 몇 달 동안 앉아 있다가 며칠 내로 고쳐질 것입니다.안드로이드에 다른 문제가 많은데 블랙베리 모바일 sdk까지 출시할 계획이라니 놀랍습니다.
티타늄 아이폰과 티타늄 안드로이드 자바스크립트 엔진은 완전히 다릅니다.안드로이드 버전에서는 원격 자바스크립트 파일을 다운로드하고, mootools, jquery 등의 라이브러리를 포함하고 사용할 수 있습니다.안드로이드 앱을 계속 컴파일할 필요가 없었기 때문에 이 사실을 알았을 때 저는 천국에 있었습니다.Android apk 설치 과정이 너무 오래 걸립니다!iphone 그것들 중 어느 것도 가능하지 않습니다, 또한 iphone 버전은 훨씬 빠른 Javascript 엔진을 가지고 있습니다.
많은 기본 UI 부분에서 멀리 떨어져 있는 경우, 즉 setInterval을 사용하여 방향 변경을 감지하고, 그라데이션 이미지를 유지하며, 뒤로 버튼을 잊어버리고, 자신만의 애니메이션을 빌드하고, 창 머리글, 도구 모음 및 대시보드를 잊어버립니다.많은 재작성이 필요 없는 두 가지 모두에서 작동하는 API를 만들 수 있습니다.하지만 그 시점에서 그것은 웹앱만큼 느립니다.
그래서 그럴 가치가 있나요?모든 고통을 겪은 후에, 매 순간마다 가치가 있습니다.논리를 추상화하고 모든 곳에 있는 경우가 아닌 각각의 UI를 서로 다르게 구축할 수 있습니다.티타늄을 사용하면 유체 애플리케이션을 빠르게 만들 수 있습니다.각 플랫폼의 강력한 레이아웃 기능을 잃게 되지만 단순하게 생각하면 단일 언어로 작업을 수행할 수 있습니다.
왜 웹 앱이 아닌가요?보급형 시장에서 안드로이드 폰은 웹 뷰를 생성하는 것이 끔찍하게 느리고 더 복잡한 논리를 수행하는 데 사용할 수 있는 많은 메모리를 소비합니다.
다음은 Appelerator와 PhoneGap에 대한 보다 최근의 심층적인 분석입니다. http://savagelook.com/blog/portfolio/a-deeper-look-at-appcelerator-and-phonegap
프로그램적으로 어떻게 다른지에 대한 자세한 내용은 http://savagelook.com/blog/portfolio/phonegap-is-web-based-appcelerator-is-pure-javascript 에서 확인할 수 있습니다.
네이티브 맵킷은 티타늄으로 지원됩니다.
HTML5 위젯을 iphone 위젯처럼 만드는 것과 동일하게 성능을 좋게 만드는 것은 별개의 문제입니다.HTML5 애니메이션의 성능(일반 보기 전환도 가능), 긴 목록 스크롤, 제스처에 대한 반응성이 끈적끈적하고 육포처럼 느껴집니다.아이폰 사용자는 그 차이를 알아차릴 것입니다.
또한 플랫폼별 코드 및 사용성 문제를 야기하는 다양한 장치에서 지원되는 제스처의 종류에 약간의 차이가 있습니다.
일단은 네이티브 앱을 계속 사용할 것 같습니다.
Rhomobile Rodes(http://rhomobile.com/products/rhodes) 는 PhoneGap과 매우 유사하지만 다음과 같은 기능을 갖춘 유일한 프레임워크입니다.
- 대부분의 웹 프레임워크가 제공하는 모델 뷰 컨트롤러 패턴
- 객체 관계 관리자
- 모든 인기 스마트폰(Windows Phone 7 포함) 지원
- 호스팅된 개발 서비스(호스트 빌드뿐만 아니라): http://rhohub.com
- RhoStudio IDE의 완전한 디버거와 SDK가 없는 에뮬레이터
- 동기화된 오프라인 데이터 지원
티타늄에 관심이 있는 사람이라면, 저는 그들이 몇몇 클래스, 속성, 방법이 누락된 아주 좋은 문서를 가지고 있지 않다고 말해야 합니다.하지만 키친싱크 샘플 앱에는 많은 것이 "문서화"되어 있으므로 그렇게 나쁘지는 않습니다.
PhoneGap에 대한 제 이해는 그들이 대부분의 iPhone API에 Javascript API를 제공한다는 것입니다.
웹 개발자 배경에는 티타늄이 더 쉬워 보입니다.기본 TabView 응용프로그램을 만드는 단순한 XML 파일이며 컨텐츠 영역의 모든 내용은 HTML/JS에 의해 제어됩니다.티타늄이 일부 프레임워크(특히 위치 정보, 전화 ID 등에 대한 액세스)에 대한 자바스크립트 액세스를 제공한다는 것도 알고 있습니다.
업데이트: 티타늄은 프레임워크 0.8 버전에 Maps API를 추가했습니다.
당신은 객관적인 c를 배우고 네이티브 앱을 프로그래밍해야 합니다.삶을 더 편하게 해줄 것이라고 생각하는 이런 것들에 의존하지 마세요.애플은 가장 쉬운 방법이 그들의 모국어 도구와 언어를 사용하는 것이라고 확신했습니다.당신의 자바스크립트 100줄에 대해서는 요소에 따라 3줄의 코드로 동일하게 할 수도 있고 코드가 전혀 없습니다.몇몇 튜토리얼을 보세요 - 만약 당신이 자바스크립트를 이해한다면 객관적인 c는 어렵지 않습니다.해결 방법은 형편없으며 애플은 원할 때 언제든지 당신을 막을 수 있습니다.
말씀하신 솔루션 중 OS 3.0에 도입된 MapKit 프레임워크에 직접 액세스할 수 있는 솔루션은 없습니다.
Google 지도 HTML 위젯은 MapKit만큼 좋지 않으므로(예를 들어 Google Latitude 참조) 기본 코코아 터치 응용 프로그램을 개발하거나 MapKit 통합을 추가하기 위해 확장할 수 있는 솔루션을 선택하는 것이 가장 좋습니다.PhoneGap은 이러한 방식으로 확장 가능하며(오픈 소스이기 때문에 기본적으로 확장 가능) 다른 솔루션 중 일부도 마찬가지일 수 있습니다.
편집: 티타늄은 이제 맵킷을 지원합니다.
저는 코로나를 시도해봤어요.mp3 오디오 스트리밍을 지원하지 않는다는 것을 알기 전까지는 좋았습니다.그래서 바로 거기서 멈췄습니다.제가 정말 아이폰 앱 개발자가 되고 싶다면 사물을 배워야 한다고 생각합니다.라디오 방송국 목록이 있는 앱을 만들고 싶었기 때문에 클릭하면 재생이 시작됩니다.
언급URL : https://stackoverflow.com/questions/1482586/comparison-between-corona-phonegap-titanium
'programing' 카테고리의 다른 글
--no-ri --no-rdoc을 기본 forgem 설치로 만드는 방법은 무엇입니까? (0) | 2023.06.02 |
---|---|
iTunes 유무에 관계없이 iPad에 .ipa 설치 (0) | 2023.06.02 |
잠금 에스컬레이션 - 여기서 무슨 일이 발생합니까? (0) | 2023.06.02 |
UIView 크기 조정 이벤트가 있습니까? (0) | 2023.06.02 |
ng2 - ng-container 태그와 ng-template 태그의 차이 (0) | 2023.06.02 |