Perbandingan antara Corona, Phonegap, Titanium


310

Saya seorang pengembang web dan saya ingin memindahkan produk web saya ke iPhone. Salah satu produknya seperti Google Maps: tampilkan peta di layar ponsel, Anda dapat menarik atau mengubah ukuran peta dan melihat beberapa informasi yang kami tambahkan ke peta.

Saya tahu ada beberapa teknologi yang memungkinkan Anda menggunakan HTML, CSS, dan Javascript untuk mengembangkan aplikasi iPhone asli. Saya telah mengidentifikasi beberapa:

Apakah ada produk serupa lainnya? Apa perbedaan di antara mereka? Yang mana yang harus saya pilih?


1
Ada juga Adobe FLEX, yang dapat menghasilkan aplikasi iPhone pada Juni 2011. adobe.com/products/flex
neoneye

1
Saksikan berikut ini. Bung di sini adalah perbandingan to the point. savagelook.com/blog/portfolio/…
Hikmat Khan

Jawaban:


368

Saya mendaftar dengan stackoverflow hanya untuk tujuan mengomentari jawaban yang paling banyak dipilih di atas. Yang buruk adalah stackoverflow tidak mengizinkan anggota baru untuk mengirim komentar. Jadi saya harus membuat komentar ini lebih seperti jawaban.

Jawaban Rory Blyth berisi beberapa poin valid tentang dua kerangka kerja javascript seluler. Namun, poin kuncinya salah. Yang benar adalah bahwa Titanium dan PhoneGap lebih mirip daripada berbeda. Keduanya memaparkan fungsi ponsel melalui serangkaian API javascript, dan logika aplikasi (html, css, javascript) berjalan di dalam kontrol WebView asli.

  1. PhoneGap bukan hanya pembungkus asli aplikasi web. Melalui API javascript PhoneGap, "aplikasi web" memiliki akses ke fungsi ponsel seperti Geolokasi, Kamera Akselerometer, Kontak, Basis Data, sistem file, dll. Pada dasarnya semua fungsi yang disediakan SDK ponsel dapat "dijembatani" ke dunia javascript. Di sisi lain, aplikasi web normal yang berjalan di browser web seluler tidak memiliki akses ke sebagian besar fungsi ini (keamanan menjadi alasan utama). Karena itu, aplikasi PhoneGap lebih merupakan aplikasi seluler daripada aplikasi web. Anda tentu dapat menggunakan PhoneGap untuk membungkus aplikasi web yang sama sekali tidak menggunakan API PhoneGap, tapi bukan itu tujuan PhoneGap dibuat.

  2. Titanium TIDAK mengkompilasi kode html, css atau javascript Anda menjadi "bit asli". Mereka dikemas sebagai sumber daya ke bundel yang dapat dieksekusi, mirip seperti file gambar tertanam. Ketika aplikasi berjalan, sumber daya ini dimuat ke kontrol UIWebView dan dijalankan di sana (sebagai javascript, bukan bit asli, tentu saja). Tidak ada yang namanya kompiler javascript-to-native-code (atau to-objective-c). Ini dilakukan dengan cara yang sama di PhoneGap juga. Dari sudut pandang arsitektur, kedua kerangka ini sangat mirip.

Sekarang, apakah mereka berbeda? Iya. Pertama, Titanium tampaknya lebih kaya fitur daripada PhoneGap dengan menjembatani lebih banyak fungsi ponsel ke javascript. Yang paling mencolok, PhoneGap tidak mengekspos banyak komponen UI asli (jika ada) ke javascript. Titanium, di sisi lain, memiliki API UI komprehensif yang dapat dipanggil dalam javascript untuk membuat dan mengontrol semua jenis kontrol UI asli. Memanfaatkan API UI ini, aplikasi Titanium bisa terlihat lebih "asli" daripada aplikasi PhoneGap. Kedua, PhoneGap mendukung lebih banyak platform ponsel daripada Titanium. API PhoneGap lebih umum dan dapat digunakan pada platform yang berbeda seperti iPhone, Android, Blackberry, Symbian, dll. Titanium terutama menargetkan iPhone dan Android setidaknya untuk saat ini. Beberapa API-nya adalah platform spesifik (seperti API iPhone UI).

Jadi, jika kepedulian Anda terhadap aplikasi Anda adalah menjadikannya lebih "asli", Titanium adalah pilihan yang lebih baik. Jika Anda ingin dapat "port" aplikasi Anda ke platform lain dengan lebih mudah, PhoneGap akan lebih baik.

Diperbarui 8/13/2010: Tautan ke jawaban karyawan Titanium untuk pertanyaan Mickey.

Diperbarui 12/04/2010: Saya memutuskan untuk memberikan posting ini tinjauan tahunan untuk menjaga informasinya tetap terkini. Banyak hal yang mengalami perubahan dalam setahun yang membuat sebagian informasi di pos awal menjadi usang.

