Are desktop applications still in use?

2 february 2023
Jakub Rojek Jakub Rojek
Photo by Daniela Eliashevskyi on Unsplash (https://unsplash.com/photos/aTg26S0_OC0)
Categories: Offer, For clients, Programming

Nie ukrywajmy - aplikacje webowe oraz mobilne są obecnie dominującym typem oprogramowania, z jakim stykamy się na co dzień. Minęły już czasy, kiedy specjalistyczne programy trzeba było instalować na komputerze, gdyż wiemy, że obecnie do praktycznie wszystkiego można mieć dostęp z poziomu przeglądarki czy smartfona. Najlepszym tego przykładem jest Photoshop, który doczekał się godnego webowego nastąpcy w postaci Photopei. Nawet powiem więcej - widząc w firmach, jak użytkownicy muszą korzystać ze starszego software'u ze swoich komputerów i ile problemów czasem to sprawia, człowiekowi robi się czasem żal.

Ale taka konieczność też nie jest pozbawiona sensu - są sytuacje, w których aplikacja webowa czy mobilna będzie dużo gorszym rozwiązaniem. Prawdziwą wartością jest bowiem umiejętność oceny tego, kiedy jaki typ oprogramowania jest potrzebny - do tego potrzebna jest wiedza ekspercka, którą dysponują specjaliści IT.

Porozmawiajmy dzisiaj o rodzaju aplikacji, o którym mówi się, że troszkę poszedł w odstawkę, ale nie jest to do końca prawda - o aplikacjach desktopowych.

Czym są aplikacje desktopowe?

To nic innego, jak programy, które do działania wymagają instalacji na komputerze danego użytkownika. Historycznie jest to zatem ten "najbardziej oczywisty" typ oprogramowania, gdyż od dawien dawna ludzie są przyzwyczajeni, że wszystko muszą wgrywać u siebie, sprawdzać wymagania sprzętowe, systemowe i walczyć z ewentualnymi problemami z konfiguracją. I nie ma tutaj znaczenia, czy tak, jak kiedyś, programy instalowane są z dyskietek, CD-ROM-ów czy - jak obecnie - pobierane z Internetu lub nawet poprzez specjalne launchery, jak w przypadku cyfrowych sklepów z grami. Do dzisiaj klienci pytają nas czasem, jakie wymagania musi spełniać ich sprzęt, aby aplikacja im "chodziła" i są mile zaskoczeni, gdy informujemy ich, że wystarczy przeglądarka, a jedyna rzecz, którą muszą mieć na uwadze, to odpowiedni serwer.

A w sumie dlaczego nazywają się "desktopowymi"? Dlatego, że desktop computer to anglojęzyczne określenie na komputer stacjonarny (dosłownie powiedzielibyśmy "biurkowy"). A ponieważ były one kiedyś znacznie częściej spotykane niż laptopy i w dobie dopiero postępującego rozwoju Internetu większość programów wymagała instalacji na maszynach w domu, to właśnie zwykle dotyczyło to PC-ów stojących na lub pod biurkiem.

Dlaczego aplikacje desktopowe zostały wyparte?

Równie dobrze można by było zapytać "dlaczego aplikacje desktopowe nie są już atrakcyjne?". Pierwszym i najważniejszym argumentem jest wygoda użytkowania - obecni odbiorcy przez większość czasu korzystają z przeglądarki internetowej i to nie tylko na konkretnym komputerze, ale często na wielu różnych, doliczając do tego także urządzenia mobilne. Dzieje się tak dlatego (i właściwie jest to samonapędzające się koło), że przeglądają wiele stron WWW i użytkują inne oprogramowanie webowe, którego nie muszą instalować i działa od razu, więc jeśli przychodzi do pobrania czegoś na swój komputer to patrzą na to z niesmakiem. Ale bardziej istotną kwestią związaną z tym jest fakt, że przeglądarki są "w miarę" ustandaryzowane i co za tym idzie - nie ma potrzeby zamartwiania się, czy na komputerze użytkownika faktycznie aplikacja zadziała. Dodatkowo, jeśli by nie działała, to najczęściej nie ma potrzeby przyjazdu do klienta, gdyż poprawka nastąpi na serwerze.

Klasycznym problemem wersji uruchamianych z poziomu środowiska użytkownika jest konieczność dostosowania się do systemu operacyjnego. Istnieją programy dostępne tylko na pewne systemy, a nawet, jeśli tworzone są tzw. porty, to bez odpowiedniego wsparcia zespołu IT czasami mają pewne niedoróbki, różnice względem innych platform, a z perspektywy programistów stanowią koszmar, gdyż wymagają przygotowania paczek instalacyjnych na różne OS-y (Windows, Linux, macOS). Bywa, że nawet na konkretne warianty danego systemu.

Kolejny powód to kwestia aktualizacji oprogramowania. Nie licząc wpływu pamięci podręcznej (cache'a), w przypadku aplikacji webowych update jest dość prosty i wymaga wprowadzenia nowej wersji na jeden lub kilka serwerów. W przypadku aplikacji desktopowych nie jest to takie łatwe - dawniej należało rozprowadzić nową paczkę instalacyjną i prosić użytkowników, aby wykonali odpowiednie czynności (słynne patche). Od wielu lat zaszywa się w programach mechanizmy samoaktualizujące, jednak nadal pozostaje kwestia obsługi różnych środowisk, sytuacji wyjątkowych, sprawdzania, która wersja powinna zostać zaktualizowana itd.

Kolejny argument przeciw aplikacjom desktopowych to śmiecenie na swoim komputerze. Użytkownicy dobrze wiedzą, że im więcej programów jest zainstalowanych w systemie, tym większy bałagan powstaje i "Łyndołs" zaczyna wolniej działać. Przy czym należy pamiętać, że:

  • nie wszystkie aplikacje wymagają instalacji - niektóre są dystrybuowane jako wersje portable, a więc po skopiowaniu od razu działają,
  • nie każde oprogramowanie narusza mechanizmy systemowe, np. rejestr, usługi itd.
  • efekt spowolnienia następuje po dłuższym użytkowaniu i przy coraz większej liczbie plików gromadzonych przez aplikację, co też można próbowac ograniczać.

W tym momencie niektórzy powiedzą, że przecież aplikacje mobilne również są instalowane. To prawda, ale w tym przypadku przewagą jest dostęp do oprogramowania zawsze pod ręką, co dla niektórych zmienia całkowicie sytuację. Program można mieć przed nosem w każdej sytuacji i nie trzeba siadać do biurka czy sięgać po laptopa.

Przedstawiliśmy zatem argumenty przeciw aplikacjom desktopowym i trzeba też uczciwie powiedzieć, że faktycznie jest ich mniej niż kiedyś. Ale nie zniknęły i mało tego - wiele osób nadal je sobie chwali, a niekiedy są niezbędnym składnikiem całych systemów. Więc przedstawmy drugą stronę medalu (a raczej tę pierwszą).

Zalety aplikacji desktopowych

Przede wszystkim ludzie lubią instalować często używane aplikacje na swoim komputerze, gdyż mają do nich szybszy dostęp i ograniczają użycie przeglądarki. Przykładem jest Slack - wiele osób ma go wgranego na swoim komputerze, gdyż ikona pojawia się w pasku zadań i uruchomienie komunikatora nie wymaga biegania po kartach np. w Chromie czy Firefoxie. Dla niektórych nie jest to żaden problem, ale inni wskazują ten aspekt jako główny motywator do pobrania wersji desktopowej. Przy czym tutaj mała wskazówka techniczna - obecnie wiele aplikacji "pod maską" tak naprawdę i tak korzysta z wbudowanych przeglądarek, do czego jeszcze dzisiaj wrócimy.

Druga sprawa to dostęp aplikacji do dysku użytkownika, a co za tym idzie - większe możliwości zapisania konfiguracji, danych czy obsługi plików. Oczywiście, to wszystko (przynajmniej w pewnym stopniu) też można zrobić z poziomu przeglądarki, ale nie tak prosto, przez co korzystanie z aplikacji desktopowej jest często szybsze, także z takiego ludzkiego punktu widzenia. Dodatkowo, zazwyczaj można korzystać z nich offline, czyli bez dostępu do Internetu. Oczywiście, nie w pełni - obecnie praktycznie każde oprogramowanie korzysta z zasobów w sieci, ale nie wszystkie w równym zakresie i czasem pozwalają choćby wyświetlić ostatnio pobrane informacje bez Internetu. W przypadku aplikacji webowych jest to możliwe tylko w technologii PWA.

Najważniejszy argument za jest taki, że... po prostu czasem inaczej nie można. Nadal potrzebne jest oprogramowanie, które wnika głębiej w system, korzysta z rejestru Windowsa, polega na usługach lub demonach, wykorzystuje infrastrukturę wewnętrzną firmy lub ma działać w ukryciu i wspomagać pracę innych programów. Dodatkowo, niektóre aplikacje są na tyle obciążające komputer, że po prostu muszą działać bezpośrednio w systemie operacyjnym - przykładem są gry lub programy do zaawansowanych i zasobożernych operacji jak rendering czy montaż filmów.

W czym tworzyć aplikacje desktopowe?

Kiedyś sprawa była dość prosta, gdyż technologie były skupione na pisaniu oprogramowania na konkretne komputery, a nawet, gdy do ofensywy przystąpiły aplikacje webowe, podział był dość jasny - C++, C#, Java, Python czy nawet Delphi (brrr...) były wyborami dla aplikacji desktopowych. Z biegiem lat sytuacja stała się bardziej skomplikowana.

Owszem, nadal korzysta się z tych języków, gdyż nie da się ukryć, że zapewniają one największą wydajność oraz najbardziej ścisłe współdziałanie z systemem operacyjnym. W obu przypadkach to C++ oferuje najwięcej, co jest okupione trudnością korzystania z niego, w wyniku czego promowane są takie technologie jak Rust, który w ciągu paru lat może stać się wiodącym językiem. W wielu przypadkach właściwsze będzie skorzystanie z Javy czy C#, jeśli opróćz dostępu do systemu zależy nam także na komforcie implementacji. Ale do większości zastosowań pojawiło się znacznie dogodniejsze rozwiązanie, jakim są technologie hybrydowe.

Są to frameworki lub narzędzia, które pozwalają tworzyć jeden kod na wiele platform. Swoją sławę najszybciej zyskały w świecie aplikacji mobilnych, gdzie istnieją takie rozwiązania jak Ionic (wykorzystywany przez nas w Wilda Software), React Native, NativeScript czy Flutter. Dzięki "hybrydom" nie ma potrzeby tworzenia osobnego kodu w Javie/Kotlinie oraz Swifcie, a co za tym idzie - zmniejsza się budżet oraz upraszcza się proces. Równie zachęcają wydają się rozwiązania w kontekście aplikacji desktopowych.

Najbardziej znanym frameworkiem tego typu jest Electron, a przez długi czas był nawet jedynym rozwiązaniem tego typu. Tworzenie za jego pomocą aplikacji instalowanej na komputerze przypomina pisanie strony internetowej, gdyż... tym właśnie pod spodem jest aplikacja - stroną pisaną w JavaScripcie i HTML-u ze wszystkimi przyległościami znanymi programistom webowym. Dzięki temu z jednej strony specjaliści od stron WWW mogą śmiało przygotowywać takie aplikacje, a z drugiej mają duże możliwości kontaktu z systemem operacyjnym. Wspomniany już wcześniej Slack ma aplikację desktopową napisaną właśnie w Electronie. Wszystko brzmi świetnie i rzeczywiście jest to framework, który w większości projektów wystarczy do pokrycia wymagań, natomiast ma kilka wad, z których jedną z bardziej znaczących jest ogromny rozmiar publikowanej aplikacji - coś, co zostało napisane w C++ i po kompilacji waży ok. 5 MB, w Electronie może zajmować nawet kilkaset megabajtów.

Dlatego zaczęły powstawać alternatywy, z których najbardziej obiecującą jest framework Tauri, pozwalający pisać w JS oraz wspomnianym już Ruście. Warty poznania jest także Xamarin (C#) czy nadmieniony wcześniej Flutter (Dart). Istnieje też wiele mniej znanych silników, a niekiedy wystarczą też teoretycznie crossplatformowe rozwiązania javowe, jak JavaFX. Nie wolno także pominąć znanego od wielu lat frameworku Qt, który obecnie umożliwia pisanie aplikacji nie tylko w C++, ale także JavaScripcie czy Pythonie (dzięki, Arku, za przypomnienie).

Wybór jest zatem całkiem spory i o ile istnieją sytuacje, w których nie uciekniemy od natywnych języków, to z doświadczenia mogę powiedzieć, że w większości przypadków Electron czy alternatywa w postaci Tauri jest jak najbardziej odpowiednim rozwiązaniem, szczególnie dla aplikacji bardzo przypominających strony internetowe z możliwością działania na dysku użytkownika.

Kiedy warto rozważyć aplikacje desktopowe?

Jak już zostało wspomniane, rynek dominują aplikacje webowe i mobilne, ale i dla desktopowych znajdzie się zastosowanie. Powinny być one chociaż rozważone tam, gdzie:

  • potrzebny jest dostęp do dysku użytkownika,
  • konieczny jest "kontakt" z usługami działającymi w systemie lub innymi specyficznymi rozwiązaniami systemowymi,
  • wymagane są bardzo duże zasoby sprzętowe,
  • oprogramowanie ma monitorować sieć wewnętrzną lub w jakiś sposób oddziaływać pomiędzy urządzeniami w sieci firmowej,
  • kluczowa jest możliwość korzystania z aplikacji przy odłączonym Internecie,
  • nie ma potrzeby komunikowania się z serwerem.

W przeszłości zdarzało nam się tworzyć takie aplikacje. Faktycznie, nie jest to częste, ale bywa niezbędne z uwagi na wymagania projektu lub kontekst przetwarzanych danych. Bywają też sytuacje, w których jednocześnie obok siebie musi powstać oprogramowanie webowe oraz desktopowe. Wszystko zależy od projektu i potrzeb.

Podsumowanie

Aplikacje desktopowe są w odwrocie i to od dawna. Ale to nie oznacza, że zniknęły całkowicie i co więcej - nie znikną. Nadal są potrzebne i chociaż zakres ich występowania znacznie się skurczył, to czasami nie mogą zostać zastąpione ani przez aplikacje webowe, ani nawet mobilne. Co więcej, "desktopy" wyglądają i działają dzisiaj nieco inaczej i wcale nie muszą wiązać się z takimi problemami, jakie występowały jeszcze kilkanaście lat temu.

Pozdrawiam i dziękuję - Jakub Rojek.

We can do quite a bit and what is more, our skills and resources are at your disposal. Take a peek at what we can offer you.

About author

Jakub Rojek

Lead programmer and co-owner of Wilda Software, with many years of experience in software creation and development, but also in writing texts for various blogs. A trained analyst and IT systems architect. At the same time he is a graduate of Poznan University of Technology and occasionally teaches at this university. In his free time, he enjoys playing video games (mainly card games), reading books, watching american football and e-sport, discovering heavier music, and pointing out other people's language mistakes.

Jakub Rojek