Skip to content

☕ STU FIIT VAVA - Vývoj Aplikácií s Viacvrstvovou Architektúrou, Slovenská technická univerzita v Bratislave Fakulta Informatiky a Informačných Technológií STU FIIT v Bratislave

Notifications You must be signed in to change notification settings

miroslav-reiter/VAVA_JAVA

Repository files navigation

☕ VAVA-JAVA

Organizácia predmetu

Prednášky: Každý piatok 12:00-13:50
Cvičenia: Každý piatok 14:00-15:30 formou konzultácii

🔥 Sylabus/Čo nás čaká a neminie...

  1. Úvod do Javy a jazyka ArchiMate
  2. Štruktúra platformy a enteprise architektúry
  3. Vývojové technológie + (biznis vrstva)
  4. Kolekcie + (aplikačná vrstva)
  5. Logovanie
  6. Lokalizácia
  7. JDBC a DBMS + (technologická vrstva)
  8. XML, NIO2
  9. Regulárne výrazy
  10. Prehľad enterprise architektúr
  11. Enteprise Architect
  12. Prezentovanie Projektov (Prehľad JEE a .NET)

👨‍🏫 Výsledky vzdelávania

  • 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í

Stručná osnova predmetu:

  1. Štruktúra platformy Java
  2. Java vývojové technológie a štandardy
  3. Vybrané kapitoly/detaily Java Standard Edition API (napr. Collections, Logging, Localization, XML, I/O, Regular Expressions)
  4. Databázy, JDBC, jazyk SQL v Jave
  5. Prehľad JEE a .NET technológií

☕ YouTube video záznamy z prednášok a cvičení Playlist

YouTube kanál IT Academy)

🥇 Podmienky na absolvovanie predmetu

  • 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

komunikacia-a-fungovanie

🏆 Skúška

  • 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.

❓ FAQ ku skúške

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

  1. OOP Java
  2. Kolekcie
  3. Lokalizácia
  4. Logovanie
  5. NIO.2
  6. 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.

🔥 Hodnotenia, tímový projekt

Vlastný projekt (do 11. cvičenia) – 50 bodov

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:

  1. Biznis vrstva (Organizačné hľadisko, Hľadisko na spoluprácu medzi podnikovými procesmi, Produktové hľadisko)
  2. Aplikačná vrstva (Hľadisko spolupráce aplikácií) <--> balíčky (packages)
  3. Technologická vrstva (Technologické hľadisko)
  4. Vrstvový model (Vrstvené hľadisko)

‼️ Každý študent odovzdáva v tíme všetky dokumenty a podklady t.j. aj za projektový zámer aj za Live Code Session aj za celkový vypracovaný projekt, aby mohol dostať v AISe hodnotenie za príslušnú časť a bol oznámkovaný.

💡 Námety na projekty

  1. JDownloader v2
  2. muCommander v2
  3. Gannt Project v2
  4. Plánovač Kurzov a Skúšok vid. prílohy
  5. Slovensko.sk Schránky v2 vid. prílohy

Vlastný projekt MUSÍ obsahovať veci z odprednášaných tém a mať:

  1. Kolekcie (treba vybrať vhodné dátové štruktúry podľa povahy/architektúry projektu)
  2. Logovanie (Logovanie biznis logiky aplikácie + Logovanie Exceptions/Errors)
  3. Lokalizácia (Preklady a lokalizácia ENG a SK)
  4. 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)
  5. Regulárne výrazy (Vyhľadávanie s prepínačmi, filtrovanie)
  6. 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).
  7. Ošetrenie/validácia vstupov + bezpečnosť (Ochrana voči základným SQL injekciám)
  8. GUI aplikácia (Swing, JavaFX), nie Android aplikácia, nie Spring a Spring boot aplikácia
  9. Aplikácia by mala byť navrhnutá pre 3 rôznych používateľov/aktérov napr. admin, power/super user, používateľ (user)
  10. Dátové zložky musia byť zapúzdrené (všetky private)
  11. 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ódyprojektový 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:

  1. Ako funguje aplikácia?
  2. Aká je biznis a aplikačná logika/vrstva SW?
  3. Aká je architektúra SW a použité návrhové vzory?
  4. Aké komponenty ste použili a prečo?
  5. Čo ste sa pri tom naučili?
  6. Č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.

🏅 Hodnotenie a hodnotiaci kľúč

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.

📰 Odporúčane zdroje, knihy, príprava na skúšku

📚 Základné knihy:

  1. BLOCH, J. Effective Java. Boston: Addison - Wesley, 2nd edition, 2008. ISBN 03-213-566-8-3
  2. NAFTALIN, M. -- WADLER, P. Java Generics and Collections. Sebastopol, USA: O'Reilly Media, 1st edition, 2006. 286 s. ISBN 05-965-277-5-6
  3. 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
  4. SIERA, K. Head First Java. O'Reilly. 3nd Edition. 2020. 688 s. ISBN 9780596009205
  5. FREEMAN, E. Head First Design Patterns. 2nd Edition. O'Reilly. 2020. 672 s. ISBN 9781492078005

💼 Príprava na skúšku, certifikačnú skúšku OCP:

  1. BOAYRSKY, J. OCP Oracle Certified Professional Java SE 17 Developer Complete Study Guide. 2022. John Wiley. 1110 s. ISBN 978-1-119-86458-5
  2. BOAYRSKY, J. OCP Oracle Certified Professional Java SE 17 Developer Practice Tests. John Wiley. 2022. 780s. ISBN 978-1-119-86461-5
  3. Oracle Certified Professional, Java SE 17 Developer Certification Overview https://education.oracle.com/java-se-17-developer/pexam_1Z0-829

🌐 Elektronické zdroje:

  1. Oracle Java Dokumentácia: Java Platform, Standard Edition 11 API Specification, 2022
  2. Oracle Blog java
  3. Dzone Java Spotlight
  4. ArchiMate® 3.1 Specification, a Standard of The Open Group

🐞 Problémy a bugy, na ktoré môžete natrafiť

  1. 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
  1. 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 01 04 2023 18_33_37-Data Sources and Drivers

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

01 04 2023 18_34_04-Data Sources and Drivers

Príklad na výstupný reťazec/URL pre pripojenie sa na databázu

jdbc:mysql://mysql57.r2.websupport.sk:3311/Kurz_DB_SQL
  1. 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

premenne-prostredia

Ideálne po reštarte overiť v príkazovom riadku (CMD) s príkazmi:

java --version
javac -version
jshell

01 04 2023 18_36_14-Administrator_ C__Windows_System32_cmd exe

  1. 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ť...)

  2. 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.

About

☕ STU FIIT VAVA - Vývoj Aplikácií s Viacvrstvovou Architektúrou, Slovenská technická univerzita v Bratislave Fakulta Informatiky a Informačných Technológií STU FIIT v Bratislave

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published