| 
        Vyučující
     | 
    
        
            
                - 
                    Červa Petr, doc. Ing. Ph.D.
                
 
            
                - 
                    Smola Ondřej, Ing.
                
 
            
         
     | 
    | 
        Obsah předmětu
     | 
    
        Přednášky 1. Základní komponenty Java Virtual Machine (JVM), přehled aktuálních inovací v jazyce Java. Aplikační servery pro Java aplikace. 2. Základní struktura projektu v Jave, nástroje pro správu životního cyklu projektu a závislostí (např. Maven), nástroje pro automatizované nasazení (např. Jenkins). 3. Rozdělení platformy Java (Java SE, Java EE). Tvorba enterprise aplikací s pomocí frameworku Spring - přehled modulů. Úvod do frameworku Spring - Inversion of Control, Dependency injection. 4. Struktura aplikace ve Springu - konfigurační třídy a soubory, profily (produkční, testovací, vývojový), testování aplikace (např. JUnit). Princip Test Driven Development (TDD). 5. Spring modul Model View Controller (MVC) a praktické základy komunikace přes protokol http (stavové kódy, hlavičky, verzování). 6. Práce s relačními databázemi ve Springu, modul Spring JDBC. Verzování databáze. 7. Objektově-relační mapování na platformě Java pro abstrakci databázové vrstvy, specifikace JPA - Hibernate. 8. Principy NoSQL databází (např. MongoDB) a modul Spring Data. Práce s daty v NoSQL databázích (např. Map Reduce). 9. Způsoby integrace aplikací: RPC, REST, SOAP, Messaging. 10. Modul Spring REST, objevování API pomocí HATEOS. 11. Systémy pro zasílání zpráv (např. RabbitMQ), model producent-konzument, základní typy front.   12. Bezpečnost aplikací, modul Spring Security. 13. Správa aplikací: logování, konfigurace, monitoring, profiling. 14. Alternativní jazyky na platformě Java (Scala, Groovy, Clojure).  Cvičení  1. Seznámení s IDE (IntelliJ IDEA / Eclipse), úvod do práce s vybraným verzovacím systémem. 2. Příklad Java aplikace a její umístění na aplikační server. 3. Správa životního cyklu projektu pomocí nástrojů pro automatizaci. 4. Tvorba aplikace ve frameworku Spring a nastavení IoC kontejneru. 5. Konfigurace profilů, vývoj na principu TDD, testování aplikace. 6. Tvorba webové aplikace s využitím Spring MVC. 7. Připojení aplikace k relační databázi. 8. Využití objektově-relačního mapování pro abstrakci databázové vrstvy. 9. Práce s NoSQL databází, ukázka úlohy Map Reduce. 10. Integrace aplikace s externím API. 11. Tvorba REST API. 12. Integrace systému pro zasílání zpráv. 13. Zabezpečení aplikace pomocí Spring Security. 14. Správa aplikace, nastavení logování. 
         
         
     | 
    | 
        Studijní aktivity a metody výuky
     | 
    
        
        Monologický výklad (přednáška, prezentace, vysvětlování)
        
            
                    
                
                    
                    - Domácí příprava na výuku
                        - 50 hodin za semestr
                    
 
                
                    
                    - Účast na výuce
                        - 56 hodin za semestr
                    
 
                
                    
                    - Příprava na zkoušku
                        - 44 hodin za semestr
                    
 
                
             
        
        
     | 
    
    
        
        
            | 
                Výstupy z učení
             | 
        
        
            
                
                Předmět seznamuje studenty s principy a nástroji, které jsou v praxi nutné pro vývoj, správu a testování jakékoli pokročilejší a rozsáhlejší softwarové aplikace. Kromě vysvětlení výchozích teoretických principů proto bude v rámci celého semestru postupně prakticky vyvíjena a vylepšována ukázková webová databázová aplikace, přičemž obsahem výuky nebude jen samotné programování, ale i nástroje nutné pro správu projektu, verzování, testovaní, logování, integraci, automatizovanou správu závislostí a automatizované nasazení. Vývoj aplikace bude probíhat na platformě Java s využitím frameworku Spring. Použité technologie a představené principy budou ovšem moci studenti v praxi využít například i při vývoji aplikací pod frameworkem .NET či dalšími.
                 
                Tvorba enterpise webových a databázových aplikací ve frameworku Spring, práce s nástroji pro správu projektu, verzování, testovaní, logování, integraci, automatizovanou správu závislostí a automatizované nasazení, základní znalost systémů pro zasílání zpráv, základní znalost NoSQL databází.
                 
                
             | 
        
        
            | 
                Předpoklady
             | 
        
        
            
                
                
                Znalost základů relačních databází a základů programování v Javě. Základní znalost AJ nutná pro čtení dokumentace k jednotlivým frameworkům.
                
                
                    
                        
                    
                    
                
                
  
             | 
        
        
            | 
                Hodnoticí metody a kritéria
             | 
        
        
            
                
                    
                        Kombinovaná zkouška
                        
                        
                         
                        
                    
                    
                
                 Podmínkou zápočtu je aktivní účast na cvičeních. Zkouška je písemná a ústní.
                 
             | 
        
    
    | 
        Doporučená literatura
     | 
    
        
            
                
                - 
                    Craig Walls. Spring in action: covers spring 5.0. 2019. ISBN 978-1-61729-494-5.
                
 
            
                
                - 
                    Nicholas S. Williams. Professional Java for Web Applications. ISBN 9781118656464.
                
 
            
                
                - 
                    Thomas Roy Fielding. Architectural Styles and the Design of Network-based Software Architectures. 
                
 
            
         
         
         
     |