Z pośród wielu systemów operacyjnych, wydaje mi się, że są trzy najczęściej używane: Windows (od XP wzwyż), Linux (pod różnymi postaciami zwanymi dystrybucjami) i Mac OS X.
Zauważyłem, że są różne technologie tworzenia oprogramowania, które mają zalety i wady:
- Windows API: Tworzy go większość kompilatorów dla Windows. Aby uruchomić w Linuxie, trzeba zainstalować Wine, a żeby uruchomić w MacOS, to trzeba zainstalować Darwine (wersja Wine przewidziana dla MacOS).
- Jeden plik EXE na wszystkie systemy
- W Windows nie potrzeba dodatkowego oprogramowania ani bibliotek
- Niektóre dystrybucje Linuxa już posiadają Wine
- Wine i Darwine nie są w 100% kompatybilne z Windows API, dlatego należy testować działanie programu przynajmniej w Linuxie, a najlepiej we wszystkich systemach
- Sam kompilator może nie działać do końca dobrze w systemach innych niż Windows (jeżeli uruchamiany jest przez Wine)
- .NET/Mono: Aby uruchomić w systemie Windows, należy zainstalować .NET, a w pozostałych systemach trzeba zainstalować Mono (istnieje również wersja Mono dla Windows)
- Jeden plik EXE na wszystkie systemy
- Mono jest prawie w 100% kompatybilny z .NET 2.0, trzeba testować działanie
- Plik EXE zawiera kod pośredni, a nie maszynowy, przez co teoretycznie może działać na każdym komputerze
- Język C# (stworzony specjalne dla .NET) jest stosunkowo prosty i są bezpłatne kompilatory
- Mono zapewnia tylko częściową kompatybilność z .NET 3.5
- Biblioteka .NET nie zawiera GTK# i trzeba GTK# doinstalować osobno
- Java:
- Java istnieje w wersji dla wszystkich systemów operacyjnych
- 100% gwarancji działania na wszystkich systemach
- Kompilatory Java są bezpłatne
- Podobno Java może być mniej wydajna
- Ograniczenia wynikające z maszyny wirtualnej Javy
- QT:
- 100% gwarancji działania na wszystkich systemach operacyjnych
- W systemie docelowym nie potrzeba instalować dodatkowych bibliotek do uruchamiania programów
- Wymaga tworzenia trzech osobnych wersji programu
- Lazarus:
Te same zalety i wady, jak QT.
Którą technologię stosujecie do tworzenia programów? Jeżeli chcecie rozpowszechniać program, to czy testujecie dokładnie działanie we wszystkich trzech systemach operacyjnych?