Perubahan terbesar datang dari Titanium. Awal tahun ini, Appcelerator merilis Titanium 1.0, yang berangkat secara drastis dari versi sebelumnya dari sudut pandang arsitektur. Di 1.0, kontrol UIWebView tidak lagi digunakan. Sebagai gantinya, Anda memanggil Titanium API untuk fungsi UI apa pun. Perubahan ini berarti beberapa hal:

  1. UI aplikasi Anda menjadi sepenuhnya asli. Tidak ada lagi UI web di aplikasi Anda karena Titanium API asli mengambil alih kendali semua kebutuhan UI Anda. Titanium layak mendapatkan banyak pujian dengan memelopori perbatasan "Cross-Platform Native UI". Ini memberi programmer yang lebih suka tampilan dan nuansa UI asli tetapi tidak suka bahasa pemrograman resmi alternatif.

  2. Anda tidak akan dapat menggunakan HTML atau CSS di aplikasi Anda, karena tampilan web hilang. (Catatan: Anda masih dapat membuat tampilan web di Titanium. Tetapi ada beberapa fitur Titanium yang dapat Anda manfaatkan dalam tampilan web.) Tanya Jawab Titanium: Apa yang terjadi dengan HTML & CSS?

  3. Anda tidak akan dapat menggunakan pustaka JS populer seperti JQuery yang mengasumsikan keberadaan objek DOM. Anda terus menggunakan JavaScript sebagai bahasa kode Anda. Tapi itu cukup banyak satu-satunya teknologi web yang dapat Anda manfaatkan jika Anda datang ke Titanium 1.0 sebagai programmer web.

Video titanium: Apa yang baru dalam Titanium 1.0.

Sekarang, apakah Titanium 1.0 mengkompilasi JavaScript Anda menjadi "bit asli"? Tidak. Appcelerator akhirnya mengetahui masalah ini dengan blog pengembang ini: Titanium Guides Project: JS Environment. Kami programmer lebih banyak orang yang asli daripada yang ada di departemen Pemasaran, bukan? :-)

Pindah ke PhoneGap. Tidak ada banyak hal baru untuk dikatakan tentang PhoneGap. Persepsi saya adalah bahwa pengembangan PhoneGap tidak terlalu aktif sampai IBM naik pada akhir tahun ini. Beberapa orang bahkan berpendapat bahwa IBM berkontribusi lebih banyak kode ke PhoneGap daripada Nitobi. Itu benar atau tidak, ada baiknya mengetahui bahwa PhoneGap sedang aktif dikembangkan.

PhoneGap terus mendasarkan dirinya pada teknologi web, yaitu HTML, CSS dan JavaScript. Sepertinya PhoneGap tidak memiliki rencana untuk menjembatani fitur UI asli ke JavaScript seperti yang dilakukan Titanium. Sementara Web UI masih tertinggal dari UI asli pada kinerja dan tampilan dan nuansa asli, kesenjangan seperti itu sedang ditutup dengan cepat. Ada dua tren dalam teknologi web yang memastikan fitur cerah ke UI web seluler dalam hal kinerja:

  1. Mesin JavaScript bergerak dari interpreter ke mesin virtual. JavaScript adalah JIT yang dikompilasi menjadi kode asli untuk eksekusi yang lebih cepat. Mesin Safari JS: SquirrelFish Extreme

  2. Render halaman web bergerak dari mengandalkan CPU ke menggunakan akselerasi GPU. Tugas intensif grafis seperti transisi halaman dan animasi 3D menjadi jauh lebih lancar dengan bantuan akselerasi perangkat keras. Komposisi yang Dipercepat GPU di Chrome

Perbaikan seperti itu yang berasal dari browser desktop sedang dikirim ke browser ponsel dengan cepat. Bahkan, sejak iOS 3.2 dan Android 2.0, kontrol tampilan web seluler menjadi jauh lebih berkinerja dan ramah HTML5. Masa depan web seluler sangat menjanjikan sehingga menarik anak besar ke kota: JQuery baru-baru ini mengumumkan kerangka web selulernya. Dengan JQuery Mobile yang menyediakan gadget UI, dan PhoneGap yang menyediakan fitur telepon, keduanya digabungkan menciptakan platform web seluler yang sempurna menurut saya.

Saya juga harus menyebutkan Sencha Touch sebagai kerangka kerja gadget web UI seluler lainnya. Sencha Touch versi 1.0 baru-baru ini dirilis di bawah model lisensi ganda yang mencakup GPLv3. Sencha Touch berfungsi dengan baik dengan PhoneGap seperti halnya JQuery Mobile.

Jika Anda seorang programmer GWT (seperti saya), Anda mungkin ingin memeriksa GWT Mobile , proyek sumber terbuka untuk membuat aplikasi web seluler dengan GWT. Ini termasuk pembungkus PhoneGap GWT yang memungkinkan penggunaan PhoneGap di GWT.


10
Um ... Anda mengatakan bahwa "PhoneGap bukan hanya pembungkus asli aplikasi web." Anda melanjutkan untuk membahas akses yang diberikannya ke fungsionalitas perangkat asli. Saya pikir saya membahas hal ini ketika saya menulis: "Apa yang disediakan PhoneGap di luar itu adalah jembatan antara JavaScript dan API perangkat asli. Jadi, Anda menulis JavaScript terhadap API PhoneGap, dan PhoneGap kemudian membuat panggilan asli yang sesuai yang sesuai. Dalam hal ini, itu adalah berbeda dari menggunakan aplikasi web lama biasa. " Jika Anda mendaftar hanya untuk menyangkal pernyataan saya, Anda harus membacanya secara keseluruhan. Saya tahu posting saya panjang, tapi ... tetap saja.
Rory Blyth

5
Saya bisa lebih jelas, tetapi rincian API yang rumit karena bervariasi dari waktu ke waktu dari apa yang dapat Anda lakukan (ini banyak diperbaiki, tetapi fitur matriks untuk platform yang berbeda telah mengalami beberapa revisi). Saya menulis tentang salah satu perbedaan utama, dan apa yang saya tulis benar - pada kenyataannya, itu sesuai dengan apa yang Anda tulis. Anda cukup merinci lebih lanjut tentang API mana yang dapat Anda akses.
Rory Blyth

