Порівняння між Короною, Фонегапом, Титаном


310

Я веб-розробник і хочу перенести свої веб-продукти на iPhone. Один із продуктів схожий на Карти Google: показуйте карту на екрані телефону, ви можете перетягнути або змінити розмір карти та переглянути деяку інформацію, яку ми додамо до карти.

Я знаю, що існують деякі технології, які дозволяють використовувати HTML, CSS та Javascript для розробки власних додатків для iPhone. Я визначив декілька:

Чи є інші, подібні продукти? Які відмінності між ними? Яку вибрати?


1
Існує також Adobe Flex, який може генерувати iPhone додатки в червні 2011 року adobe.com/products/flex
neoneye

1
Перевір. Чувак ось порівняння. savagelook.com/blog/portfolio/…
Хан

Відповіді:


368

Я зареєструвався в stackoverflow лише для того, щоб прокоментувати відповідь, що голосує в основному. Погано, що stackoverflow не дозволяє новим членам публікувати коментарі. Тому я повинен зробити цей коментар більше схожим на відповідь.

Відповідь Рорі Блайт містить деякі достовірні моменти щодо двох мобільних рамок javascript. Однак його ключові моменти неправильні. Правда полягає в тому, що Titanium і PhoneGap схожіші, ніж різні. Вони обидва розкривають функції мобільного телефону через набір API javascript, а логіка програми (html, css, javascript) працює всередині нативного управління WebView.

  1. PhoneGap - це не просто рідна обгортка веб-програми. Через API JavaScriptGaGG "веб-додаток" має доступ до функцій мобільного телефону, таких як геолокація, камера камери акселерометра, контакти, база даних, файлова система тощо. В основному будь-яка функція, яку надає SDK для мобільного телефону, може бути "мостовою" до javascript світ. З іншого боку, звичайний веб-додаток, який працює на веб-переглядачі для мобільних пристроїв, не має доступу до більшості цих функцій (головна причина - безпека). Тому додаток PhoneGap - це більше мобільний додаток, ніж веб-додаток. Ви, звичайно, можете використовувати PhoneGap, щоб перетворити веб-додаток, який взагалі не використовує жодного API PhoneGap, але для цього не створено PhoneGap.

  2. Titanium НЕ компілює ваш html, css чи код JavaScript у "рідні біти". Вони упаковані як ресурси до виконуваного пакету, подібно до вбудованого файлу зображень. Коли програма запускається, ці ресурси завантажуються в елемент управління UIWebView і запускаються там (як, звичайно, JavaScript, а не рідні біти). Немає такого поняття, як компілятор javas-to-native-code (або to-aim-c). Це робиться так само і в PhoneGap. З архітектурної точки зору ці дві рамки дуже схожі.

Тепер вони різняться? Так. По-перше, Titanium виявляється більш багатим на функції, ніж PhoneGap, приєднуючи більше функцій мобільного телефону до JavaScript. Найбільш помітно, що PhoneGap не піддає багатьом (якщо такі є) вродні компоненти інтерфейсу JavaScript. Titanium, з іншого боку, має вичерпні інтерфейси API інтерфейсу, які можна викликати в javascript для створення та контролю всіх видів вбудованих елементів управління інтерфейсом. Використовуючи ці API інтерфейсу користувача, додаток Titanium може виглядати "рідніше", ніж додаток PhoneGap. По-друге, PhoneGap підтримує більше мобільних платформ, ніж Titanium. API-програми PhoneGap є більш загальними і можуть використовуватися на різних платформах, таких як iPhone, Android, Blackberry, Symbian і т.д. Деякі з його API залежать від платформи (наприклад, API інтерфейсу iPhone).

Отже, якщо ваша турбота про ваш додаток полягає в тому, щоб зробити його більш "рідним" виглядом, Titanium - кращий вибір. Якщо ви хочете легше «перенести» додаток на іншу платформу, PhoneGap стане кращим.

Оновлено 13.08.2010: Посилання на відповідь працівника Titanium на запитання Міккі.

Оновлено 12.04.2010: Я вирішив надати цій публікації щорічний огляд, щоб тримати інформацію актуальною. Багато людей змінилися за рік, завдяки чому частина інформації в початковій посаді застаріла.

Найбільша зміна відбулася від Титану. На початку цього року Appcelerator випустив Titanium 1.0, який різко відхилився від своїх попередніх версій з точки зору архітектури. У 1.0 контроль UIWebView більше не використовується. Натомість ви викликаєте API Titanium для будь-яких функцій інтерфейсу. Ця зміна означає кілька речей:

  1. Інтерфейс вашого додатка стає повністю рідним. У вашому додатку більше немає веб-інтерфейсу, оскільки вбудовані API-файли Titanium беруть на себе контроль над усіма вашими потребами в інтерфейсі. Титан заслуговує великої заслуги, піонерський на кордоні "Крос-платформний корінний інтерфейс". Це дає програмістам, які віддають перевагу зовнішньому вигляду рідного інтерфейсу, але не люблять офіційну мову програмування альтернативою.

  2. Ви не зможете використовувати HTML або CSS у своєму додатку, оскільки веб-перегляд відсутній. (Примітка. Ви все ще можете створити веб-перегляд у Titanium. Але є кілька функцій Titanium, якими ви можете скористатися у веб-перегляді.) Titanium Q&A: Що сталося з HTML та CSS?

  3. Ви не зможете використовувати популярні бібліотеки JS, такі як JQuery, які припускають існування об'єкта DOM. Ви продовжуєте використовувати JavaScript як свою мову кодування. Але це майже єдина веб-технологія, яку ви можете використовувати, якщо ви прийшли до Titanium 1.0 як веб-програміст.

