-
Vývoj Aplikácií s Viacvrstvovou Architektúrou (VAVA)
-
Slovenská technická univerzita v Bratislave Fakulta Informatiky a Informačných Technológií STU FIIT
-
Prednášajúci: PhDr. Ing. Mgr. et Mgr. et Mgr. et Mgr. Miroslav Reiter, DiS., MBA, MPA, MSc., DBA, Ing. Paed. IGIP
-
Kontakt: [email protected]
-
Verzia Javy/JDK: Java SE JDK 17
-
Preferované IDE: Netbeans 20 (alebo podľa preferencií Eclipse/IntelliJ IDEA 2023.3.4 Ultimate)
-
Zoznam tímov a projektov: https://docs.google.com/spreadsheets/d/1UCdTJ30tkXzmAsogZB2ZlcoE7kQygvQl/edit?usp=sharing&ouid=100112972226340140004&rtpof=true&sd=true
-
Zoznam tímov a LiveCodeSession:
-
VAVA - Testik 1 - OOP: https://forms.gle/tkFkpo2FACsMWiXQ6
-
VAVA - Testík 2 - Kolekcie a Polia: https://forms.gle/RmF5Uo4TvGP1tV7h7
-
VAVA - Testík 3 - Výnimky a Logy: https://forms.gle/dJx4BeinXijrGJEVA
-
VAVA - Testík 4 - JDBC a DB: https://forms.gle/vr6puPsCidX4ix9S9
-
VAVA - Testík 5 - Regexy a Stringy: https://forms.gle/uTn2wVbnWz51rjkT9
-
VAVA - Testík 6 - IO, NIO/NIO2, Files: https://forms.gle/2r7tVCZb5W26S8eDA
-
VAVA - Testík 7 - Lokalizácia, Bundles: https://forms.gle/M9Sf5sv164kHt4bn6
-
VAVA - Testík 8 - Enterprise Architektúra EA: https://forms.gle/5X9tbRrRfeottWo57
-
Hodnotenie tímu:
Prednášky: Každý piatok 12:00-13:50
Cvičenia: Každý piatok 14:00-15:30 formou konzultácii
- Úvod do Javy a jazyka ArchiMate
- Štruktúra platformy a enteprise architektúry
- Vývojové technológie + (biznis vrstva)
- Kolekcie + (aplikačná vrstva)
- Logovanie
- Lokalizácia
- JDBC a DBMS + (technologická vrstva)
- XML, NIO2
- Regulárne výrazy
- Prehľad enterprise architektúr
- Enteprise Architect
- Prezentovanie Projektov (Prehľad JEE a .NET)
- Získať prehľad o platforme Java SE (Java Standard Edition), jej architektúre, štruktúre a vlastnostiach
- Zdokonaliť sa vo vývoji programov pre platformu Java (Java Standard Edition)
- Naučiť sa tvoriť desktopové GUI aplikácie vo SWING/JavaFX
- Nadobudnúť zručnosti vo využívaní vybraných rozhraní a rozširujúcich knižníc platformy Java (Standard Edition)
- Pripraviť sa na neskorší vývoj rozsiahlych viacvrstvových enterprise aplikácií
- Používať jazyk ArchiMate a EA pri modelovaní viacvrstvových aplikácií
- Zasadenie Java v kontexte JEE a .NET technológií
- Štruktúra platformy Java
- Java vývojové technológie a štandardy
- Vybrané kapitoly/detaily Java Standard Edition API (napr. Collections, Logging, Localization, XML, I/O, Regular Expressions)
- Databázy, JDBC, jazyk SQL v Jave
- Prehľad JEE a .NET technológií
- 50 % formou tímovej práce - 5 členov v podobe projektu, implementácie a jednoduchej dokumentácie prototypu postaveného na vybraných technológiách JAVA a DBMS. Tímy si vedú svoje projekty v Jira Software. V prípade, že študent, nechce realizovať projekt tímovou spolupracou alebo mu to okolnosti nedovolujú (individuálny študijný plán, výmenný pobyt, iné okolnosti) môže vypracovať celý projekt samostatne.
- 20 % formou tímovej práce - 3 členovia v podobe live code session pre príslušnú tému (Kolekcie, Lokalizácia, Logovanie, JDBC, XML, NIO.2), príprava na code session (cvične nahrané video k príslušnej témy, ktorú prezentujete), scenár s praktickými príkladmi s názornými ukážkami a zdrojovými kódmi, následne odprezentovanie na cvičení - témy sa budú losovať. Hodnotí sa a body sa získavajú za prezenčnú live code session. Nahrané video slúži ako príprava a je to povinná nebodovaná súčasť.
- 30 % skúška podobná oficiálnej Oracle Java certifikačnej skúške OCP (Oracle Certified Professional) Java SE 17 Developer 1Z0-829, alebo absolvovanie oficiálnej certifikačnej skúšky OCP 1Z0-829: https://education.oracle.com/oracle-certified-professional-java-se-11-developer/trackp_OCPJAV11
- Bude realizovaná prezenčne v priestoroch školy (miestnosť podľa podľa rozpisu - ACPU: 02. beh o 10:30-13:15)
- Bude pripravený test v AISe s uzatvorenými otázkami (closed test).
- Rozsah: 15 otázok - Časový limit: 30 minút - každá otázka za 2 body
- Na skúške treba mať so sebou študentský preukaz a zabezpečený prístup do AISu.
Nerešpektovanie pravidiel, narušovanie poriadku na skúške, odpisovanie alebo nečestné konanie bude mať za následok vylúčenie zo skúšky a hodnotenie študenta známkou FX.
Pre absolvovanie skúšky nie je stanovený minimálny počet bodov.
Z čoho bude skúška?
Z odprednášaných tém zameraných hlavne na Javu 80 % (cca 12 otázok) vid. nižšie a 20 % (3 otázky) zameraných na enterprise architektúru a jazyk ArchiMate
- OOP Java
- Kolekcie
- Lokalizácia
- Logovanie
- NIO.2
- JDBC
Z čoho sa máme učiť?
Všetky prezentácie, materiály PDF sú dostupné na Githube na YouTube sú videozáznamy z prednášok. Odporúčam si prejsť testíky, ktoré sa robili na cvičeniach a zdroje k certifikačnej skúške Oracle Java SE 17 Developer 1Z0-829 + ArchiMate a Enterprise Architektúru.
Môžeme používať vlastný PC, notebook, zariadenie?
Nie, budú sa používať zariadenia/počítače školy.
Vytvoríte tímy o 5 členoch
V tíme je 1 vedúci (manažér alebo Scrum master), každá skupina si ho demokraticky zvolí alebo sa sám diktátorsky zvolí. Ďalej každý tím bude mať IT architekta, SW testera a programátorov. Tímy si vedú svoje projekty v Jira Software alebo Jetbrains YouTrack. UML a ArchiMate diagramy modelujú v Enterprise Architecte a odovzdáva sa aj EAP súbor.
A. Projektový zámer a predstavenie tímu s rozdelením úloh a rôl (RACI matica) – 10 bodov – (do 5. cvičenia)
B. Aplikácia, video prezentácia a dokumentácia vrátane UML (class diagram), EA ArchiMate diagramov – 40 bodov – (do 11. cvičenia). Aplikácie je napísaná výhradne v Jave (nie Kotlin, nie Scala, nie Clojure, nie JavaScript).
✔️ Odovzdávané UML diagramy (core funkcionalita a triedy v projekte) v dokumentácii:
- Tried (class)
✔️ Odovzdávané ArchiMate diagramy (core funkcionalita) v dokumentácii:
- Biznis vrstva (Organizačné hľadisko, Hľadisko na spoluprácu medzi podnikovými procesmi, Produktové hľadisko)
- Aplikačná vrstva (Hľadisko spolupráce aplikácií) <--> balíčky (packages)
- Technologická vrstva (Technologické hľadisko)
- Vrstvový model (Vrstvené hľadisko)
- JDownloader v2
- muCommander v2
- Gannt Project v2
- Plánovač Kurzov a Skúšok vid. prílohy
- Slovensko.sk Schránky v2 vid. prílohy
Vlastný projekt MUSÍ obsahovať veci z odprednášaných tém a mať:
- Kolekcie (treba vybrať vhodné dátové štruktúry podľa povahy/architektúry projektu)
- Logovanie (Logovanie biznis logiky aplikácie + Logovanie Exceptions/Errors)
- Lokalizácia (Preklady a lokalizácia ENG a SK)
- XML (Použitá 1 vybraná XML technológia, spracovanie/parsovanie XML dokumentov, import/export do XML, SAX, DOM, StAX, JAXB, XStream, Jackson XML, XPATH, XQUERY)
- Regulárne výrazy (Vyhľadávanie s prepínačmi, filtrovanie)
- JDBC (Pripojenie na vybranú databázu Derby/MySQL/PostgreSQL/SQLite/Oracle Database, ukladanie dát do DB), môžu sa použiť aj NoSQL databázy za predpokladu, že použijete JDBC napr. MongoDB Používate výhradne JDBC (žiadne ORMká čiže nie JPA, Hibernate, EclipseLink, MyBatis).
- Ošetrenie/validácia vstupov + bezpečnosť (Ochrana voči základným SQL injekciám)
- GUI aplikácia (Swing, JavaFX), nie Android aplikácia, nie Spring a Spring boot aplikácia
- Aplikácia by mala byť navrhnutá pre 3 rôznych používateľov/aktérov napr. admin, power/super user, používateľ (user)
- Dátové zložky musia byť zapúzdrené (všetky private)
- 5-6 obrazoviek (Odpoveď na otázku: Aká veľká má byť aplikácia?)
V projekte treba dodržovať odporúčané postupy (best practices) a konvencie. Využiť objektovo orientované princípy a techniky bez zbytočných duplicít kódu (DRY). Treba myslieť na príjemné používateľské rozhranie na jednej strane a na druhej na dobrý návrh a štruktúru.
Pri projekte sa odovzdávajú zdrojové kódy a projektový súbor spolu so spustiteľným JAR súborom (+ knižnice/y) a dokumentáciou v miestach odovzdania AIS. Dátum a čas odovzdania si študenti a tímy sledujú sami v AISe a sú povinní ho rešpektovať. V prípade neodovzdania projektu do stanoveného času a dátumu sa projekt hodnotí 0 bodmi. Vedúci tímu + jeden z členov tímu nahrá tieto súbory do AISu. Rovnako každý tím nahrá všetky súbory do svojho verejného repozitára na GitHub/Gitlab/Bitbucket, aby bol k dispozícii iným tímom v skupine na hodnotenie. Projektové zadanie aj výsledný projekt a jeho projektovú dokumentáciu odovzdávate ako 1 samostatný PDF dokument, v ktorom je všetko, nie porozdelované po súboroch.
Ďalej tím pripraví video (15-20 minút), kde odprezentuje svoje zadanie. Do popisu v miestach odovzdania zašle odkaz na YouTube/Vimeo video. Video musí byť verejne dostupné cez odkaz v popise miesta odovzdania. V prípade nedostupnosti odkazu na video či nefunkčnosti aplikácie sa projekt hodnotí 0 bodmi.
Najprv vo videu ukážete a demonštrujete, ako sa váš program používa a či má ošetrené vstupy, nepadá, out of memory. V druhej časti otvoríte kód a vysvetlíte dôležité časti logiky. Každý člen tímu vysvetľuje svoju časť, ktorú mal na starosti. V prípade, že použijete súbory a zdrojové kódy z internetu je povinné uvádzať všetky použité zdroje. Študent musí rozumieť každému riadku daného kódu a orientovať sa v ňom.
Video ma odpovedať na otázky:
- Ako funguje aplikácia?
- Aká je biznis a aplikačná logika/vrstva SW?
- Aká je architektúra SW a použité návrhové vzory?
- Aké komponenty ste použili a prečo?
- Čo ste sa pri tom naučili?
- Čo vám robilo problémy (vrásky na tvári)? Ako ste sa s tým vysporiadali?
Berte to ako priateľský rozhovor s potenciálnym technologickým investorom alebo zákazníkom, ktorý je technologicky orientovaný. Video slúži ako vaša príprava na prezenčnú obhajobu projektu.
Video bude súčasťou dokumentácie a projekty sa budú prezentovať a hodnotiť aj priamo na cvičeniach vo forme súťaže medzi jednotlivými tímami. Hodnotí sa systémom peer review s vedúcim, ktorý je vyučujúci a má záverečné slovo pri prideľovanám bodov. Vlastný projekt MUSÍ obsahovať veci z odprednášaných tém vid. zoznam 11 požiadaviek vyššie. Každý študent hodnotí aj iné projekty v rámci cvičenia (kvalita/prevedenie/realizácia/splnenie požiadaviek/GUI) do pripraveného dotazníka na hodnotenie. Študent tak môže ovplyvniť výsledné bodové hodnotenie za projekty v rozsahu (0-15 % hodnotenia, samozrejme v rámci povoleného počtu 40 bodov za projekt). Konečné slovo má pri rozhodovaní a prideľovaní bodov vyučujúci. Hodnotí sa a body sa získavajú za prezenčnú obhajobu. Nahrané video slúži ako príprava a je to povinná nebodovaná súčasť projektu. Nefunkčná, padajúca aplikácia alebo aplikácia obsahujúca zjavné chyby alebo chyby, ktoré spôsobujú pád celej aplikácie sa automaticky hodnotia 0 bodmi alebo minimálnym počtom bodov.
- BLOCH, J. Effective Java. Boston: Addison - Wesley, 2nd edition, 2008. ISBN 03-213-566-8-3
- NAFTALIN, M. -- WADLER, P. Java Generics and Collections. Sebastopol, USA: O'Reilly Media, 1st edition, 2006. 286 s. ISBN 05-965-277-5-6
- GAMMA, E. -- HELM, R. -- JOHNSON, R. -- VLISSIDES, J. Design Patterns. Elements of Reusable Object-Oriented Software. Boston : Addison Wesley, 1994. 395 s. ISBN 0-201-63361-2
- SIERA, K. Head First Java. O'Reilly. 3nd Edition. 2020. 688 s. ISBN 9780596009205
- FREEMAN, E. Head First Design Patterns. 2nd Edition. O'Reilly. 2020. 672 s. ISBN 9781492078005
- BOAYRSKY, J. OCP Oracle Certified Professional Java SE 17 Developer Complete Study Guide. 2022. John Wiley. 1110 s. ISBN 978-1-119-86458-5
- BOAYRSKY, J. OCP Oracle Certified Professional Java SE 17 Developer Practice Tests. John Wiley. 2022. 780s. ISBN 978-1-119-86461-5
- Oracle Certified Professional, Java SE 17 Developer Certification Overview https://education.oracle.com/java-se-17-developer/pexam_1Z0-829
- Oracle Java Dokumentácia: Java Platform, Standard Edition 11 API Specification, 2022
- Oracle Blog java
- Dzone Java Spotlight
- ArchiMate® 3.1 Specification, a Standard of The Open Group
- Problém s najnovšou verziou Intellij Idea 2023.3.4 s Jetbrains ToolBox (aj Community aj Professional edícia) s portami pri nainštalovaní Hyper-V, Docker
Riešenie:
winnat a nepoužívať Jetbrains Toolbox
net stop winnat
net start winnat
- Problém pri vložení Nového Pripojenia/Connection na databázový systéme MySQL verzia 5.7 V okne Data Sources and Drivers po vyplnení všetkých údajov na pripojenie treba presne vyšpecifikovať verziu MySQL, na ktorú sa pripájate napr. 5.7
Na Tabe Advanced si nastavte vlastnosť enableTLSProtocols na hodnotu:
TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
Alternatívne riešenie je nastaviť si voľbu/parameter virtuálnej mašiny:
VM Options = "-Djdk.tls.disabledAlgorithms=SSLv3, TLSv1, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, include jdk.disabled.namedCurves"
Zdroj bugu: Can't connect to remote MySQL since last version of IntelliJ
Príklad na výstupný reťazec/URL pre pripojenie sa na databázu
jdbc:mysql://mysql57.r2.websupport.sk:3311/Kurz_DB_SQL
- Problém s verziami Java, chceme nainštalovanú verziu JDK 17 LTS
Riešenie:
Treba si skontrolovať a nastaviť správne premenné prostredia Environ v operačnom systéme
Ideálne po reštarte overiť v príkazovom riadku (CMD) s príkazmi:
java --version
javac -version
jshell
-
Problém s členom tímu, ktorý nepracuje/nespolupracuje/nekomunikujete alebo vyvoláva konflikty
Riešenie: Vedúci (manažér) tímu môže vyhodiť takéto člena z tímu so súhlasom aspoň 2 členov tímu. Problematický člen si potom projekt vypracuje samostatne. Prípadne konflikty v tíme si riešite interne medzi sebou (nie pan profesor/učitel on nepracuje/nekomunikuje/nerobí svoju prácu čo máme robiť...)
-
Ja ako manažér, IKT architekt, hlavný programátor som urobil najviac práce, podstatne viac ako ostatní členovia a zaslúžim si viac bodov za projekt ako ostatní členovia.
Riešenie: Všetci členovia tímu dostanú rovnaký počet bodov ako bolo komunikované v podmienkach od začiatku predmetu. Zvykajte si na realitu, že vždy niektorí ľudia robia viac a niekto menej. Ak budete podnikať, tak navyše budete za všetko zodpovedný a to aj za to čo ste neurobili/nepokazili. Tomuto sa vraví reálny život a skúsenosti.