Ada beberapa yang baru mulai akan belajar mobile development, dan bertanya ke saya: saya harus belajar teknologi yang mana? Sayangnya pertanyaan ini sulit dijawab, karena menurut saya jawabannya adalah “tergantung”. Tergantung waktu Anda, dana Anda, dan risiko yang ingin Anda ambil. Saya akan coba enumerasi satu persatu teknologi yang ada. Saat ini ada teknologi yang “common” bagi semua, yaitu HTML, ini akan saya bahas terakhir.
Pertama Anda bisa belajar Objective C untuk memprogram iOS (iPod Touch, iPhone, iPad). Ini adalah OS mobile yang paling menjanjikan (dalam hal keuntungan materi). Ratusan orang sudah mendapatkan jutaan dollar, ribuan developer mendapatkan ratusan ribu dollar. Tapi perlu dicatat juga: puluhan ribu developer lain tidak mendapat apa-apa, atau mendapat uang yang sedikit sekali. Anda perlu investasi hardware yang cukup mahal, dan jika ingin aplikasinya selalu teruji di hardware terbaru, Anda perlu membeli hardware baru setiap kali ada versi iPhone/iPad yang muncul. Pemrograman harus dilakukan di OS X. Artinya harus berinvestasi uang untuk membeli MacBook atau iMac (atau investasi waktu mengoprek Hackintosh sampai berjalan dengan baik).
Jika Anda menguasai objective C, ilmunya (sebagian) bisa dipakai untuk mengembangkan aplikasi desktop di OS X juga, tapi secara umum, pasar untuk aplikasi desktop Apple jauh dibawah aplikasi mobile Apple. Sebenarnya selain Objective C, ada yang namanya MonoTouch, Anda bisa memprogram iOS menggunakan .NET (aplikasi ini berbayar, jadi investasi ekstra lagi).
Saya belum berpengalaman menjual aplikasi iOS, tapi ada banyak tutorial di Internet, jadi tidak perlu bingung. Developer dari Indonesia juga bisa menjual aplikasinya di appstore. Jika aplikasi Anda tidak diterima oleh Apple, ada kemungkinan masih bisa dijual di Cydia, tapi pasarnya hanya untuk iOS yang sudah dijailbreak. Jika menargetkan pasar Indonesia, maka pengguna iOS di Indonesia belum banyak, kalah dibandingkan BlackBerry dan Android, karena harga hardware iOS lebih mahal. Apple sekarang sedang berusaha memasuki pasar menengah ke bawah dengan menjual hardware lamanya dengan harga murah, tapi saya kurang tahu apakah ini akan berhasil atau tidak. Belum jelas apakah user akan memilih beli hardware Apple lama dengan harga murah, atau membeli hardware baru merk lain.
BlackBerry memakai Java, tapi memakai API spesifik BlakcBerry. Biaya development BlackBerry cukup rendah, cuma perlu punya handset BlackBerry, tidak perlu membayar untuk bisa mencoba di devicenya langsung dan untuk berjualan di BlackBerry AppWorld (dulu butuh membayar, tapi sudah digratiskan). Developer Indonesia bisa berjualan di AppWorld, dan pembayaran ditransfer via paypal. Saat ini pembayaran dilakukan via paypal, tapi di beberapa negara, pengguna bisa membayar menggunakan pulsa atau tagihan pasca bayar (dan di Indonesia juga sudah mulai, operator tertentu). Jika Anda developer baru, sebaiknya tidak memulai memprogram BlackBerry dengan Java, kenapa? karena dalam satu dua tahun ini RIM akan mengeluarkan handphone menggunakan OS baru, tidak lagi diprogram memakai Java, tapi memakai C/C++/HTML/JS/Flash. Jika Anda merasa bisa cepat mempelajari BlackBerry, pasar BlackBerry di Indonesia masih sangat besar (BlackBerry adalah smartphone terpopuler di Indonesia saat ini).
OS Android adalah OS terbuka dari Google. Artinya produsen mana saja bisa membuat hardware Android. Bahasa yang digunakan untuk Android adalah Java, dengan API spesifik Android. Masalah utamanya Android adalah: ada banyak sekali device yang perlu didukung. Saat ini developer Indonesia bisa mengirimkan aplikasi gratis ke Android Market, tapi belum bisa berjualan di Android market. Pengguna dari Indonesia sudah bisa membeli dari Android market. Sayang sekali sampai saat ini pemerintah masih terlalu mengurusi RIM, dan kurang memperhatikan agar Android membuka pasarnya untuk developer Indonesia. Android berkembang sangat cepat, dan menurut pendapat saya, baru di 4.0 Android mulai matang. Dalam beberapa tahun ke depan, sepertinya masa depan Android cerah.
Symbian adalah OS yang sempat populer, setelah berganti tangan beberapa kali, akhirnya Symbian dimiliki Nokia, tapi Nokia akan segera menghentikan pengembangan Symbian. Symbian diprogram menggunakan C++. Sebaiknya tidak mulai memprogram Symbian sekarang karena investasi waktunya akan sia-sia. Jika Anda baru mulai, sebaiknya targetkan saja device baru menggunakan Qt, tidak perlu belajar API Symbian yang ribet. Jika aplikasinya sederhana, coba juga menggunakan J2ME, karena lebih mudah, dan semua ponsel Symbian mendukung J2ME. Developer dari Indonesia bisa berjualan menggunakan OVI Store. Pembeli bisa membeli menggunakan potong pulsa.
J2ME (Java 2 Micro Edition) adalah teknologi Java untuk mobile device yang sudah dimulai sejak bertahun-tahun yang lalu. Milyaran device di dunia ini bisa menjalankan aplikasi j2me, tapi sayangnya appstorenya kurang dikenal. Ada beberapa appstore yang mendukung J2ME, misalnya OVI, Opera, Handango, dan Mobihand. Semuanya menerima developer dari Indonesia. Tadinya saya pikir teknologi ini akan mati, tapi ternyata masih sangat populer di device menengah ke bawah. Banyak aplikasi populer yang menggunakan teknologi J2ME, misalnya Opera Mini, GMail Client, Whats App. Masalah utama dalam J2ME ini adalah dalam proses “signing”. Secara default, program J2ME tidak bisa mengakses banyak hal (misalnya mengakses file, mengakses jaringan, kadang bisa mengakses user selalu ditanya: “aplikasi akan mengakses fitur X”, allow/deny, user bisa kesal karena ini). Supaya bisa mengakses berbagai fitur tanpa bertanya pada user, developer bisa menandatangani secara digital file programnya, tapi biayanya tidak sedikit dan prosesnya rumit. Silakan baca sendiri informasi lengkapnya di javaverified.com.
Flash Player untuk Mobile akan dihentikan, tapi Adobe berganti haluan: mereka tidak membuat flash player, tapi membuat supaya aplikasi flash bisa dikonversi jadi aplikasi mobile. Jadi Anda cukup memprogram seperti membuat SWF di desktop, tapi hasilnya akan dicompile menjadi file binary untuk iOS, Android, dan PlayBook. Jika Anda sudah punya ilmu flash, opsi ini sangat menarik, karena sekali merengkuh dayung, 3 platform tercapai. Aplikasi dengan flash ini bisa dijual di Apple AppStore, Android Market, dan BlackBerry AppWorld. Tapi ada satu hal yang perlu diperhatikan: jika aplikasinya terlalu berat, aplikasi yang dihasilkan terasa lambat. Tapi Adobe sudah memberikan solusi: sebagian kode bisa ditulis dalan C/C++ langsung untuk mempercepat bagian yang terlalu lambat dalam Action Script. Sayangnya Flash Builder tidak gratis, tapi Anda bisa mencoba 60 hari dulu untuk melihat apakah Anda suka memprogram Flash/Action Script atau tidak. Jika ingin gratis, Anda juga bisa memprogram dengan tools command line (dengan Adobe AIR SDK).
Aplikasi Windows Phone 7 bisa didapatkan di Windows MarketPlace. Aplikasi diprogram menggunakan teknologi .NET (XNA, Silverlight). Untuk berjualan di Windows MarketPlace, perlu account developer (99 USD sekali saja, bukan pertahun seperti Apple). Dibandingkan Android, hardware untuk Windows Phone 7 distandarkan oleh Microsoft, sehingga tidak terlalu beragam seperti Android. Saat ini pengguna Windows Phone 7 masih belum banyak, tapi Nokia akan mulai beralih ke Windows 7, jadi mungkin ini akan segera berubah. Jika Anda sudah punya ilmu .NET, platform ini cukup menjanjikan. Sebagai catatan: device dengan windows mobile versi lawas (yang diprogram dengan C/C++), masih dijual, tapi sudah tidak banyak lagi yang memakai.
Sistem operasi yang sempat diharapkan bisa populer adalah BADA, tadinya di minggu-minggu awal, langsung 1 juta unit terjual, tapi setelah itu penjualannya menurun. Jumlah aplikasi BADA masih jauh lebih kecil dibandingkan Windows 7. Pemrograman BADA dilakukan dengan C/C++. Sampai saat ini Samsung belum berhasil mempromosikan BADA dengan baik (baru 4.5 juta device), jadi mungkin sebaiknya tidak berinvestasi dulu di platform ini, kecuali dengan HTML/JS.
Saat ini ada satu hal yang menyatukan semuanya: Web browser. Saat ini semua OS punya web browser, karena internet sudah jadi kebutuhan dasar. Karena ada web browser, maka setiap ponsel juga punya HTML dan JavaScript (walau supportnya berbeda-beda). Saat ini ada beberapa framework (misalnya PhoneGap, Titanium, WebWorks) yang memungkinkan kita membuat aplikasi mobile dengan HTML dan JavaScript. Kelemahan aplikasi dengan HTML/JS saat ini adalah: lambat dibandingkan aplikasi versi native, dan API yang tersedia kurang banyak dibandingkan versi native. Kedua kelemahan ini bisa diatas dengan menulis kode dalam Java/C/Objective C jika kode dalam JavaScript terlalu lambat, atau jika belum ada API yang kita butuhkan. Selain kedua hal tersebut, aplikasi dalam HTML/JavaScript mudah dibongkar dan ditiru.
Sekarang ini jika aplikasi yang saya buat cukup sederhana, saya akan membuatnya dalam HTML dan JavaScript. Sayangnya saat ini dukungan mobile browser berbeda-beda, ada yang mendukung css3 3d transform, ada yang tidak. Ada yang Javascriptnya cepat ada yang lambat (tergantung engine yang dipakai di mobile device tersebut). Ketika membuat aplikasi, biasanya saya akan mengira-ngira dulu: kira-kira aplikasi ini butuh processing rumit atau tidak, butuh animasi seperti apa. Saya cari bagian tersulit, lalu test dulu kira-kira HTML/JS mampu atau tidak. Jika bisa, maka saya teruskan memprogram dalam HTML/JS.
Hal-hal yang butuh komputasi rumit, seperti misalnya memproses gambar pixel demi pixel atau memproses suara byte demi byte tidak akan bisa dilakukan dengan baik menggunakan javascript. Secara singkat: HTML/JS sangat menjanjikan (mudah diprogram, jalan di semua device), tapi sekarang ini yang bisa dilakukan dengan HTML/JS sangat terbatas.
Sekedar informasi: berjualan pada appstore minimal kena potongan 30%, dan kadang lebih karena ada faktor pajak atau biaya transfer (tergantung appstore yang mana). Sebelum memasukkan aplikasi Anda ke market/appstore manapun, pastikan Anda mengerti segala macam potongan, biaya, peraturan, dsb. Satu hal yang dulu sempant mengganggu saya adalah ini:sayang juga aplikasi saya nggak bisa jalan di OS lama, padahal masih banyak user di OS versi lama (misalnya Blackberry OS 4.5). Setelah agak lama, saya belajar ini: di tahap awal, jangan terlalu memikirkan hardware yang terlalu kuno: biasanya orang yang pelit beli hardware baru, juga pelit membeli aplikasi Anda. Jika aplikasi Anda populer dan ingin meraih semua pengguna, baru pikirkan untuk mendukung hardware lama.
Jika Anda tidak ingin berjualan, Anda bisa memasukkan iklan ke dalam aplikasi gratis Anda untuk menghasilkan uang. Atau bisa juga Anda membuat aplikasi yang benar-benar gratis, tapi di website Anda, tampilkan iklan (cara yg saya lakukan). Membuat aplikasi mobile device bisa menghasilkan uang banyak, bisa juga sedikit, kadang tergantung keberuntungan. Tapi jika Anda suka memprogram, dan punya device di tangan, kenapa tidak mencoba memprogram mobile?
windows phone kalau bikin hubungan sama windows pc sama phone, kayanya bakal meningkat penggunanya deh.