Zbudowałem system, zaczynając od aplikacji komputerowej, 15 lat temu, gdy Java była jeszcze w powijakach i nie była gotowa do użycia przy tworzeniu tego rodzaju aplikacji. Wiedziałem, że muszę mieć rdzeń w C ++ i od samego początku zaprojektowałem go tak, aby był wieloplatformowy, w tym używać typów o różnych rozmiarach (np. Int32 zamiast int lub long), aby mógł działać na komputerach Mac, Windows i UNIX (wcześniejszych niż Linux) dni).
W tym czasie starałem się znaleźć dobre środowisko interfejsu dla wielu platform, było ich wtedy kilka, w tym XVT. Przeszedłem szkolenie XVT i kiedy zacząłem tworzyć prawdziwą aplikację, zdałem sobie sprawę, że nie będę w stanie stworzyć czystego, natywnego wyglądu na platformie (zaczynając od Maca). Zrezygnowałem z tego pomysłu i zbudowałem natywny interfejs Maca (PowerPlant) na przenośnym rdzeniu.
Kilka lat później przeszliśmy na system Windows (interfejs użytkownika w MFC). Za drugim razem szybsze było budowanie interfejsu użytkownika, przez krótki czas utrzymywaliśmy równolegle interfejs Mac i Windows, a następnie przeszliśmy na system Windows. Rdzeń później przeszedł na różne wersje systemów UNIX i Linux, aby umożliwić nam wykonywanie obliczeń serwerowych. Rdzeń działał dobrze, z pewnymi poprawkami, kiedy przygotowaliśmy go do pracy w wersji 64-bitowej.
Teraz wracam do korzystania z komputera Mac i chciałbym wrócić na komputer Mac, ale rozmiar i złożoność aplikacji sprawia, że jest to trudny wybór. Nadal ma sens, aby większość tej aplikacji była aplikacją komputerową - to jest jak środowisko CAD. Ale zamiast budować interfejs ponownie w języku C / C ++ specyficznym dla platformy (i nadal utrzymywać interfejs oparty na MFC), jestem bardziej skłonny do przepisania całego stosu w Javie, aby mógł on działać na wielu platformach.
Nadal mogą istnieć powody, by uruchamiać rdzeń inny niż Java, powiedzmy C ++ tak jak my. Chciałbym jednak przeprowadzić wczesne testy wydajności, aby sprawdzić, czy jest to naprawdę wymagane. I uważnie przyjrzałbym się mojemu interfejsowi użytkownika, aby sprawdzić, czy mógłbym budować go jako aplikację internetową, połączoną z rdzeniem za pośrednictwem usług internetowych, dzięki czemu mógłbym mieć wielu klientów - aplikacje komputerowe, aplikacje mobilne, aplikacje internetowe itp. Gdybym potrzebował utworu w C lub C ++, czy mógłby zostać napisany pod warstwą Java? Lub jako usługa internetowa?
Kolejna uwaga - jak długo będzie działać Twoja aplikacja? Jak skomplikowany będzie? Jeśli masz jakieś pomysły na ten temat, zastanów się nad możliwą długowiecznością dowolnych bibliotek interfejsu użytkownika, których używasz, oraz swoją zdolnością do utrzymywania z czasem pomocy ludzi w ich utrzymaniu. To może być trudne do rozważenia teraz, ale warte przemyślenia.
- Alex