Build a distribúcia¶
Táto kapitola opisuje technickú stránku zostavenia a distribúcie aplikácie Pozor Dozor. Aplikácia je vyvíjaná ako Java desktopový program a používateľom sa distribuuje cez GitHub vo forme hotových balíkov pre Windows a Linux.
Bežný používateľ nepotrebuje aplikáciu zostavovať zo zdrojového kódu. Na používanie aplikácie slúžia hotové súbory zverejnené v časti Releases.
Zdrojový kód¶
Zdrojový kód aplikácie je uložený v GitHub repozitári projektu. Repozitár obsahuje Java zdrojové súbory, formuláre, resources, fonty, ikony a súbory potrebné na zostavenie aplikácie.
Úloha repozitára
GitHub repozitár slúži ako hlavné miesto pre vývoj aplikácie. Obsahuje zdrojový kód, históriu zmien a vydané verzie aplikácie.
Zdrojový kód nie je určený pre bežnú inštaláciu
Používateľ, ktorý chce aplikáciu iba používať, si nemusí sťahovať zdrojový kód. Na bežné používanie sú určené hotové súbory z časti Releases.
Release verzie¶
Distribúcia aplikácie pre používateľov prebieha cez GitHub Releases. Každý release predstavuje konkrétnu vydanú verziu aplikácie.
Release môže obsahovať viacero súborov podľa operačného systému.
| Typ súboru | Určenie |
|---|---|
.exe |
inštalátor alebo spustiteľný balík pre Windows |
.AppImage |
spustiteľný balík pre Linux |
Source code |
automaticky priložený zdrojový kód z GitHubu |
Pre používateľov sú dôležité hotové balíky
Bežný používateľ by si mal stiahnuť .exe súbor pre Windows alebo .AppImage súbor pre Linux. Súbory označené ako Source code sú vhodné hlavne pre vývojárov.
Source code nie je inštalátor
GitHub pri release automaticky ponúka aj zdrojový kód vo formáte ZIP alebo TAR.GZ. Tieto súbory nie sú hotová aplikácia. Používateľ, ktorý si ich stiahne, dostane zdrojové súbory, nie pripravený program na spustenie.
Windows balík¶
Pre Windows sa aplikácia distribuuje ako súbor s príponou .exe. Tento súbor je určený na jednoduchú inštaláciu alebo spustenie aplikácie v prostredí Windows.
Úloha Windows balíka
Windows balík umožňuje používateľovi nainštalovať aplikáciu bez potreby Java vývojového prostredia, kompilácie alebo ručného skladania závislostí.
Bezpečnostné upozornenie Windows
Windows môže pri prvom spustení zobraziť bezpečnostné upozornenie, najmä ak aplikácia nie je podpísaná komerčným certifikátom. Používateľ by mal pokračovať iba vtedy, keď súbor pochádza z oficiálneho GitHub repozitára projektu.
Linux AppImage¶
Pre Linux sa aplikácia distribuuje ako súbor .AppImage. Tento formát umožňuje spustiť aplikáciu bez klasickej inštalácie do systému.
Používateľ si stiahne AppImage súbor, nastaví mu spustiteľné oprávnenie a spustí ho.
Úloha AppImage balíka
AppImage je praktický formát pre Linux, pretože aplikáciu možno spustiť ako jeden súbor. Nie je potrebné vytvárať systémový balík pre každú distribúciu zvlášť.
Typické spustenie AppImage
Po stiahnutí je potrebné nastaviť súbor ako spustiteľný. V termináli sa to dá urobiť napríklad príkazom chmod +x PozorDozor*.AppImage. Potom je možné aplikáciu spustiť príkazom ./PozorDozor*.AppImage.
Rozdiel medzi programom a dátami¶
Pri distribúcii je dôležité rozlišovať samotnú aplikáciu a používateľské dáta. Program je súbor, ktorý používateľ stiahne a spustí alebo nainštaluje. Dáta sú uložené v dátovom priečinku používateľa.
| Časť | Príklad |
|---|---|
| Program | .exe alebo .AppImage |
| Používateľské dáta | teachers.csv, calendar.csv, config.cfg |
Výhoda oddelenia
Vďaka oddeleniu programu a dát môže používateľ aktualizovať aplikáciu bez toho, aby prišiel o zoznam učiteľov, kalendár alebo nastavenia.
Pri aktualizácii nemažte dátový priečinok
Ak používateľ pri aktualizácii odstráni dátový priečinok aplikácie, môže prísť o učiteľov, kalendár a konfiguráciu. Aktualizovať sa má program, nie používateľské dáta.
Resources aplikácie¶
Aplikácia pri behu používa aj súbory uložené v resources. Ide najmä o ikonu aplikácie a fonty používané pri generovaní PDF.
| Resource | Úloha |
|---|---|
/icons/pozor-dozor.png |
ikona aplikácie |
fonts/NotoSans-Regular.ttf |
bežný font pre PDF |
fonts/NotoSans-Bold.ttf |
tučný font pre PDF |
Dôležitosť resources
Resources musia byť správne pribalené do výsledného balíka aplikácie. Ak by chýbala ikona, aplikácia by nemusela mať správny vizuálny identifikátor. Ak by chýbali fonty, mohlo by zlyhať generovanie PDF alebo zobrazovanie diakritiky.
Fonty sú potrebné pre PDF
PDF výstup používa fonty NotoSans na správne zobrazenie slovenských znakov. Pri balení aplikácie je potrebné skontrolovať, že fontové súbory sú súčasťou výsledného artefaktu.
Závislosti aplikácie¶
Aplikácia používa viacero externých knižníc. Medzi najdôležitejšie patria knižnice pre grafické rozhranie, vzhľad aplikácie a generovanie PDF.
| Knižnica alebo technológia | Úloha |
|---|---|
| Java | základná platforma aplikácie |
| Swing | formuláre a okná aplikácie |
| GRobot | hlavné okno a plátno aplikácie |
| FlatLaf | modernejší vzhľad Swing formulárov |
| PDFBox | generovanie PDF výstupu |
| Java HttpClient | komunikácia s cloudovým WebDAV rozhraním |
Závislosti pri zostavení
Pri zostavení aplikácie musia byť všetky potrebné knižnice dostupné a správne zahrnuté do výsledného balíka. Bežný používateľ ich samostatne nerieši, pretože má dostať už hotový release.
Zostavenie aplikácie¶
Zostavenie aplikácie predstavuje proces, pri ktorom sa zdrojový kód a potrebné resources pripravia do spustiteľnej podoby.
Presný spôsob zostavenia závisí od použitého vývojového prostredia a build nástrojov v projekte. Výsledkom by však mal byť balík, ktorý obsahuje aplikáciu, závislosti a potrebné resources.
Cieľ buildu
Cieľom buildu je vytvoriť spustiteľnú aplikáciu, ktorú používateľ dokáže spustiť bez ručného nastavovania vývojového prostredia.
Čo treba pri builde skontrolovať
Pri zostavení je vhodné overiť, či sa aplikácia spustí, či má správnu ikonu, či funguje generovanie PDF, či sú dostupné fonty a či sa vytvára dátový priečinok aplikácie.
Príprava Windows vydania¶
Pri príprave Windows vydania je cieľom vytvoriť súbor .exe, ktorý používateľ jednoducho spustí.
Kontrola Windows balíka
Pred zverejnením Windows balíka je vhodné otestovať spustenie aplikácie na čistom alebo bežnom používateľskom systéme, overiť prvé spustenie, pridanie učiteľa, generovanie rozpisu, uloženie PDF a prípadné odinštalovanie aplikácie.
Testovanie mimo vývojového počítača
Aplikácia môže na vývojovom počítači fungovať aj vďaka lokálnemu nastaveniu IDE alebo dostupným súborom. Preto je dôležité otestovať release balík samostatne, ideálne na počítači, kde nie je otvorený projekt vo vývojovom prostredí.
Príprava Linux vydania¶
Pri príprave Linux vydania je cieľom vytvoriť .AppImage súbor.
Používateľ by mal vedieť tento súbor stiahnuť, nastaviť ako spustiteľný a spustiť bez ďalšej inštalácie.
Kontrola Linux balíka
Pred zverejnením Linux balíka je vhodné otestovať spustenie AppImage súboru, nastavenie spustiteľnosti, vytvorenie dátového priečinka, generovanie PDF a uloženie rozpisu.
Rozdiely medzi distribúciami
Linuxové distribúcie sa môžu líšiť prostredím, správcom súborov a bezpečnostnými nastaveniami. AppImage je praktický kompromis, ale aj tak je vhodné otestovať ho aspoň na bežnej cieľovej distribúcii.
Aktualizácia aplikácie¶
Aktualizácia aplikácie znamená nahradenie starej verzie programu novou. Používateľské dáta zostávajú v dátovom priečinku.
Vo Windowse sa odporúča starú verziu odinštalovať cez nastavenia systému a potom nainštalovať novú verziu. V Linuxe stačí nahradiť starý .AppImage súbor novým.
Dáta sa pri bežnej aktualizácii nestratia
Používateľské dáta sú uložené mimo samotného programu. Pri aktualizácii sa preto nemenia súbory teachers.csv, calendar.csv ani config.cfg, pokiaľ používateľ ručne neodstráni dátový priečinok.
Záloha pred väčšou aktualizáciou
Aj keď sa dáta pri bežnej aktualizácii nemažú, pred väčšou zmenou je vhodné odporučiť zálohu dátového priečinka. Je to jednoduchá poistka proti nečakaným problémom.
GitHub Releases a dokumentácia¶
Dokumentácia by mala používateľa smerovať na najnovší release aplikácie. Najpraktickejšie je používať odkaz na najnovšiu vydanú verziu.
https://github.com/milpet014/Pozor-Dozor/releases/latest
Výhoda odkazu releases/latest
Odkaz na releases/latest smeruje používateľa na najnovšiu vydanú verziu. Pri vydaní novej verzie preto nie je potrebné meniť každý odkaz v dokumentácii.
Konkrétne názvy súborov sa môžu meniť
V dokumentácii je vhodné uvádzať skôr typ súboru, napríklad .exe alebo .AppImage, než pevný názov konkrétneho súboru. Pri novej verzii sa názov súboru môže zmeniť.
Rozdiel medzi používateľskou a vývojárskou distribúciou¶
Používateľská distribúcia je určená na bežné spustenie aplikácie. Vývojárska práca so zdrojovým kódom je určená na úpravy, testovanie a ďalší vývoj.
| Typ používateľa | Odporúčaný spôsob |
|---|---|
| Bežný používateľ | stiahnuť .exe alebo .AppImage z Releases |
| Vývojár | naklonovať repozitár a pracovať so zdrojovým kódom |
Používateľ nemá riešiť build
Cieľom releasu je, aby používateľ nemusel riešiť Java projekt, závislosti ani vývojové prostredie. Má dostať hotový balík, ktorý spustí.
Zálohovanie pred vydaním a testovaním¶
Pri testovaní nových verzií je vhodné používať samostatné testovacie dáta alebo si pred testovaním zálohovať existujúci dátový priečinok.
Bezpečný testovací postup
Pred testovaním novej verzie je vhodné skopírovať dátový priečinok aplikácie na bezpečné miesto. Ak by nová verzia obsahovala chybu, je možné sa vrátiť k pôvodným údajom.
Testovanie na ostrých dátach
Testovanie novej alebo beta verzie priamo na ostrých dátach môže byť rizikové. Pri dôležitých údajoch je vhodné mať zálohu alebo použiť testovací priečinok.
Možné budúce rozšírenia distribúcie¶
Aktuálne sú praktické najmä balíky pre Windows a Linux. V budúcnosti by bolo možné zvážiť aj ďalšie spôsoby distribúcie.
Možné rozšírenia
Do budúcnosti by bolo možné doplniť napríklad automatickú kontrolu novej verzie, digitálne podpisovanie Windows inštalátora, samostatný ZIP balík, balík pre konkrétne Linux distribúcie alebo jednoduchší aktualizačný mechanizmus.