9
Adapun Titanium dan "bit asli", saya kira kesalahan saya membaca ini di situs mereka - tepat di halaman depan untuk Appcelerator: "mereka berjalan dengan baik karena kami mengkompilasi Titanium ke kode asli untuk kinerja puncak." Mungkin Anda harus menulis kepada mereka untuk memberi tahu mereka bahwa mereka salah. Lihat ini: tinyurl.com/yzlzvk5
Rory Blyth

6
Untuk informasi lebih lanjut, lihat FAQ Titanium - topik pertama, "Apakah ini webapps seluler atau aplikasi seluler asli" membahas masalah ini secara ringkas. Saya akan mengumumkan kutipan di sini, tapi saya pikir Anda lebih suka mendapatkannya dari perusahaan secara langsung, seperti mereka, saya percaya, pihak berwenang pada produk mereka: tinyurl.com/ya9topg
Rory Blyth

4
Dennis, terima kasih atas jawaban yang bagus. Apakah Anda masih berkembang dengan Titanium? Bisakah Anda berkomentar sekarang bahwa 1,7 telah mendarat?
PaulM

193

Dari apa yang saya kumpulkan, berikut adalah beberapa perbedaan di antara keduanya:

  • PhoneGap pada dasarnya menghasilkan pembungkus asli untuk apa yang masih aplikasi web . Itu memuntahkan proyek What'sYourPlatformIs, Anda membangunnya, dan menggunakan. Jika kita berbicara tentang iPhone (yang merupakan tempat saya menghabiskan waktu saya), sepertinya tidak jauh berbeda dengan membuat peluncur aplikasi web (pintasan yang memiliki ikon Springboard sendiri, sehingga Anda dapat meluncurkannya seperti ( seperti )) aplikasi asli). "Aplikasi" itu sendiri masih html / js / etc, dan berjalan di dalam kontrol browser yang di-host. Apa yang disediakan PhoneGap di luar itu adalah jembatan antara JavaScript dan API perangkat asli. Jadi, Anda menulis JavaScript terhadap API PhoneGap, dan PhoneGap kemudian membuat panggilan asli yang sesuai. Dalam hal itu, ini berbeda dari menggunakan aplikasi web lama biasa.

  • Sumber titanium dikompilasi ke bit asli. Yaitu, html / js / etc Anda. tidak hanya dilampirkan ke proyek dan kemudian di-host di dalam kontrol browser web - mereka berubah menjadi aplikasi asli. Itu artinya, misalnya, antarmuka aplikasi Anda akan terdiri dari komponen UI asli . Ada beberapa cara untuk mendapatkan tampilan dan nuansa asli tanpa memiliki aplikasi asli, tapi ... yah ... mimpi buruk yang biasanya ternyata.

Keduanya serupa dalam hal Anda menulis semua hal menggunakan teknologi web biasa (html / js / css / bla bla bla), dan Anda mendapatkan akses ke fungsionalitas asli melalui API JavaScript khusus.

Tapi, sekali lagi, aplikasi PhoneGap (PhonGapps? Saya tidak tahu ... apakah itu nama yang bodoh? Lebih mudah dikatakan - saya tahu banyak) memulai hidup mereka sebagai aplikasi web dan mengakhiri hidup mereka sebagai aplikasi web. Di iPhone, html / js / etc Anda. hanya dijalankan di dalam kontrol UIWebView, dan API JavaScript PhoneGap panggilan js Anda dialihkan ke API asli.

Aplikasi Titanium menjadi aplikasi asli - mereka baru saja dikembangkan menggunakan teknologi web dev.

Apa sebenarnya ini artinya ?

  1. Aplikasi Titanium akan terlihat seperti aplikasi "nyata" karena, pada akhirnya, itu adalah aplikasi "nyata".

  2. Aplikasi PhoneGap akan terlihat seperti aplikasi web yang dihosting di kontrol browser karena, pada akhirnya, itu adalah aplikasi web yang di-host di kontrol browser.

Yang mana yang tepat untuk Anda?

  • Jika Anda ingin menulis aplikasi asli menggunakan keterampilan pengembang web, Titanium adalah taruhan terbaik Anda.

  • Jika Anda ingin menulis aplikasi menggunakan keterampilan pengembang web yang dapat Anda gunakan secara realistis ke berbagai platform (iPhone, Android, Blackberry, dan apa pun yang mereka putuskan untuk dimasukkan), dan jika Anda ingin akses ke subset fitur platform asli (GPS, accelerometer, dll.) melalui API JavaScript terpadu, PhoneGap mungkin adalah yang Anda inginkan.

Anda mungkin bertanya: Mengapa saya ingin menulis PhoneGapp (saya sudah memutuskan untuk menggunakan namanya) daripada aplikasi web yang dihosting di web? Tidak bisakah saya masih mengakses beberapa fitur perangkat asli seperti itu, tetapi juga memiliki kenyamanan penggunaan web yang sebenarnya daripada memaksa pengguna untuk mengunduh aplikasi "asli" saya dan menginstalnya?

Jawabannya adalah: Karena Anda dapat mengirimkan PhoneGapp Anda ke App Store dan membebankan biaya untuk itu. Anda juga mendapatkan ikon peluncur itu, yang membuatnya lebih sulit bagi pengguna untuk melupakan aplikasi Anda (saya jauh lebih mungkin melupakan bookmark daripada ikon aplikasi).

