Laman

Senin, 25 April 2011

Persamaan dan Perbedaan antara Platform bada dengan Symbian


Platform bada ditulis dalam bahasa C++, dan sedikit banyak memiliki karakter seperti Symbian, dimana pengembangan aplikasi asli akan memiliki semua keuntungan dari kinerja yang diberikan lewat pembangunan C++. Namun berbeda dengan Symbian di mana pengembang dapat membuat segala sesuatu melalui aplikasi untuk komponen tingkat sistem dan driver dari perangkat, di platform bada adalah murni dirancang untuk pengembangan aplikasi pihak ke-3.

Untuk bada IDE didasarkan pada Eclipse dan termasuk Sourcery G++ GNU toolchain dengan kompiler C++ untuk Simulator dan perangkat yang dituju. Bagi mereka yang pernah menggunakan Carbide (juga berbasis Eclipse) dan C++ untuk pengembangan Symbian pasti sudah merasa familier. Jika Anda memiliki kode standard C library untuk bergerak memulai pengembangan ke platform bada, maka pekerjaan Anda akan dibuat menjadi lebih mudah oleh bada yang memasukkan NewLib C library, sebuah implementasi dari standard C library untuk embedded system. Bada juga mendukung C++ standard template library (STL), sehingga kode STL yang sebelumnya telah ditulis untuk platform lain akan bisa dikonversi ke bada dengan relatif mudah.

Beberapa idiom dari Symbian C++ juga dimiliki oleh bada, termasuk dua fase konstruksi. Dalam bada, kode untuk menciptakan sebuah obyek dan mengalokasikan memori untuk variabel anggotanya dipisahkan menjadi konstruktor objek dan metode Construct() (seperti metode ConstructL() dalam Symbian C++. Ini adalah model yang akan sering Anda lihat dalam coding bada.

Tentu saja ada banyak kode untuk aplikasi yang perlu Anda cari untuk porting ke bada dengan menggunakan platform API yang spesifik dan kabar baiknya adalah bahwa dalam banyak kasus yang setara, bada API akan terlihat sangat mirip dengan yang disediakan oleh Symbian C++ atau Qt.

Bada C++ API yang dibagi menjadi 21 namespaces tingkat atas (dalam bada SDK 1.2), dimana pembagian ini disusun dengan rapi sesuai fungsinya. Jadi, Anda akan menemukan namespace dasar yang berisi tipe numerik dan kelas standar seperti DateTime dan String serta base::collections subnamespace yang berisi seperangkat kelas untuk mengimplementasikan array, linked list, stack dan queue. Namespaces lainnya termasuk untuk lokasi, fitur multimedia, penanganan sensor dan user interface, semuanya terorganisir dalam cara yang logis yang membuat pengembangan melalui bada API menjadi jauh lebih mudah.

Porting kode yang ditulis dengan menggunakan array class dari Symbian C++ dapat menyingkat beberapa pekerjaan, dimana ArrayList class dan LinkedLists class akan melakukan fungsi tawaran yang serupa, dengan ArrayList class digunakan untuk array yang kurang diperbarui dan disimpan di area perbatasan memori - sangat mirip dengan Symbian fixed array class - dan LinkedList adalah analog untuk segmented array class. Jika Anda telah menggunakan Qt, maka Anda akan menemukan bada class yang mirip seperti misalnya Qt Qlist class, QlinkedList class, QMap class dan QmultiMap class.

Tentu saja implementasi string dari Symbian C++ adalah unik dan tidak ada kesetaraan dalam setiap lingkungan lainnya kepada 16 atau lebih untuk deskripsi dari class. Base::String class dari bada sangat mirip dengan Qt yang menyediakan QString class yang melapisi unicode string. Anda juga akan menemukan metode untuk memanipulasi string, menambahkan dan menghapus substring, mengkonversi antara huruf besar dan kecil dan fungsi perbandingan dari string. Untuk penanganan string yang lebih maju, seperti parsing baris teks yang dibaca dari file, ada Base::Utility::StringTokenizer class.

Kemiripan lain dari bada dengan Symbian - dan juga platform smartphone modern lainnya - adalah caranya dalam berurusan dengan permintaan asynchronous. Dalam bada, hampir setiap permintaan, baik menunggu respons ke permintaan HTTP, mengambil informasi lokasi atau mendapatkan informasi dari salah satu sensor yang dimiliki, dibagikan secara asynchronously. Dalam Symbian C++, permintaan asynchronous yang terbungkus dalam ActiveObjects dan dikelola oleh objek ActiveScheduler, akan memanggil metode RunL() dari ActiveObject yang sesuai ketika ada respon yang diterima untuk permintaan asynchronous. Ini memberikan bentuk kooperatif multi-tasking dalam thread aplikasi tunggal.

Dalam platform bada, tanggapan atas permintaan asynchronous ditangani oleh listener. Sebagai contoh, proximity sensor adalah salah satu sensor yang dikelola oleh SensorManager class dari bada. Untuk memisahkan user interface dari seluruh kode, hal yang biasa untuk memberikan class lain, seperti manager class, untuk bertindak sebagai listener, bukan pada form nya.

Dalam bada, sebagian besar proses aplikasi dilakukan dalam thread utama, tapi seperti juga halnya pada Symbian C++ dan Qt, Anda dapat membuat beberapa thread dan penanganan sinkronisasi thread menggunakan mutexes dan semaphores. Jadi, bila memporting dari Qt, dengan standar set dari C++ API akan menjadi lebih mudah. Jadi dalam hal ini Anda dapat menemukan kesamaan dari platform bada dengan banyak fitur inti dari Symbian C++.


.

Tidak ada komentar:

Posting Komentar