Я створив систему, починаючи з додатків для настільних комп'ютерів, 15 років тому, коли Java ще була в зародковому стані і не готова до використання у створенні подібних програм. Я знав, що потрібно мати ядро в C ++, і створив його з самого початку, щоб він був крос-платформою, включаючи використання типорозмірів (наприклад, int32 замість int або long), щоб він міг працювати на Mac, Windows та UNIX (до Linux днів).
У той час, коли я намагався шукати гарне середовище міжплатформного інтерфейсу, тоді було декілька, зокрема XVT. Я пройшов навчання для XVT, і коли почав створювати справжнє додаток, зрозумів, що не зможу створити чистий, рідний вигляд і відчуття на платформі (починаючи з Mac). Тож я відмовився від цієї ідеї і створив вбудований інтерфейс Mac (PowerPlant) поверх портативного ядра.
Через пару років ми перейшли на Windows (інтерфейс користувача у MFC). Це було швидше побудувати інтерфейс вдруге, ми короткий час паралельно підтримували інтерфейс Mac та Windows, а потім перейшли до Windows. Пізніше ядро перейшло на різні версії UNIX та Linux, щоб ми могли запускати обчислення на сервері. Ядро зробило порт добре, з деякими налаштуваннями, коли ми зробили його 64-бітним.
Тепер я повернувся до використання Mac, і я хотів би, щоб ми могли повернутися до Mac, але розмір і складність програми робить це важким вибором. Це все ще має сенс для більшості цього додатка бути настільним додатком - це як середовище CAD. Але замість того, щоб знову створювати інтерфейс користувача на мові C / C ++, орієнтованій на платформу (і надалі підтримувати інтерфейс на основі MFC), я більше схильний переписати весь стек на Java, щоб він міг працювати на декількох платформах.
Можливо, все ще існують причини для запуску ядра, що не є Java, скажімо, C ++, як ми. Але я б хотів запустити ранні тести на ефективність, щоб побачити, чи справді це потрібно. І я б уважно придивився до свого інтерфейсу, щоб побачити, чи можу я будувати його як веб-додаток, підключений до ядра за допомогою веб-служб, щоб я міг мати коло клієнтів - настільні додатки, мобільні додатки, веб-додатки тощо. Якщо мені потрібен фрагмент на C або C ++, чи можна його написати під шаром Java? Або як веб-сервіс?
Ще одне питання - наскільки довго буде працювати ваш додаток? Наскільки складним він буде рости? Якщо у вас є якісь ідеї щодо цього, врахуйте можливу довговічність будь-яких бібліотек користувальницького інтерфейсу, якими ви користуєтесь, і вашу здатність з часом людей допомагати їх підтримувати. Зараз це може бути важко розглянути, але варто подумати.
- Олексій