Anda tentu bisa mengenakan biaya untuk akses ke aplikasi web yang dihosting di web, tetapi berapa banyak orang yang benar-benar akan melalui proses untuk melakukan itu? Dengan App Store, saya memilih aplikasi, ketuk tombol "Beli", masukkan kata sandi, dan saya selesai. Itu menginstal. Beberapa detik kemudian, saya menggunakannya. Jika saya harus menggunakan antarmuka transaksi web seluler satu-kali milik orang lain, yang kemungkinan berarti harus mengeluarkan nama, alamat, nomor telepon, nomor CC, dan hal-hal lain yang tidak ingin saya keluarkan, saya hampir pasti tidak akan t pergi dengan itu. Juga, saya percaya Apple - Saya yakin Steve Jobs tidak akan mencatat info saya dan kemudian menagih banyak langganan majalah nakal ke CC saya untuk tendangan.

Pokoknya, kecuali untuk fakta bahwa teknologi web dev terlibat, PhoneGap dan Titanium sangat berbeda - sampai-sampai hanya sebanding secara dangkal.

Saya benci aplikasi web, oleh, dan jika Anda membaca ulasan iTunes App Store, pengguna cukup pandai melihatnya. Saya tidak akan menyebut nama, tetapi saya memiliki beberapa "aplikasi" di ponsel saya yang terlihat dan berjalan seperti sampah, dan itu karena mereka adalah aplikasi web yang di-host dalam instance UIWebView. Jika saya ingin menggunakan aplikasi web, saya akan membuka Safari dan, Anda tahu, menavigasi ke satu. Saya membeli iPhone karena saya menginginkan barang-barang yang iPhone-y. Saya tidak punya masalah menggunakan, katakanlah, aplikasi web Google yang keren di dalam Safari, tetapi saya akan merasa tertipu jika Google hanya menyelipkan bookmark ke Springboard dengan menghadirkan aplikasi web sebagai yang asli.

Harus pergi sekarang. Pacar saya memiliki wajah yang bisa-tolong-berhenti-pakai-komputer-selama-tiga-detik di wajahnya.


22
Masalah dengan jawabannya adalah sebagian besar SALAH. Lihat jawaban DennisJZH di bawah ini.
jbwiv

9
@ jbwiv - Masalah dengan komentar Anda adalah bahwa sebagian besar didasarkan pada jawaban DennisJZH, yang sebagian besar SALAH. Lihat tanggapan saya di bawah ini. Untuk menghindari kebingungan lebih lanjut, saya sarankan Anda melihat dokumentasi resmi untuk produk dan juga membaca posting saya secara penuh . Terima kasih banyak.
Rory Blyth

15
@Matthew - Oh, gf pasti memiliki prioritas :) Adapun pertanyaan-pertanyaan ini pada dasarnya tidak relevan karena perubahan terjadi (jika saya salah mengerti maksud Anda, saya minta maaf), kenyataannya adalah bahwa orang ingin jawaban untuk masalah yang ada saat ini. Kita dapat berargumen bahwa semua ini tidak penting karena Bumi hanya akan dimasak di masa depan oleh Matahari saat ia membakar bahan bakarnya dan mengembang, menghancurkan planet kita, tapi ... ini memberi kita sesuatu untuk dilakukan saat kita menunggu.
Rory Blyth

2
@ Matius - Juga, orang ini mau mencoba hal-hal baru. Mungkin tidak seperti yang Anda inginkan, tetapi masih baru. Anda masih harus belajar tentang pengembangan iPhone (baca dokumen tentang pedoman UI, dll.) Tidak ada alasan yang masuk akal untuk mencoba memalingkan seseorang dari upaya mencapai sesuatu hanya karena Anda tidak melihat nilai di dalamnya. Misalnya, saya benci jamur, tetapi jangan mencoba menghentikan orang lain memakannya. Saya mengerti bahwa mereka suka jamur dengan cara yang sama saya suka safron, dan saya tahu saya tidak ingin ada orang yang mencoba mengambil safron dari saya hanya karena mereka tidak menyukainya.
Rory Blyth

1
Ya, tetapi jika Anda seorang penyihir teknologi web sejati, saya yakin tidak seorang pun akan dapat mewujudkan "aplikasi web" Anda sebenarnya bukan aplikasi asli. Dalam kasus di mana jelas bahwa suatu aplikasi adalah "aplikasi web" yang dibungkus dengan UIWebView, maka itu berarti pencipta tidak meluangkan waktu atau cukup peduli untuk membuatnya dengan kualitas yang cukup tinggi.
trusktr

62

Saya mengambil kursus dalam pengembangan Android / iPhone dan kami menghabiskan 8 minggu dengan Titanium (tidak penuh waktu) (Versi adalah Titanium 1.4.2 dan waktu sekitar November 2010). Ini pengalaman saya.

iPhone Android penargetan ganda

Meskipun panduan API mengklaim bahwa fungsionalitas tersedia untuk Android dan iPhone, ini bukan masalahnya. Banyak hal tidak berfungsi pada salah satu platform. Beberapa hal bekerja secara berbeda.

Banyak orang di kelas telah melakukan aplikasi iPhone, dan mereka tidak dapat membuatnya bekerja di Android tanpa penulisan ulang utama. Saya mengembangkan aplikasi anak-anak sederhana yang disebut Animap (lihat pasar android / Appstore di Swedia) dan mulai berkembang di bawah Windows. Setelah target Android bekerja, saya membuka proyek pada OS X. Itu tidak menunjukkan hal membangun untuk iPhone, hanya untuk Android. Anda perlu memulai proyek target ganda di bawah OS X. (Oke, saya menyalin file yang relevan ke proyek baru). Masalah selanjutnya - animasi tidak bekerja di iPhone (mereka bekerja di Android). Acara bergulir tidak bekerja sama di iPhone. (yaitu pada Android Anda mendapatkan acara yang tak tersentuh ketika pengguna berhenti menggulir dan melepaskan jari mereka dari layar, ini tidak terjadi pada iPhone).