Відео про титан: Що нового в Titanium 1.0.

Тепер, чи Titanium 1.0 компілює ваш JavaScript у "рідні біти"? Ні. Appcelerator нарешті очистився з цього питання за допомогою цього блогу розробників: Titanium Guides Project: JS Environment. Ми, програмісти, більш справжні люди, ніж ті, хто працює у відділі маркетингу, чи не так? :-)

Перейдіть до PhoneGap. Про PhoneGap можна сказати не багато нового. Я вважаю, що розробка PhoneGap була не дуже активною, поки IBM не вийшла на борт пізніше цього року. Деякі люди навіть стверджували, що IBM вносить більше коду в PhoneGap, ніж Nitobi. Це правда чи ні, добре знати, що PhoneGap активно розвивається.

PhoneGap продовжує базуватися на веб-технологіях, а саме HTML, CSS та JavaScript. Схоже, що PhoneGap не планує переносити рідні функції інтерфейсу в JavaScript, як це робить Titanium. Хоча веб-інтерфейс все ще відстає від рідного інтерфейсу в продуктивності та рідному зовнішньому вигляді, такий розрив швидко усувається. Існує дві тенденції у веб-технологіях, які забезпечують яскраву особливість мобільного веб-інтерфейсу з точки зору продуктивності:

  1. Двигун JavaScript переходить від інтерпретатора до віртуальної машини. JavaScript - це JIT, зібраний у рідний код для швидшого виконання. Двигун Safari JS: SquirrelFish Extreme

  2. Візуалізація веб-сторінок переходить від опори на процесор до використання прискорення GPU. Графічні інтенсивні завдання, такі як перехід сторінки та 3D-анімація, стають значно плавнішими за допомогою апаратного прискорення. Прискорене компонування GPU у Chrome

Такі вдосконалення, що виникають із настільних браузерів, швидко доставляються до мобільних браузерів. Насправді, починаючи з iOS 3.2 та Android 2.0, контроль перегляду веб-сайтів для мобільних пристроїв став набагато ефективнішим та зручнішим для HTML5. Майбутнє мобільного Інтернету настільки перспективне, що воно привернуло велику дитину до міста: JQuery нещодавно оголосив про свою мобільну веб-структуру. З JQuery Mobile, що надає гаджети інтерфейсу користувача, і PhoneGap, що забезпечують функції телефону, вони, на моє переконання, створюють ідеальну мобільну веб-платформу.

Я також повинен згадати Sencha Touch як іншу структуру ґаджетів для мобільного інтерфейсу. Версія 1.0 Sencha Touch 1.0 була нещодавно випущена в рамках моделі подвійного ліцензування, яка включає GPLv3. Sencha Touch добре працює з PhoneGap так само, як це робить JQuery Mobile.

Якщо ви програміст GWT (як я), ви можете перевірити GWT Mobile , проект з відкритим кодом для створення мобільних веб-додатків із GWT. Він включає обгортку PhoneGap GWT, яка дозволяє використовувати PhoneGap в GWT.


10
Гм ... ви кажете, що "PhoneGap - це не просто вбудована обгортка веб-програми". Ви продовжуєте обговорювати доступ, який він надає функціональному пристрою. Я думаю, що я висвітлював це, коли писав: "Те, що надає PhoneGap, є тим, що є мостом між API JavaScript і власними пристроями. Отже, ви пишете JavaScript проти API API PhoneGap, а потім PhoneGap здійснює відповідний відповідний виклик. У цьому відношенні це відрізняється від розгортання звичайного старого веб-додатка. " Якщо ви зареєструвались просто для того, щоб спростувати мою заяву, ви повинні її прочитати в повному обсязі. Я знаю, що мої пости довгі, але ... все ж.
Рорі Блайт

5
Я міг би бути зрозумілішим, але деталі того, які API є складними, оскільки він змінювався в часі від пристрою до пристрою, що можна зробити (він значно покращився, але матриця функцій для різних платформ зазнала досить багато змін). Я писав про одну з ключових відмінностей, і те, що я написав, є правильним - насправді це відповідає тому, що ви написали. Ви просто детальніше розібралися про те, до яких API ви можете отримати доступ.
Rory Blyth

