Berkembang di Android akan berbeda bagi saya, setelah menghabiskan 10 tahun terakhir coding game di C ++. Apa perbedaan / jebakan / hambatan utama yang harus dikembangkan untuk Android? Kekhawatiran besar saya adalah pindah ke Jawa, apa yang paling saya rindukan?
Untuk lebih jelas: apa yang akan saya lewatkan jika saya mengkodekan semuanya di Jawa dibandingkan dengan cara saya biasanya kode C ++ untuk konsol?
Jawaban:
Satu-satunya hal terbesar yang mungkin Anda lewatkan adalah manajemen memori eksplisit. Di sisi positifnya, Java memiliki informasi jenis run-time dan generik nyata. Lihat juga: http://developer.android.com/guide/practices/design/performance.html untuk beberapa kiat dari Google tentang cara menjaga kode Java Anda tetap efisien.
Raymond Chen baru-baru ini telah melampiaskan pengumpulan sampah dan manajemen memori di CLR dan posting blognya sangat bagus untuk memahami cara kerjanya. (Saya tahu tautan berikut untuk CLR, tetapi masih relevan untuk pengembangan Java). Lihat khususnya: http://blogs.msdn.com/b/oldnewthing/archive/2010/08/09/10047586.aspx dan http://blogs.msdn.com/b/oldnewthing/archive/2010/08/10 /10048150.aspx
Yang sedang berkata, tidak ada banyak perbedaan antara Java dan C ++, dan seperti yang ditunjukkan Chris, Anda dapat kode dalam C / C ++ di Android menggunakan NDK.
sumber
Google Chris Pruett berbicara tentang menulis game waktu nyata untuk android di Google I / O 2009 dan lagi pada tahun 2010 . Dia berbicara tentang kinerja Java di Android di antara topik lainnya. Dia juga membuat gim, Pulau Replika , di Jawa dan Anda dapat mengunduh kode sumber untuk mendapatkan gambaran tentang bagaimana gim Android Java nantinya. Blog - nya tentang permainan juga memiliki beberapa artikel berwawasan.
Perangkap khas mirip dengan yang menulis dalam bahasa sampah yang dikumpulkan lainnya , Anda menggunakan kumpulan objek dan mengalokasikan hal-hal di muka untuk menghindari menjalankan GC ketika Anda tidak menginginkannya. Metode virtual secara default di Jawa dan membantu untuk menandainya sebagai final ketika Anda tidak perlu menimpanya. Plugin Android Eclipse hadir dengan beberapa alat yang rapi untuk membantu Anda membuat profil aplikasi dan memantau alokasi tumpukan.
sumber
Anda terlalu khawatir. API untuk OpenGL di Android, OpenGL-ES, sengaja dibuat seperti-C. Lihat spesifikasi OpenGL di http://www.khronos.org/opengles/ untuk detailnya.
Bahkan mungkin Anda tidak akan kehilangan banyak hal dari C ++. Banyak pengembang, bahkan penulis pemrograman terkenal Bruce Eckel ('Thinking in C ++', 'Thinking in Java'), telah menemukan Java bahasa yang jauh lebih efektif untuk pemrograman berorientasi objek. Sebagian besar karena hal-hal yang mereka 'lewatkan' pada awalnya ternyata tidak begitu penting.
Yang mengatakan, apa yang paling saya lewatkan adalah kemampuan untuk menimpa operator, bukan hanya metode. Sintaksnya benar-benar clumsier ketika Anda harus mendefinisikan / mengganti metode bukan operator.
Pertimbangkan, misalnya aritmatika bilangan kompleks. Ini sangat elegan di C ++. Tidak demikian halnya di Jawa. Tetapi ini ternyata memiliki dampak minimal pada sebagian besar proyek nyata.
Beberapa orang mengeluh tentang ketidakmampuan untuk melakukan multiple-inheritance. Tapi jenis pewarisan berganda yang paling berguna ADALAH jenis yang dilakukan Java dengan 'antarmuka', jadi Anda tidak boleh terlalu merindukannya.
sumber