Saya membangun sebuah sistem, dimulai dengan aplikasi desktop, 15 tahun yang lalu ketika Java masih dalam masa pertumbuhan dan tidak siap untuk digunakan dalam membangun aplikasi semacam ini. Saya tahu saya perlu memiliki inti dalam C ++ dan mendesainnya dari awal menjadi cross platform, termasuk menggunakan tipe berukuran (mis. Int32, bukan int atau panjang), sehingga bisa berjalan di Mac, Windows, dan UNIX (pra-Linux) hari).
Pada saat saya mencoba mencari lingkungan UI lintas-platform yang baik, ada beberapa saat itu termasuk XVT. Saya mengikuti pelatihan untuk XVT dan ketika saya mulai membangun aplikasi nyata, saya menyadari bahwa saya tidak akan dapat membuat tampilan dan nuansa asli yang bersih di platform (dimulai dengan Mac). Jadi saya menyerah ide itu dan membangun UI Mac (PowerPlant) asli di atas inti portabel.
Beberapa tahun kemudian, kami pindah ke Windows (UI di MFC). Itu lebih cepat membangun UI untuk kedua kalinya, kami mempertahankan Mac dan Windows UI secara paralel untuk waktu yang singkat dan kemudian pergi ke Windows. Inti kemudian pindah ke berbagai rasa UNIX dan Linux, untuk memungkinkan kita menjalankan perhitungan berbasis server. Inti melakukan port dengan baik, dengan beberapa penyesuaian ketika kami membuatnya 64-bit siap.
Sekarang saya kembali menggunakan Mac dan saya berharap kita bisa kembali ke Mac, tetapi ukuran dan kompleksitas aplikasi membuat ini pilihan yang sulit. Masih masuk akal bagi sebagian besar aplikasi ini untuk menjadi aplikasi desktop - itu seperti lingkungan CAD. Tapi daripada membangun UI lagi dalam bahasa C / C ++ platform-spesifik (dan terus mempertahankan UI berbasis MFC), saya lebih cenderung untuk menulis ulang seluruh tumpukan di Jawa sehingga dapat berjalan pada beberapa platform.
Mungkin masih ada alasan untuk menjalankan inti non-Java, katakanlah C ++ seperti yang kami lakukan. Tetapi saya ingin menjalankan tes kinerja awal untuk melihat apakah itu benar-benar diperlukan. Dan saya akan melihat dengan hati-hati pada UI saya untuk melihat apakah saya dapat membangunnya sebagai aplikasi web, terhubung ke inti melalui layanan web, sehingga saya dapat memiliki berbagai klien - aplikasi desktop, aplikasi seluler, aplikasi web, dll. Jika saya membutuhkan bagian dalam C atau C ++, dapatkah itu ditulis di bawah lapisan Java? Atau sebagai layanan web?
Pertimbangan lain - berapa lama aplikasi Anda akan ada? Seberapa rumit hal itu akan tumbuh? Jika Anda memiliki ide tentang ini, pertimbangkan umur panjang yang mungkin dari perpustakaan UI yang Anda gunakan dan kemampuan Anda dari waktu ke waktu agar orang-orang membantu memeliharanya. Ini mungkin sulit untuk dipertimbangkan sekarang tetapi patut dipikirkan.
- Alex