9
Що стосується Titanium та "рідних біт", то, мабуть, моя помилка читала це на їхньому сайті - прямо на головній сторінці для Appcelerator: "вони чудово працюють, тому що ми компілюємо Titanium до нативного коду для пікової продуктивності". Можливо, вам слід написати їм, щоб вони повідомили, що вони помиляються. Перевірте це: tinyurl.com/yzlzvk5
Rory Blyth

6
Для отримання додаткової інформації ознайомтеся з поширеними запитаннями про Titanium - першою темою, "Чи є ці мобільні веб-сайти чи мобільні додатки для мобільних пристроїв". Я б переписав тут цитату, але, думаю, ви краще отримаєте її безпосередньо від компанії, оскільки вони, я вважаю, є владою щодо їх продукту: tinyurl.com/ya9topg
Rory Blyth,

4
Деннісе, дякую за чудову відповідь. Ви все ще розвиваєтеся з титаном? Чи можете ви прокоментувати зараз, що 1,7 приземлилося?
PaulM

193

Ось, що я зібрав, ось деякі відмінності між цими двома:

  • В основному PhoneGap генерує власні обгортки для тих, що ще є веб-додатками . Він викладає проект WeverYourPlatformIs, ви створюєте його та розгортаєте. Якщо ми говоримо про iPhone (саме там я провожу свій час), це не дуже відрізняється від створення програми запуску веб-додатків (ярлик, який отримує власну піктограму Springboard, так що ви можете запустити його як ( як ) рідний додаток). Сам "додаток" все ще є html / js / тощо., І працює всередині керованого елемента керування браузером. Те, що надає PhoneGap, - це міст між API JavaScript і власним пристроєм. Отже, ви пишете JavaScript проти API API PhoneGap, а потім PhoneGap здійснює відповідний відповідний вихідний дзвінок. В цьому відношенні він є відрізняється від розгортання простий старий веб - додаток.

  • Джерело титану збирається до рідних бітів. Тобто ваш html / js / тощо. не просто приєднуються до проекту, а потім розміщуються всередині керування веб-браузером - вони перетворюються на власні програми. Це означає, наприклад, що інтерфейс вашого додатка буде складатися з нативних компонентів інтерфейсу користувача. Існують способи отримання нативного вигляду, не маючи нативного додатка, але ... ну ... який кошмар, як правило, виявляється.

Вони схожі тим, що ви пишете всі свої речі за допомогою типових веб-технологій (html / js / css / bla bla bla), і що ви отримуєте доступ до нативного функціоналу через користувальницькі API API.

Але, знову ж таки, програми PhoneGap (PhonGapps? Я не знаю ... це дурне ім’я? Простіше сказати - я це знаю дуже багато) починають своє життя як веб-програми та закінчують своє життя як веб-додатки. На iPhone ваш html / js / тощо. просто виконується всередині елемента UIWebView, а API-адреси JavaScript PhoneGap, ваші js-дзвінки, переспрямовуються на рідні API.

Програми з титану стають власними програмами - вони тільки що розроблені за допомогою технологій веб-розробників.

Що це насправді означає ?

  1. Титанове додаток буде виглядати як «реальне» додаток , тому що, в кінцевому рахунку, це є «реальним» додатком.

  2. PhoneGap додаток буде виглядати як веб - додаток , поселили в елементі управління браузера , тому що, в кінцевому рахунку, це є веб - додаток , поселили в елементі управління браузера.

Що підходить саме вам?

  • Якщо ви хочете писати рідні програми, використовуючи навички веб-розробників, Titanium - найкраща ставка.

  • Якщо ви хочете написати додаток, використовуючи навички веб-розробників, які ви могли реально розгорнути на декількох платформах (iPhone, Android, Blackberry і все, що вони вирішили включити), і якщо ви хочете отримати доступ до підмножини нативних функцій платформи (GPS, акселерометр тощо) через єдиний JavaScript API, PhoneGap - це, мабуть, те, що вам потрібно.