Karena ini tidak disebutkan di suatu tempat Anda pada dasarnya perlu melakukan pemrograman trial and error pada platform pertama, kemudian pada platform lainnya. Maksud saya coba-coba adalah sekitar dua hari untuk mendapatkan Aplikasi sederhana seperti Animap yang bekerja di platform lain. Anda juga perlu memiliki if (android) then ... atau if (iphone) ... seluruh kode Anda ...

Unduh dan siapkan

Anda harus mengikuti instruksi pada surat itu. Jangan mencoba menggunakan java 64 bit. Itu tidak akan mengkompilasi aplikasi demo KitchenSink 1.4.0. (1.3 berfungsi OK!) Anda harus meletakkan file secara langsung pada drive C karena nama path yang panjang akan membuat program eksternal tidak menerima semua parameter baris perintah jika terlalu panjang. (Baik untuk program kecil) 1/3 kali, toolchain berhenti dan Anda harus menekan 'luncurkan' lagi. Maka itu mungkin akan berhasil ... sangat tidak bisa diandalkan. Simulator tidak akan ditemukan pada startup dan kemudian Anda harus membunuh adb.exe dengan Ctrl + Alt + Delete dan coba lagi.

Koneksi jaringan

Pada jaringan wifi Anda kadang-kadang kehilangan koneksi langsung dan Titanium lumpuh pada Anda (antarmuka kompilasi / deploy) Jika Anda tidak memiliki koneksi internet yang berfungsi, ia tidak akan memulai karena tidak dapat login Anda ke server mereka.

API

CSS, HTML, dan jQuery sangat mudah dibandingkan dengan ini. Titanium menyerupai API GUI lama lainnya, dan Anda perlu mengatur beberapa properti untuk setiap tombol / bidang / etc. Salah bidang itu mudah, mengingat semua properti yang perlu diatur? Apakah Anda mengejanya dengan huruf besar di tempat yang tepat? (karena ini tidak ditangkap oleh kompiler, tetapi akan dilihat sebagai kesalahan runtime jika Anda beruntung untuk menguji bagian itu)

Dalam Titanium, hal-hal cukup rusak ketika Anda menambahkan tampilan lain di atas kontrol atau klik di tempat lain di GUI.

Dokumentasi

Beberapa halaman API membawa simbol Android, tetapi hanya akan mengembalikan nol ketika Anda mencoba membuat kontrol. Mereka tidak hanya tersedia di platform Android meskipun ada simbol. Terkadang Android disebutkan tidak mendukung metode tertentu, tetapi kemudian seluruh API hilang.

KitchenSink

Aplikasi demo. Apakah saya menyebutkan itu tidak mengkompilasi jika Anda meletakkannya di folder proyek Eclipse Anda karena jalan terlalu lama? Harus diletakkan di drive C Anda di folder root. Saat ini saya menggunakan tautan simbolik (mklink / J ...)

Metode tidak berdokumen

Anda harus menggunakan hal-hal sebagai label.setText ('Hello World') untuk mengubah label yang andal tetapi ini tidak didokumentasikan sama sekali.

Debugging

Titanium.API.info ('Cetakan adalah satu-satunya cara untuk debug');

Editing

API tidak tersedia dalam format yang bagus sehingga Anda tidak bisa mendapatkan penyelesaian kode biasa dengan bantuan, dll. Di Eclipse. Aptana tolong bantu!

Perangkat keras

Tampaknya kompiler / alat tidak multithreaded sehingga komputer cepat dengan harddisk cepat adalah suatu keharusan, karena Anda harus melakukan banyak percobaan & kesalahan. Apakah saya menyebutkan dokumentasi yang buruk? Anda harus mencoba semua yang ada di sana karena Anda tidak dapat mempercayainya!

Beberapa hal positif

  • Sumber Terbuka
  • Dari proyek sebelumnya saya telah berjanji pada diri saya untuk tidak pernah menggunakan sumber tertutup lagi karena Anda tidak bisa begitu saja memperbaiki hal-hal hanya dengan membuang waktu dan tenaga. Penting ketika Anda terlambat dalam proyek dan harus memenuhi tenggat waktu yang sulit. Ini adalah open source dan saya telah dapat melihat mengapa rantai alat rusak dan sebenarnya memperbaikinya juga.

  • Database Bug

  • Itu juga terbuka. Anda hanya dapat melihat bahwa Anda tidak sendirian dan melakukan solusi alih-alih 4 jam dihabiskan untuk coba-coba.

  • Masyarakat

  • Tampaknya aktif di forum mereka.

Bug

  • Titanium 1.4 bukan threadsafe . Itu berarti jika Anda menggunakan utas (gunakan properti url: dalam panggilan createWindow) dan program seperti utas bekerja dan mengirim acara dengan data bolak-balik, Anda mengalami banyak hal yang sangat, sangat aneh - penangan yang hilang, hilang jendela, terlalu banyak acara, terlalu sedikit acara, dll. Ini semua tergantung pada waktu, menempatkan baris kode dalam urutan yang berbeda mungkin macet atau menyembuhkan aplikasi Anda. Menambahkan jendela di file.js lain merusak eksekusi app.js Anda ... Ini juga merusak struktur data internal di Titanium, karena mereka kadang-kadang dapat memperbarui struktur data internal dalam paralell, menimpa nilai yang baru saja diubah dengan sesuatu yang lain.

