Bir masaüstü uygulamasıyla başlayarak, 15 yıl önce Java'nın henüz bebeklik döneminde olduğu ve bu tür uygulamaları oluşturmaya hazır olmadığı bir sistem oluşturdum. C ++ 'da bir çekirdeğe ihtiyacım olduğunu biliyordum ve başlangıçta çapraz platform olacak şekilde tasarladım, boyut türleri (örneğin int veya long yerine int32) dahil, böylece Mac, Windows ve UNIX (Linux öncesi) üzerinde çalışabilir gün).
İyi bir platformlar arası kullanıcı arayüzü ortamı aramaya çalıştığımda, XVT dahil olmak üzere birkaç tane vardı. XVT için eğitimden geçtim ve gerçek bir uygulama oluşturmaya başladığımda, platformda (Mac'ten başlayarak) temiz, doğal bir görünüm ve his oluşturamayacağımı fark ettim. Bu fikirden vazgeçtim ve taşınabilir çekirdeğin üzerine yerel bir Mac (PowerPlant) kullanıcı arayüzü oluşturdum.
Birkaç yıl sonra Windows'a geçtik (MFC'de kullanıcı arayüzü). İkinci kez bir kullanıcı arayüzü oluşturmak daha hızlıydı, bir Mac ve Windows kullanıcı arayüzünü kısa bir süre paralel olarak tuttuk ve daha sonra Windows'a geçtik. Çekirdek daha sonra sunucu tabanlı hesaplamalar yapmamıza izin vermek için UNIX ve Linux'un çeşitli tatlarına taşındı. Çekirdek 64-bit hazır hale getirirken bazı ayarlarla iyi bir bağlantı noktası yaptı.
Şimdi bir Mac kullanmaya geri döndüm ve Mac'e geri dönebilmeyi diliyorum, ancak uygulamanın boyutu ve karmaşıklığı bunu zor bir seçim haline getiriyor. Bu uygulamanın çoğunun bir masaüstü uygulaması olması hala mantıklı - bir CAD ortamı gibi. Ancak, UI'yi platforma özgü bir C / C ++ dilinde oluşturmak (ve MFC tabanlı bir UI'yi korumaya devam etmek yerine), birden çok platformda çalışabilmesi için Java'daki tüm yığını yeniden yazmaya eğilimliyim.
Java olmayan bir çekirdeği çalıştırmak için hala nedenler olabilir, örneğin C ++ bizim yaptığımız gibi. Ama bunun gerçekten gerekli olup olmadığını görmek için erken performans testleri yapmak isterdim. Ve web hizmetleri aracılığıyla çekirdeğe bağlı bir web uygulaması olarak inşa edip edemeyeceğimi görmek için kullanıcı arayüzüme dikkatle bakacağım, böylece bir dizi müşterim olabilir - masaüstü uygulamaları, mobil uygulamalar, web uygulamaları, vb. C veya C ++ 'da bir parçaya ihtiyacım olursa, Java katmanı altında yazılabilir mi? Yoksa bir web servisi olarak mı?
Başka bir düşünce - uygulamanız ne kadar sürecek? Ne kadar karmaşık olacak? Bununla ilgili herhangi bir fikriniz varsa, kullandığınız UI kitaplıklarının uzun ömürlü olabileceğini ve zaman içinde insanların onları korumasına yardımcı olma yeteneğinizi göz önünde bulundurun. Bunu şimdi düşünmek zor olabilir ama düşünmeye değer.
- Alex