Ви можете запитати: Чому я б хотів написати PhoneGapp (я вирішив використовувати ім'я), а не веб-додаток, який розміщується в Інтернеті? Чи можу я все-таки отримати доступ до деяких функцій нативного пристрою, але також мати зручність справжнього розгортання веб-сайтів, а не змушувати користувача завантажувати "рідне" додаток та встановлювати його?

Відповідь: Тому що ви можете подати PhoneGapp в App Store і стягнути плату за нього. Ви також отримуєте цю піктограму запуску, що робить користувачам складніше забути про ваш додаток (я набагато частіше забуду про закладку, ніж про піктограму програми).

Ви, безумовно, можете стягувати плату за доступ до веб-програми, яка розміщена на веб-сайті, але скільки людей насправді пройде процес, щоб це зробити? За допомогою App Store я вибираю додаток, натискаю кнопку "Купити", вводя пароль і я закінчую. Він встановлюється. Через секунди я його використовую. Якби мені довелося використовувати чужий одноразовий інтерфейс для мобільних веб-транзакцій, що, швидше за все, означає, що потрібно ввести моє ім’я, адресу, номер телефону, номер CC та інші речі, які я не хочу використовувати, я майже напевно не хотів би ' t пройти з цим. Крім того, я довіряю Apple - я впевнений, що Стів Джобс не збирається реєструвати мою інформацію, а потім стягувати купу неслухняних підписок на журнали в моєму CC для ударів.

У будь-якому випадку, за винятком того, що задіяна технологія веб-розробників, PhoneGap та Titanium дуже відрізняються - до того, що вони є лише порівняно поверхневими.

Я ненавиджу веб-додатки, і, якщо ви читаєте відгуки про iTunes App Store, користувачі досить добре їх помічають. Я не буду називати жодних імен, але у мене на телефоні є кілька "додатків", які виглядають і працюють як сміття, і це тому, що це веб-додатки, розміщені всередині екземплярів UIWebView. Якби я хотів використовувати веб-додаток, я б відкрив Safari і, знаєте, перейшов до одного. Я купив iPhone, тому що хочу речі, які є iPhone-y. Я не маю жодних проблем використовувати, скажімо, запаморочливий веб-додаток Google всередині Safari, але я почуваю себе обдуреним, якщо Google просто снув закладку на Springboard, представивши веб-додаток як рідний.

Треба йти зараз. Моя подруга на три секунди виглядає на обличчі, що могло б, будь ласка, перестати використовувати комп'ютер.


22
Проблема з відповіддю полягає в тому, що в основному це НЕПРАВНО. Дивіться відповідь DennisJZH нижче.
jbwiv

9
@jbwiv - Проблема у вашому коментарі полягає в тому, що він здебільшого ґрунтується на відповіді DennisJZH, яка здебільшого НЕМАЄ. Дивіться мої відповіді нижче. Щоб уникнути подальшої плутанини, я б запропонував вам поглянути на офіційну документацію щодо продуктів, а також прочитати мою публікацію повністю . Велике спасибі.
Rory Blyth

15
@Matthew - О, gf, безумовно, має пріоритет :) Що стосується цих питань, в основному не важливих, оскільки зміни відбуваються (якщо я неправильно зрозумів ваше значення, вибачаюся), факт полягає в тому, що люди хочуть відповіді на питання, які існують зараз. Ми можемо стверджувати, що нічого з цього не має значення, оскільки Земля просто збирається в майбутньому варити Сонце, оскільки воно спалює паливо та розширюється, знищуючи нашу планету, але ... це дає нам щось робити, поки ми чекаємо.
Rory Blyth

2
@Matthew - Крім того , ця людина є бажання спробувати щось щось нове. Це може бути не так, як ви віддаєте перевагу, але все-таки нове. Вам все ще доведеться дізнатися про розробку iPhone (читайте документи про вказівки щодо користувальницького інтерфейсу тощо). Немає жодних обгрунтованих причин намагатися відвернути когось із спроб щось зробити лише тому, що ви не бачите в ньому цінності. Наприклад, я ненавиджу гриби, але не намагаюся заважати іншим їсти їх. Я розумію, що їм подобаються гриби так само, як я люблю шафран, і я знаю, що не хочу, щоб хтось намагався забрати шафран у мене тільки тому, що їм це не подобається.
Rory Blyth

1
Так, але якщо ви справжній майстер веб-технологій, я впевнений, що ніхто не зможе зрозуміти, що ваш "веб-додаток" насправді не є рідним додатком. У тих випадках, коли очевидно, що додаток - це "веб-додаток", загорнутий у UIWebView, то це означає, що творець не витратив часу або подбав про те, щоб зробити його досить якісним.
trusktr

62

Я беру курс на розробку Android / iPhone, і ми провели 8 тижнів з Titanium (не повний робочий день) (версія Titanium 1.4.2, а час - близько листопада 2010 року). Ось мій досвід.

Подвійне націлювання на Android на iPhone

Хоча посібники API стверджують, що функціонал доступний і для Android, і для iPhone, це не так. Значна частина матеріалів просто не працює на одній з платформ. Деякі речі працюють інакше.

Дуже багато людей у ​​класі зробили додатки для iPhone, і вони не можуть змусити їх працювати на Android без великих переписувань. Я розробив простий дитячий додаток під назвою Animap (див. Ринок Android / Appstore у Швеції) і почав розробку під Windows. Як тільки ціль Android працювала, я відкрив проект на OS X. У ньому не відображаються будь-які складові для iPhone, лише для Android. Потрібно запустити подвійний цільовий проект в ОС X. (Добре, я скопіював відповідні файли в новий проект). Наступна проблема - анімації не працюють на iPhone (вони працюють на Android). Події прокрутки не працюють однаково на iPhone. (тобто на Android ви отримуєте подію недоторкання, коли користувач перестає прокручувати та відпускає палець з екрану, цього не відбувається на iPhone).