Sebagian besar masalah yang saya miliki dengan Titanium berasal dari latar belakang saya pada sistem realtime seperti OSE yang mendukung ratusan utas, acara, dan penyampaian pesan. Ini seharusnya bekerja di Titanium 1.4 tetapi tidak cukup andal.

  • Javascript (yang baru bagi saya) mati secara diam-diam karena kesalahan runtime. Ini juga berarti bahwa bug kecil dan umum, seperti salah mengeja nama variabel atau membaca dalam null-pointer tidak crash ketika seharusnya sehingga Anda dapat men-debug itu. Alih-alih, sebagian dari program Anda hanya berhenti bekerja, misalnya seorang eventhandler, karena Anda salah menempatkan / salah mengetik karakter.

  • Kemudian kami memiliki bug yang lebih sederhana di Titanium, seperti beberapa parameter yang tidak berfungsi dalam fungsi (yang paling umum pada platform Android setidaknya).

  • Trial and Error debug cycle cycle Setelah menjalankan Titnium Developer di beberapa komputer, saya perhatikan bahwa bottleneck-nya adalah harddisk. Drive SSD pada laptop membuat siklus build sekitar 3-5 kali lebih cepat daripada drive 4200 rpm. Pada desktop, memiliki dua drive dalam RAID 1 (mode striping) membuat build sekitar 25 persen lebih cepat daripada pada drive tunggal dengan CPU yang agak lebih cepat dan juga mengalahkan laptop drive SSD.

Ringkasan

  • Dari komentar di utas ini, tampaknya ada pertarungan untuk jumlah platform yang bisa dihasilkan oleh alat seperti ini. Jumlah API tampaknya menjadi titik penjualan utama.

Ini bersinar sangat banyak ketika Anda mulai menggunakannya. Jika Anda melihat bugtracker terbuka, Anda melihat bahwa jumlah bug terus meningkat lebih cepat daripada jumlah bug tetap. Ini biasanya merupakan tanda bahwa pengembang terus menambahkan lebih banyak fungsi, daripada berkonsentrasi untuk menurunkan jumlah bug.

Sebagai konsultan yang mencoba mengirimkan aplikasi yang agak sederhana ke banyak platform untuk pelanggan - Saya tidak yakin ini sebenarnya lebih cepat daripada melakukan pengembangan aplikasi asli pada dua platform. Ini disebabkan oleh kenyataan bahwa ketika Anda melakukan kecepatan Anda cepat dengan Titanium, tetapi kemudian tiba-tiba Anda melihat ke bawah dan menemukan diri Anda berada dalam lubang yang begitu dalam sehingga Anda tidak tahu berapa jam yang harus dihabiskan untuk solusi. Anda TIDAK bisa menjanjikan fungsionalitas tertentu untuk tenggat waktu / waktu / biaya tertentu.

Tentang saya: Sudah menggunakan Python selama dua tahun dengan wxPython. (GUI itu tidak konsisten, tetapi tidak pernah putus seperti ini. Mungkin saya yang belum mengerti model threading yang digunakan oleh Javascript dan Titanium, tapi saya tidak sendiri menurut forum diskusi terbuka mereka, objek GUI tiba-tiba menggunakan konteks yang salah / tidak memperbarui .. ???) sebelum itu saya memiliki latar belakang dalam pemrograman C dan ASM untuk perangkat seluler.

[edit - ditambahkan bagian dengan bug dan bukan utas yang aman] [Edit - sekarang telah bekerja dengan itu selama + bulan, kebanyakan di PC tetapi beberapa di OS X juga. Menambahkan iPhone dan Android dual targetting. Menambahkan kecepatan siklus debug Percobaan dan Kesalahan.]


1
Dengan rilis Titanium 1.4 saya sekarang telah melihat ke dalam file .apk yang dikirimkan dari Titanium dan mereka tidak terlalu baik. Mereka bekerja, tetapi direktori build lengkap semacam zip bersama di sana. Itu berarti cacat kecil seperti menyalin layar splash ke tiga lokasi berbeda selama build tiba-tiba habis, karena saya memiliki gambar layar splash yang besar, sekitar 1 megapiksel penyimpanan di telepon. Dan itu hanya untuk varian hello-world yang sangat sederhana. Kode sumber javascript juga disalin ke build dan ke dalam file .apk, dan dengan demikian dikirimkan ke semua pelanggan.
user288299

Rilis 1.5 sekarang keluar dan dikatakan sebagai penulisan ulang utama untuk platform Android. Saya tidak akan menguji ini karena saya perlu belajar pengembangan Android asli sekarang.
user288299

Rilis 1.5 sekarang keluar dan dikatakan sebagai penulisan ulang utama untuk platform Android. Saya tidak akan menguji ini karena kami telah pindah untuk mempelajari pengembangan Android asli sekarang. Seperti kita hari ini diajarkan tentang siklus hidup pada Android asli, saya percaya masalah yang saya miliki dengan beberapa jendela kehilangan konten variabel saat kedua kali mereka ditampilkan disebabkan oleh Titanium tidak menyimpan keadaan sebelum keadaan siklus hidup OnPause (). developer.android.com/guide/topics/fundamentals.html#likes . Memanggil Titanium.Map.MapView.hide () dan yang lebih baru tunjukkan () mungkin saja mematikan variabel lokal Anda untuk peta
user288299

1
Baru saja diputar dengan 1.7, deskripsi Anda sangat tepat. Platform ini sangat hit and miss, dengan kinerja yang mengerikan dan jam kerja yang tak terhitung jumlahnya di sekitar pencarian. Jika Anda memiliki sumber daya di awal proyek, bangun yang asli untuk setiap platform.
Jonathon Kresner

25

Corona SDK (Ansca Mobile) menggunakan Lua sebagai bahasa pengodeannya. Lihat lua.org untuk informasi lebih lanjut tentang Lua.

