# Desktop Software Development
Desktop developers ontwikkelen software voor desktops en servers. Ze maken application voor besturingssystemen zoals Windows, macOS, Linux of andere Unix Distros. Desktop Software Development was vroeger de kern van de IT industrie maar doorheen de jaren is er minder en minder aandacht voor door de toenemende populariteit van het internet en mobiele toestellen.
Desktop development kan in allerlei talen, meestal is dit C++, Java of Python, deze hebben elk een hele waaier aan libraries om GUI’s (Graphical User Interfaces) te ontwikkelen. Sinds enkele jaren is het niet alleen technisch mogelijk maar ook zeer aantrekkelijk om desktop applicaties te ontwikkelen met webtechnologieën zoals HTML, CSS en Javascript.
# Talen
# Native talen
| Platform | Frameworks |
|---|---|
| Windows | .NET (WPF or Winforms), C# or VB.NET, UWP |
| MacOS | ObjectiveC |
| Linux | C++ |
# Cross-platform talen
- C++ and also C++ with Qt Framework
- Java
- Electron
- Unity framework (.NET)
- Python (wxPython, pyQT, pyGTK and others)
# Development
# Native
# Voordelen
- Uitgebreide functionaliteit vanwege het gebruik van de mogelijkheden van het onderliggende apparaat.
- Snellere en meer responsieve prestaties.
- Ui die beter overeenkomt met die van het besturingssysteem.
- Gebruik van native API’s en frameworks die meestal up-to-date zijn met de OS-functies en laatste richtlijnen.
# Nadelen
- Meerdere codebases omdat elk apparaat zijn eigen versie van de app heeft.
- Extra kosten voor extra ontwikkelaars om een codebasis voor elk platform te bouwen en te beheren.
- Meer tijd besteed aan development voor afzonderlijke platformen, ook voor elke update.
- Afzonderlijke volledige regressietestcyclus voor elk platform.
# Cross-platform development
Soms is cross-platform een betere keuze.
- Indien de layout hetzelfde is op verschillende platformen dan is dit zeker het overwegen waard.
- We moeten niet alles twee of drie keer doen dus het is tijd- en kostbesparend. Ook wanneer je bugs hebt later hoef je dit normaal maar op 1 plek aanpassen.
- Makkelijker ‘maintainable’, zeker voor een klein team.
Het is wel zeer belangrijk dat je een goede tool selecteert bij aanvang van het project want de impact is heel erg groot.
# Technologieën
# Windows
Op windows ontwikkelen we native bijna altijd met .NET en de GUI stellen we samen met WPF of Winforms. De code zelf is dan meestal C# maar het kan ook met Visual Basic of F#. .NET kan ook gebruikt worden voor cross-platform development.
Er is echter wel een relatief nieuwe technologie speciaal voor Windows toestellen zoals Windows 10, Xbox One, HoloLens etc. genaamd UWP (Universal Windows Platform). Zo hoeft die code niet steeds geschreven worden.
# Mac
Op Mac werd er voornamelijk gedeveloped in ObjectiveC en Cocoa. Maar net zoals Windows heeft Apple een universale taal ontwikkeld voor alle Apple devices genaamd Swift.
# Linux
De meest populaire taal voor linux-development is C++.
# Cross-platform
- C++ gecombineerd met het QT Framework zijn populair
- Electron is als webdeveloper een godgeschenk, je kan desktop apps maken voor ieder platform met Javascript en React. Zeer fijn om snel een applicatie te bouwen maar dit heeft het nadeel dat dit minder performant kan werken indien dit niet goed gebouwd is. Maar apps zoals VSCode en Spotify zijn electron apps dus dat toont aan dat het schaalbaar is en performant genoeg.
- Java is ook een optie maar is minder populair omdat het moeilijk is hier een GUI aan te koppelen.
- Unity is gebaseerd op .NET en zal voornamelijk gebruikt worden voor game-development.
- Phython is nog steeds populair maar wordt minder gebruikt voor applicaties met een uitgebreide GUI. Dit kent eerder toepassingen in de domotica etc.