Оскільки це десь не згадується, вам в основному потрібно робити пробне та помилкове програмування спочатку на одній платформі, а потім на іншій платформі. За допомогою спроб і помилок я маю на увазі, що для отримання такого простого додатка, як Animap, що працює на іншій платформі, знадобиться близько двох днів. Вам також потрібно мати if (android), то ... або якщо (iphone) ... у всьому коді ...

Завантаження та налаштування

Ви повинні слідувати вказівкам до листа. Не намагайтеся використовувати java 64 біт. Він не буде компілювати демонстраційну програму KitchenSink 1.4.0. (1.3 працює добре!) Ви повинні розміщувати файли безпосередньо на диску C, оскільки довгі імена шляху дозволять зовнішній програмі не отримувати всіх параметрів командного рядка, якщо вони дістаються до довгих. (Хоча добре для невеликих програм) 1/3 разів, ланцюжок інструментів просто зупиняється, і вам потрібно знову натиснути «запуск». Тоді це, мабуть, спрацює ... дуже ненадійно. Симулятор не знайдеться під час запуску, і тоді потрібно просто вбити adb.exe за допомогою Ctrl + Alt + Delete та повторити спробу.

Підключення до мережі

У мережі Wi-Fi ви іноді втрачаєте пряме з'єднання, і Titanium виходить з ладу на вас (інтерфейс компіляції / розгортання). Якщо у вас немає робочого інтернету, він не запуститься, оскільки він не зможе увійти в систему на своїх серверах.

API

CSS, HTML і jQuery - вітер порівняно з цим. Титан нагадує будь-який інший старий інтерфейс GUI, і вам потрібно встановити деякі властивості для кожної кнопки / поля / тощо. Помилка поля - це просто, пам’ятаючи всі властивості, які потрібно встановити? Ви написали це великими літерами в потрібному місці? (оскільки компілятор не сприймає це, але він буде сприйматися як помилка виконання, якщо вам пощастить перевірити цю частину)

У Titanium речі просто порушуються, коли ви додаєте інший вигляд поверх елемента керування або клацніть десь ще в графічному інтерфейсі.

Документація

Кілька сторінок API містять символ Android, але вони повернуть нуль лише при спробі створити елемент керування. Вони не просто доступні на платформі Android, незважаючи на символи. Іноді Android згадується, щоб він не підтримував певний метод, але тоді весь API відсутній.

Кухонна мийка

Демонстраційний додаток. Я згадав, що він не компілюється, якщо ви помістите його в папку проектів Eclipse, оскільки шлях стає занадто довгим? Потрібно поставити на свій диск C у кореневій папці. На даний момент я використовую посилання symbolik (mklink / J ...)

Недокументовані методи

Ви повинні широко використовувати речі як label.setText ("Hello World"), щоб змінити мітку надійною, але це зовсім не документально.

Налагодження

Titanium.API.info ("Роздруківки - єдиний спосіб налагодження");

Редагування

API не доступні в будь-якому хорошому форматі, тому ви не можете отримати звичайне доповнення коду за допомогою допомоги тощо в Eclipse. Аптана, будь ласка, допоможіть!

Обладнання

Здається, що компілятор / інструменти не є багатопотоковими, тому швидкий комп'ютер із швидким жорстким диском є ​​обов'язковим, тому що ви повинні зробити багато проб і помилок. Я згадував погану документацію? Ви повинні спробувати все там, оскільки ви не можете довіряти цьому!

Деякі позитивні речі

  • Відкрите джерело
  • З попередніх проектів я пообіцяв собі, що ніколи більше не буду використовувати закритий джерело, оскільки ви не можете просто виправити речі, просто кинувши на це години та робочу силу. Важливо, коли ви запізнюєтесь на проект і вам потрібно поставитись за важкий термін. Це з відкритим кодом, і я зміг зрозуміти, чому ланцюг інструментів ламається, і насправді це виправити.

  • Bugdatabase

  • Він також відкритий. Ви можете просто побачити, що ви не самотні і вирішуєте рішення замість ще 4 годин, витрачених на випробування та помилки.

  • Громада

  • Здається, активно на своїх форумах.

Клопи

  • Титан 1.4 не є безпечним для потоків . Це означає, що якщо ви використовуєте потоки (використовуйте url: властивість у виклику createWindow) та програмуйте так, як потоки працюють і надсилають події з даними вперед і назад, ви натрапляєте на безліч дуже-дуже дивних речей - втрачені обробники, загублені windows, занадто багато подій, занадто мало подій і т. д. Це все залежить від термінів, якщо розміщення рядків коду в іншому порядку може збіти або залікувати вашу програму. Додавання вікна в інший file.js порушує ваше виконання app.js ... Це також втрачає внутрішні структури даних у Titanium, оскільки вони іноді можуть оновлювати внутрішні структури даних у паралелі, замінюючи щойно змінене значення чимось іншим.