Sementara kami berencana untuk menambahkan integrasi web lebih lanjut dan elemen UI asli, fokus kami akan cenderung pada aplikasi intensif grafis, seperti pengembangan game, yang bertentangan dengan teknologi berbasis web. Dengan kata lain, kami tidak membayangkan orang yang menulis aplikasi Corona sepenuhnya dalam Javascript / HTML / CSS.


Apakah Anda memiliki rencana atau skala waktu untuk pembuatan skrip UI asli. Saya sudah melakukan banyak hal dengan Lua dan saya benar-benar ingin mencintai Corona. Untuk pengembangan non-game, Titanium tampaknya sedikit di depan.
uroc

4
Hai, uroc. Kami punya fitur UI asli yang tiba di rilis 1.1 (ETA akhir minggu ini!), Dan banyak lagi untuk diikuti segera. Namun, pengertian saya tentang Titanium adalah bahwa mereka telah melakukan pekerjaan yang baik dalam mengekspos sejumlah besar elemen UI asli, sedangkan kita akan fokus pada elemen UI yang paling kritis sambil mendorong lebih banyak upaya rekayasa ke dalam animasi dan fitur rendering. Alasannya adalah bahwa (i) sudah ada produk yang bagus untuk aplikasi UI saja, (ii) UI adalah bagian paling ramah dari Kakao (secara relatif!), Tetapi (iii) apa pun yang melibatkan animasi OpenGL adalah titik penghambat pada iPhone di saat.
Evan Kirchhoff

sepertinya Corona lebih cocok untuk mengembangkan game, bukan aplikasi, benarkan?
anticafe

18

Saya telah bekerja dengan Titanium selama lebih dari seminggu sekarang dan merasa seperti saya memiliki perasaan yang baik tentang kelemahannya.

1) Jika Anda berharap menggunakan kode yang sama di berbagai platform, semoga berhasil! Anda akan melihat sesuatu seperti backgroundGradient dan kagum sampai Anda tahu versi android tidak mendukungnya. Maka harus kembali menggunakan gambar gradien, mungkin juga menggunakannya untuk kedua versi untuk membuat kode lebih mudah kan?

2) Banyak perilaku aneh, pada Titanium android SDK Anda perlu memahami apa itu jendela "berat" hanya untuk mendapatkan tombol kembali bekerja, atau bahkan pelacakan acara orientasi yang lebih baik. Ini bukan bagaimana platform android sebenarnya, itu hanya bagaimana Titanium mencoba untuk membuat API mereka berfungsi.

3) Anda terlempar dalam kegelapan, Hal-hal akan macet dan Anda harus mulai berkomentar kode dan kemudian ketika Anda menemukannya, jangan pernah menggunakannya. Ada beberapa bug yang jelas, seperti orientasi dan persen pada android yang telah menjadi masalah selama lebih dari enam bulan.

4) Bug .... ada banyak bug dan mereka akan dilaporkan, duduk selama berbulan-bulan, diperbaiki dalam beberapa hari. Saya terkejut mereka bahkan berencana untuk merilis ponsel black sdk berry ketika ada begitu banyak masalah dengan android.

5) Titanium Iphone versus Titanium Mesin javascript Android sangat berbeda. Pada versi android Anda dapat mengunduh file javascript jarak jauh, termasuk dan gunakan perpustakaan seperti mootools, jquery dan sebagainya. Saya berada di surga ketika saya menemukan ini karena saya tidak harus terus menyusun aplikasi android saya. Proses instalasi Android apk sangat lama! Iphone tidak ada yang mungkin, juga versi iphone memiliki mesin javascript yang jauh lebih cepat.

Jika Anda tinggal jauh dari banyak bagian UI asli, yaitu gunakan setInterval untuk mendeteksi perubahan orientasi, bertahan dengan gambar gradien, lupakan tombol kembali, buat animasi sendiri, lupakan tajuk jendela, bilah alat, dan dasbor. Anda benar-benar dapat membuat api yang bekerja pada keduanya yang tidak memerlukan banyak penulisan ulang. Tetapi pada titik itu sama lambannya dengan webapp.

Jadi, apakah itu layak? Setelah semua rasa sakit, nilainya setiap menit. Anda dapat mengabstraksi logika dan hanya membangun UI yang berbeda untuk masing-masing daripada jika ada di mana-mana. Titanium memungkinkan Anda membuat aplikasi cairan, yang terasa cepat. Anda kehilangan kemampuan tata letak yang kuat dari setiap platform tetapi jika Anda berpikir sederhana, hal-hal dapat dilakukan dalam satu bahasa.

Kenapa bukan aplikasi web? Di pasar entry level ponsel android sangat lambat untuk menghasilkan tampilan web dan menghabiskan banyak memori yang dapat Anda gunakan untuk melakukan logika yang lebih kompleks.




8

Membuat widget HTML5 yang terlihat seperti widget iphone adalah satu hal, tetapi menjadikannya berkinerja sama baiknya adalah masalah lain. Kinerja animasi html5 (bahkan Transisi Tampilan biasa), gulir daftar panjang, responsif terhadap gerakan terasa lengket dan tersentak-sentak. Pengguna iPhone akan melihat perbedaannya.

Ada juga beberapa perbedaan dalam jenis gerakan yang didukung oleh perangkat berbeda yang menghasilkan kode spesifik platform dan masalah kegunaan juga.

Saya akan tetap dengan aplikasi asli untuk saat ini saya kira.


7

