Aplikacje desktopowe to programy uruchamiane bezpośrednio na komputerze użytkownika, bez potrzeby korzystania z przeglądarki internetowej. Działają lokalnie, mają dostęp do plików, sprzętu i innych zasobów systemu operacyjnego. W kontekście egzaminu INF.04 znajomość technologii desktopowych jest kluczowa, ponieważ uczniowie tworzyć będą aplikacje z graficznym interfejsem, obsługą zdarzeń i baz danych.
🔢 Co to jest IDE?
IDE (Integrated Development Environment) to zintegrowane środowisko programistyczne. Zawiera:
- Edytor kodu,
- Kompilator lub interpreter,
- Debugger (narzędzie do szukania błędów),
- Podpowiedzi składni (IntelliSense),
- Wbudowane narzędzia do projektowania graficznego interfejsu (np. formularze).
IDE ułatwia pisanie, testowanie i uruchamianie aplikacji. Przykłady: Visual Studio 2022, PyCharm, VS Code.
🌐 Typy aplikacji desktopowych
a) Aplikacje jednostanowiskowe
- Działają na jednym komputerze.
- Dane lokalne (pliki, SQLite).
- Przykład: Notatnik, Paint.
b) Aplikacje klienckie (client-server)
- Łączą się z serwerem.
- Wymagana sieć/internet.
- Przykład: Subiekt GT, system rezerwacji.
c) Aplikacje hybrydowe
- Działają lokalnie i synchronizują dane z serwerem.
- Przykład: Spotify, OneNote.
d) Aplikacje wbudowane (embedded)
- Działają na mikrokontrolerach i urządzeniach specjalnych.
- Przykład: systemy automatyki, IoT.
🔬 Technologie do tworzenia aplikacji desktopowych
1. Windows Forms (WinForms)
Windows Forms to jedna z najstarszych technologii Microsoftu do tworzenia interfejsów graficznych dla systemu Windows. Formularze projektuje się w Visual Studio metodą przeciągnij-i-upuść (drag & drop), co znacznie ułatwia naukę. Obsługuje zdarzenia (np. kliknięcie przycisku) i pozwala łatwo integrować się z lokalnymi bazami danych jak SQLite. Używa się jej głównie z językiem C#. Jest idealna do tworzenia prostych aplikacji narzędziowych, kalkulatorów i programów magazynowych.
2. WPF (Windows Presentation Foundation)
WPF to bardziej zaawansowana technologia Microsoftu, oparta na deklaratywnym języku XAML. Umożliwia tworzenie dynamicznych, nowoczesnych interfejsów z obsługą animacji, szablonów, stylów i danych powiązanych (binding). Obsługuje wzorzec MVVM, co poprawia strukturę kodu w większych projektach. Jest świetnym wyborem do aplikacji edukacyjnych, multimedialnych czy wizualizacyjnych. Wymaga większej wiedzy niż WinForms, ale daje znacznie więcej możliwości projektowych.
3. Electron
Electron to technologia pozwalająca tworzyć aplikacje desktopowe przy użyciu technologii webowych: HTML, CSS i JavaScript. Aplikacje działają na wszystkich głównych systemach operacyjnych (Windows, macOS, Linux) i są renderowane przez wbudowany silnik Chromium. Jest to popularny wybór dla nowoczesnych aplikacji narzędziowych i komunikatorów (np. Discord, Slack). Electron pozwala programistom webowym tworzyć aplikacje desktopowe bez konieczności nauki nowych języków. Wadą jest spore zużycie zasobów RAM.
4. Qt / PyQt
Qt to wszechstronny framework napisany w C++, a PyQt to jego wersja dostępna w języku Python. Umożliwia tworzenie eleganckich i wydajnych aplikacji graficznych, działających na Windows, Linux i macOS. Interfejs można tworzyć w kodzie lub z użyciem projektanta Qt Designer. PyQt łączy prostotę Pythona z możliwościami Qt, co czyni go dobrym wyborem dla średniozaawansowanych uczniów. Wadą jest konieczność instalowania dodatkowych bibliotek oraz większa złożoność konfiguracji.
5. JavaFX / Swing
JavaFX to nowoczesna technologia do tworzenia interfejsów graficznych w Języku Java, stanowi następcę Swinga. Pozwala tworzyć responsywne interfejsy z wykorzystaniem deklaratywnego FXML i CSS do stylizacji. Jest niezależna od systemu operacyjnego, ponieważ działa w środowisku JVM. Swing jest starszy, ale nadal popularny w edukacji ze względu na prostotę. JavaFX nadaje się do nowoczesnych aplikacji edukacyjnych i wizualizacji danych.
6. Avalonia
Avalonia to open-source’owy framework wzorowany na WPF, ale działający na Windows, Linux i macOS. Również wykorzystuje XAML do tworzenia UI i wspiera .NET Core/.NET 6+. Jest dobrą alternatywą dla twórców aplikacji .NET, którzy potrzebują wieloplatformowości. Społeczność Avalonii rozwija się dynamicznie, a narzędzia projektowe są coraz bardziej dostępne. Avalonia łączy nowoczesny wygląd i możliwości WPF z uniwersalnością Electron.
💻 Przegląd środowisk programistycznych (IDE)
▶️ Visual Studio 2022
- System: Windows
- Języki: C#, VB.NET, C++, Python
- Obsługa: WinForms, WPF, MAUI, ASP.NET
- ✅ Graficzny edytor formularzy, debugowanie, instalatory
- ❌ Duży rozmiar, działa głównie na Windows
▶️ Visual Studio Code
- System: Windows, Linux, macOS
- Języki: Python, JS, HTML, C#, Java
- Obsługa: Electron, web, terminal, Git
- ✅ Lekki, uniwersalny, wiele rozszerzeń
- ❌ Brak edytora graficznego (ręczne kodowanie GUI)
▶️ PyCharm
- System: Windows, Linux, macOS
- Języki: Python
- Obsługa: Tkinter, PyQt, Flask, Django
- ✅ Profesjonalne IDE dla Pythona, integracja z bazami danych
- ❌ Wersja PRO płatna, tylko Python
📊 Tabela porównawcza technologii i środowisk
| Technologia / IDE | Języki | Platforma | UI graficzne | Przykłady |
|---|---|---|---|---|
| WinForms (Visual Studio) | C#, VB.NET | Windows | ✅ TAK | Notatnik, kalkulator |
| WPF (Visual Studio) | C#, XAML | Windows | ✅ TAK | Systemy graficzne, galerie |
| Electron (VS Code) | JS, HTML, CSS | Windows, Linux, macOS | ❌ NIE | Discord, Slack |
| Qt / PyQt (PyCharm) | C++, Python | Windows, Linux, macOS | ✅ TAK | VLC, Krita |
| JavaFX / Swing | Java | Uniwersalna (JVM) | ✅ TAK | Aplikacje edukacyjne, uczelniane |
| Avalonia | C#, XAML | Windows, Linux, macOS | ✅ TAK | Nowoczesne aplikacje .NET na Linux/macOS |
| VS Code | Wielojęzyczny | Wieloplatformowy | ❌ NIE | Edytor, debugowanie, web |
| PyCharm | Python | Wieloplatformowy | ❌ NIE | GUI z Tkinter, PyQt |
Podsumowanie
- 🎮 Najczęściej na egzaminie INF.04 stosuje się Windows Forms w Visual Studio 2022 z językiem C#.
- 🔄 Warto znać inne technologie i środowiska, bo pytania egzaminacyjne mogą dotyczyć różnic, zastosowań i wyboru technologii.
- 🎓 IDE (Visual Studio, PyCharm, VS Code) wspierają pisanie kodu, testowanie, projektowanie interfejsu i debugowanie.
- 🚀 Pamiętaj: Każde środowisko ma swoje mocne strony – dopasuj je do technologii i języka, którego używasz.