Більшість проблем, які виникли у мене з Titanium, виникають з мого досвіду в таких системах, як OSE, які підтримують сотні потоків, подій та передачі повідомлень. Це повинно працювати в Titanium 1.4, але це просто не робиться надійно.

  • Javascript (який для мене новий) вмирає мовчки під час помилок виконання. Це також означає, що невеликі та поширені помилки, такі як неправильне написання імені змінної чи читання в нульовому покажчику, не збиваються, коли слід, і ви можете налагодити це. Натомість частини вашої програми просто перестають працювати, наприклад, eventhandler, тому що ви неправильно ввели / неправильно ввели персонаж.

  • Тоді у нас є більш прості помилки в Titanium, як і деякі параметри, які не працюють у функціях (що досить часто зустрічається на платформі Android).

  • Швидкість циклу налагодження проб і помилок Після запуску програми Titnium Developer на кількох комп'ютерах я помітив, що вузьким місцем є жорсткий диск. SSD-накопичувач на ноутбуці робить цикл збирання приблизно в 3-5 разів швидшим, ніж на 4200 об / хв. На робочому столі наявність подвійних накопичувачів в RAID 1 (смугастий режим) робить збірку приблизно на 25 відсотків швидшою, ніж на одному диску з дещо швидшим процесором, а також він обіграє ноутбук накопичувача SSD.

Підсумок

  • З коментарів у цій темі, мабуть, ведеться боротьба за кількість платформ, за допомогою яких інструмент, подібний цій, може забезпечити додаток. Кількість API здається ключовою точкою продажу.

Це дуже сильно просвічується, коли ви починаєте його використовувати. Якщо ви подивитесь на відкриту помилку, ви побачите, що кількість помилок зростає швидше, ніж кількість виправлених помилок. Зазвичай це знак того, що розробники продовжують додавати більше функціональних можливостей, а не концентруватися на тому, щоб зменшити кількість помилок.

Будучи консультантом, який намагається поставити клієнтам досить прості додатки для багатоплатформних платформ - я не впевнений, що це насправді швидше, ніж займатися розробкою власних додатків на двох платформах. Це пов’язано з тим, що коли ви швидкості, ви швидко з Титанієм, але потім раптом дивитесь вниз і опиняєтесь в глибокій норі, що не знаєте, скільки годин потрібно витратити на вирішення проблеми. Ви можете просто НЕ обіцяти певну функціональність протягом певного терміну / часу / вартості.

Про себе: Я два роки використовував Python з wxPython. (що GUI непомітний, але ніколи не ламається так. Можливо, я не зрозумів модель нарізки, яку використовують Javascript і Titanium, але я не один, згідно з їхніми форумами відкритих дискусій, об’єкти GUI раптом використовують неправильний контекст / не оновлювавшись ... ???) до цього у мене є досвід програмування на C та ASM для мобільних пристроїв.

[редагувати - додана частина з помилками і не захищена нитками] [Редагувати - зараз працюю з нею місяць +, в основному на ПК, але деякі і на OS X. Додано подвійне таргетування iPhone та Android. Додано швидкість циклу налагодження проб і помилок.]


1
З 1.4 випуску Titanium я тепер роздивився файли .apk, доставлені з Titanium, і вони просто не дуже хороші. Вони працюють, але повний каталог збірки начебто зв'язаний між собою. Це означає, що незначні недоліки в збірці, такі як копіювання екрана заставки в три різні місця під час збирання, раптово втрачають, оскільки у мене є велике зображення на екрані вибуху, приблизно 1 мег зберігання в телефоні. І це лише для дуже простого варіанту привіт-світу. Вихідний код javascript також копіюється у склади та у файли .apk і таким чином доставляється всім клієнтам.
користувач288299

Випуск 1.5 зараз вийшов, і, як кажуть, він є основним переписом для платформи Android. Я не перевірятиму це, оскільки мені зараз потрібно вивчити нативну розробку Android.
user288299

Випуск 1.5 зараз вийшов, і, як кажуть, він є основним переписом для платформи Android. Я не буду перевіряти це, оскільки ми вже перейшли до вивчення нативного розробки Android. Оскільки ми сьогодні вчили про життєвий цикл на рідному Android, я вважаю, що проблеми, які виникли у мене, коли деякі вікна втрачали змінний вміст вдруге, коли вони відображалися, були спричинені тим, що Titanium не врятував стан перед станом життєвого циклу onPause (). developer.android.com/guide/topics/fundamentals.html#lcycles . Виклик Titanium.Map.MapView.hide () та пізнішого show () може просто знищити ваші локальні змінні для карти
user288299

1
Щойно зіграли з 1.7, ваш опис так правильний. Ця платформа дуже вражена і пропущена, з жахливою продуктивністю та незліченною кількістю годин роботи над пошуком. Якщо у вас є ресурси на початку проекту, створіть нативну для кожної платформи.
Джонатан Креснер

25

Корона SDK (Ansca Mobile) використовує Lua як свою мову кодування. Більше про Lua див. На lua.org.