Rhomobile Rhodes ( http://rhomobile.com/products/rhodes ) sangat mirip dalam pendekatan untuk PhoneGap, tetapi merupakan satu-satunya kerangka kerja dengan:

  1. pola Pengendali Tampilan Model (karena sebagian besar kerangka kerja web menyediakan)
  2. Manajer Hubungan Objek
  3. dukungan untuk semua smartphone populer (termasuk Windows Phone 7)
  4. layanan pengembangan yang di-host (bukan hanya host yang dibuat): http://rhohub.com
  5. debugger penuh dan emulator SDK-kurang di RhoStudio IDE
  6. dukungan untuk data luring yang disinkronkan

6

Bagi siapa pun yang tertarik dengan Titanium saya harus mengatakan bahwa mereka tidak memiliki dokumentasi yang sangat bagus, beberapa kelas, properti, metode tidak ada. Tetapi banyak yang "didokumentasikan" dalam aplikasi sampel mereka KitchenSink sehingga tidak terlalu buruk.


5

Pemahaman saya tentang PhoneGap adalah bahwa mereka menyediakan Javascript API untuk sebagian besar iPhone API.

Titanium tampaknya lebih mudah untuk latar belakang pengembang web. Ini adalah file XML sederhana untuk membuat aplikasi TabView dasar dan kemudian segala sesuatu di area konten dikendalikan oleh HTML / JS. Saya juga tahu bahwa Titanium memang menyediakan beberapa akses javascript ke beberapa kerangka kerja (terutama akses ke informasi lokasi, ID telepon, dll).

UPDATE: Titanium menambahkan Maps API dalam versi 0.8 dari framework mereka.


Per "Titanium tampaknya lebih mudah untuk latar belakang pengembang web." pernyataan. Maksudmu lebih mudah daripada asli kan? Karena PhoneGap tampaknya lebih sesuai dengan seseorang dengan latar belakang pengembang web daripada Titanium ...
Serhiy

4

Anda harus mempelajari aplikasi tujuan dan program asli c. Jangan mengandalkan hal-hal yang menurut Anda akan membuat hidup lebih mudah. Apple telah memastikan cara termudah adalah menggunakan alat dan bahasa asli mereka. Untuk 100 baris javascript Anda, saya dapat melakukan hal yang sama dalam 3 baris kode atau tidak ada kode sama sekali tergantung pada elemen. Tonton beberapa tutorial - jika Anda mengerti javascript maka tujuan c tidak sulit. Penanganannya menyedihkan dan apel dapat menarik Anda kapan saja mereka mau.


3
Apple mungkin menarik steker ... itulah apa yang saya tentang
Mickey Bersinar

6
Kutipan: "Apple telah memastikan cara termudah adalah menggunakan alat dan bahasa asli mereka." Mereka benar-benar belum. Jika mereka ingin melakukan itu, mereka akan memberikan, katakanlah, dukungan Python. Akan ada pengumpulan sampah (yang sendiri akan mengurangi frekuensi crash - sebagian besar aplikasi iPhone ditulis dengan sangat buruk). Saya menggali ObjC, dan, seperti Anda, saya lebih suka menggunakannya daripada js, tapi itu bukan pertanyaan op. Juga, MonoTouch membuat pengembangan lebih mudah daripada opsi-opsi ini. Saya dapat membuat properti dalam satu baris; dapatkan referensi ke folder Dokumen dengan satu baris ... dan seterusnya. Bit Apple dapat sangat ditingkatkan.
Rory Blyth

6
Solusi yang baik bagi Apple untuk menyediakan alternatif ObjC mereka sendiri. Sesuatu untuk aplikasi yang tidak membutuhkan tingkat kontrol yang diberikan ObjC kepada Anda. Terutama untuk aplikasi perusahaan di mana pengembang harus berfokus pada fungsionalitas daripada penghitungan referensi dan atribut properti. Atau setidaknya mengotomatisasi sebagian besar dengan Xcode dan kompiler. Beri saya sakelar yang memungkinkan asumsi tertentu dibuat dan yang dapat dilewati dalam kode di mana dev memilih (seperti: mempertahankan dan mensintesis properti objek saya secara default - dan, seperti ObjC 2.0 "asli", buat penduduk lokal saya yang didukung untuk saya). Dll
Rory Blyth

2
Pada dasarnya yang Anda katakan adalah, mari kita menulis aplikasi IPhone dalam C #. :)
Justin

3

Dari solusi yang Anda sebutkan, tidak satu pun dari mereka yang muncul untuk memberi Anda akses langsung ke kerangka kerja MapKit yang diperkenalkan di OS 3.0.

Karena widget Google Maps HTML tidak sebagus MapKit (lihat Google Latitude untuk contohnya), Anda mungkin lebih baik mengembangkan aplikasi sentuh Cocoa asli, atau memilih solusi yang dapat diperluas untuk menambahkan integrasi MapKit. PhoneGap dapat diperluas dengan cara ini (ini open-source sehingga secara default), dan beberapa solusi lain mungkin juga.

sunting: Titanium sekarang memiliki dukungan untuk MapKit


Terima kasih. Tetapi apakah ada perbedaan mendasar antara PhoneGap dan Titanium?
Mickey Shine

1
MapKit telah tersedia secara native di Titanium untuk waktu yang cukup lama.
jhaynie

@ jhaynie: Terima kasih. Saya telah merevisi jawaban ini untuk mencerminkan bahwa Titanium sekarang memiliki dukungan (tidak ketika ditulis pada bulan September)
rpetrich

1

Saya sudah mencoba korona. Itu bagus sampai saya menemukan itu tidak mendukung streaming audio mp3. Jadi, saya berhenti di sana. Saya pikir jika saya benar-benar ingin menjadi pengembang aplikasi iphone saya harus belajar obj c. Yang saya inginkan adalah membuat aplikasi yang memiliki daftar stasiun radio dan Anda mengkliknya, itu mulai diputar.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.