Поки ми плануємо додавати подальшу веб-інтеграцію та натільні елементи інтерфейсу користувача, наша увага буде спрямована на графічно інтенсивні додатки, такі як розробка ігор, на відміну від веб-технологій. Іншими словами, ми не передбачаємо, щоб люди писали додатки Corona повністю у Javascript / HTML / CSS.


Чи є у вас план або часовий шкала для створення нативного сценарію інтерфейсу користувача. Я дуже багато зробив з Луєю і дуже хочу любити Корону. Що стосується неігрових розробок, Titanium здається трохи попереду.
уроч

4
Привіт, уроче. У нас випущені вбудовані функції інтерфейсу користувача, які надходять у випуску 1.1 (ETA пізніше цього тижня!), І незабаром ще багато чого. Однак, моє відчуття Titanium полягає в тому, що вони виконали хорошу роботу, розкриваючи велику кількість нативних елементів інтерфейсу користувача, тоді як ми збираємось зосередитись на найважливіших елементах інтерфейсу, одночасно вкладаючи більше інженерних зусиль у функції анімації та рендерінгу. Аргументація полягає в тому, що (i) вже є хороші продукти для додатків, призначених лише для користувальницького інтерфейсу, (ii) користувальницький інтерфейс є найдружнішою частиною какао (відносно кажучи!), Але (iii) все, що стосується анімації OpenGL, є больовим моментом на iPhone у мить.
Еван Кірхгофф

здається, Корона підходить для розробки гри замість програми, чи правильно?
антикафе

18

Я працюю з Титанієм вже більше тижня і відчуваю, що добре відчуваю його слабкість.

1) Якщо ви сподіваєтесь, що використовуєте один і той же код на кількох платформах, удачі! Ви побачите щось на кшталт backgroundGradient і здивуєтеся, поки не дізнаєтесь, що версія Android не підтримує це. Тоді доведеться повернутися до використання градієнтного зображення, а також використовувати його для обох версій, щоб полегшити код?

2) Дуже багато дивного поведінки, на титановому Android android sdk вам потрібно зрозуміти, що таке "важке" вікно просто для того, щоб повернути кнопку "назад" для роботи або ще краще відстеження подій орієнтації. Це не так, як насправді платформа Android, а так, як Titanium намагається зробити так, щоб їх API працював.

3) Ваша кинута в темряві річ зірветься, і ви повинні почати коментувати код, а потім, коли знайдете його, ніколи не використовуйте його. Існують певні очевидні помилки, такі як орієнтація та відсоток на андроїд, які є проблемою вже понад півроку.

4) Про помилки .... Про помилок дуже багато, і про них повідомлять, сидять місяцями, виправляються через кілька днів. Я здивований, що вони навіть планують випустити мобільний sdk з чорної ягоди, коли існує стільки інших проблем з Android.

5) Титановий Iphone порівняно з титановими javascript двигунами для Android від Android. У версії Android можна завантажувати віддалені файли javascript, включати та використовувати бібліотеки, такі як mootools, jquery тощо. Я був на небі, коли дізнався це, тому що мені не довелося продовжувати збирати додаток для Android. Процес установки Android apk займає так довго! Iphone нічого з цього неможливо, також версія iphone має набагато швидший механізм javascript.

Якщо ви тримаєтесь подалі від багатьох рідних частин користувальницького інтерфейсу, тобто замість цього використовуйте setInterval для виявлення змін орієнтації, дотримуючись градієнтних зображень, забудьте про кнопку назад, побудуйте власну анімацію, забудьте заголовок вікна, панелі інструментів і панель інструментів. Ви дійсно можете зробити api, який працює як на тому, що не вимагає багато переписування. Але в цьому моменті це так само мляво, як і webapp.

Так чи варто це? Адже біль, її варто щохвилини. Ви можете абстрагувати логіку і просто побудувати різний інтерфейс для кожного, а не якщо скрізь. Титан дозволяє робити рідини, які швидко почуваються. Ви втрачаєте потужні здібності компонування кожної платформи, але якщо вам здається простим, все можна зробити на одній мові.

Чому б не веб-додаток? На ринку початкового рівня андроїдні телефони страшенно повільно генерують веб-перегляд і споживають багато пам’яті, яку ви могли б використовувати, щоб зробити складнішу логіку.




8

Зробити віджети HTML5 схожими на віджети iphone - це одне, але змусити їх працювати однаково добре - це зовсім інша справа. Виконання анімації html5 (навіть звичайний перегляд переходів), прокрутка довгих списків, чутливість до жестів відчуває себе липким і ривком. Користувач iPhone помітить різницю.

Існують також деякі відмінності у видах жестів, які підтримуються різними пристроями, що призводить до певного коду платформи та проблем зручності використання.

Напевне, я зараз залишатимусь з рідними програмами.


7

Rhomobile Rhodes ( http://rhomobile.com/products/rhodes ) дуже схожий за підходом до PhoneGap, але є єдиною основою з:

  1. модель контролера перегляду моделі (як надає більшість веб-рамок)
  2. Менеджер об'єктів реляцій
  3. підтримка всіх популярних смартфонів (включаючи Windows Phone 7)
  4. розміщена послуга розвитку (не тільки розміщена версія): http://rhohub.com
  5. повний налагоджувач і емулятор без SDK в RhoStudio IDE
  6. підтримка синхронізованих даних офлайн

6

Для всіх, хто цікавиться Titanium, я повинен сказати, що у них не дуже хороша документація, деякі класи, властивості та методи відсутні. Але дуже багато "задокументовано" у їх прикладі зразка KitchenSink, так що це НЕ ТАКОГО погано.


5

Я розумію, що PhoneGap полягає в тому, що вони надають API Javascript для більшості API-програм iPhone.

Титан здається простішим для фону веб-розробників. Це простий XML-файл для створення базової програми TabView, і тоді все в області вмісту контролюється HTML / JS. Я також знаю, що Titanium надає доступ до javascript до деяких фреймворків (зокрема, доступ до інформації про місцезнаходження, ідентифікатора телефону тощо).

ОНОВЛЕННЯ: Titanium додав API Maps у версії 0.8 своєї бази.


Відповідно до "Титану здається, що простіше для веб-розробника". заява. Ви маєте на увазі легше, ніж рідне? Оскільки PhoneGap, здається, більше відповідає тому, хто має фоновий веб-розробник, ніж Titanium ...
Сергій

4

Ви повинні вивчити об'єктивні програми c та програмувати. Не покладайтеся на ці речі, які, на вашу думку, полегшать життя. Apple переконалася, що найпростішим способом є використання рідних інструментів та мови. Для ваших 100 рядків javascript я можу зробити те саме в 3 рядках коду або взагалі без коду залежно від елемента. Перегляньте кілька навчальних посібників - якщо ви розумієте JavaScript, то ціль c не є складною. Обхідні проблеми нещасні, і яблуко може натягнути вилку на вас у будь-який час.


3
Apple може витягнути штепсельну вилку ... ось що я стосуюся
Міккі Шійн

6
Цитата: "Apple переконалася, що найпростішим способом є використання рідних інструментів та мови". Вони насправді цього не зробили. Якби вони хотіли це зробити, вони надавали б, скажімо, підтримку Python. Там буде збирання сміття (що одне лише зменшило б частоту збоїв - більшість додатків для iPhone написано жахливо). Я копаю ObjC, і, як ти, я б скоріше використовував його, ніж js, але це не було питанням оператора. Також MonoTouch полегшує розробку, ніж будь-який із цих варіантів. Я можу створити властивість в одному рядку; отримати посилання на папку "Документ" одним рядком ... і так далі. Біти Apple можуть бути значно покращені.
Rory Blyth

6
Хорошим рішенням було б для Apple запропонувати власну альтернативу ObjC. Щось для додатків, яким не потрібен рівень контролю, який дає вам ObjC. Особливо для корпоративних програм, де розробники повинні зосереджуватись на функціональності, а не на підрахунку довідок та атрибутах властивостей. Або принаймні автоматизувати більшість із цього за допомогою Xcode та компілятора. Дайте мені перемикач, який дозволяє робити певні припущення, які можна обійти кодом, де вибирає розробник (наприклад: зберегти та @synthesize мої властивості об'єкта за замовчуванням - і, як "справжній" ObjC 2.0, створити мої резервні місцеві жителі для мене). І т. Д.
Rory Blyth

2
В основному те, що ви говорите, давайте запишемо додатки для iPhone в C #. :)
Джастін

3

Згаданих рішень жодне з них не надає прямого доступу до фреймворку MapKit, представленого в ОС 3.0.

Оскільки HTML-віджети Google Maps не настільки гарні, як MapKit (див. Приклад Google Latitude), вам, мабуть, найкраще розробити вбудовану програму Cocoa touch або вибрати рішення, яке ви можете розширити, щоб додати інтеграцію MapKit. Таким чином, PhoneGap можна розширити (він є відкритим кодом, тому він за замовчуванням), а також можуть бути і деякі інші рішення.

редагувати: Titanium тепер підтримує MapKit


Дякую. Але чи є істотна різниця між PhoneGap і Titanium?
Міккі Шійн

1
MapKit був доступний у титані вже давно.
jhaynie

@jhaynie: Дякую Я переглянув цю відповідь, щоб відобразити, що зараз у Titanium є підтримка (не було, коли це було написано у вересні)
rpetrich

1

Я спробував корону. Це було добре, поки я не виявив, що він не підтримує потокове аудіо в mp3. Отже, я зупинився саме там. Я думаю, що якщо я дійсно хочу бути розробником додатків для iphone, я повинен навчитися obj c. Все, що я хотів зробити, додаток, у якому є список радіостанцій, і ви натискаєте на них, щоб почати програвати.


2
Corona підтримує відтворення MP3-файлів ( developer.anscamobile.com/reference/index/mediaplaysound )
Люк Степнєвський
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.