Java alkalmazások üzemeltetése

DevOps | Java
Nehézség: Haladó
Tanfolyam hossza: 5 nap

JVM, GC, Maven, Gradle, teszt keretrendszerek, diagnosztikai eszközök, alkalmazásszerverek, CI

CÉLOK
A tanfolyam a Java-alkalmazások üzemeltetéshez kötődő problémaköreit ismerteti meg a résztvevőkkel. A résztvevők megértik, hogyan működik a Java-alkalmazások lefordítása, terjesztése és futtatása, valamint futásidejű paramétereik hangolása. Idetartozik a JVM és a Garbage Collector működése, paraméterezése. Szintén tárgyaljuk a memóriafelhasználás monitorozását, illetve a teljesítmény szűk keresztmetszeteinek feltérképezését az alkalmazásunkban. Kitérünk a webes környezetben, alkalmazazásszervereken futtatott Java-alkalmazásokra, és az alkalmazásszerverek alapvető menedzsmentjére is.

TEMATIKA

• A Java ökoszisztéma
– A főbb fogalmak áttekintése: fordító, forrásfájlok, class-fájlok, Java Virtual Machine (JVM), Just-In-Time (JIT) compiler, Garbage Collection (GC)
– Forráskód lefordítása és futtatása
– Alkalmazások csomagolása JAR formátumban
– Függőségek megadása fordítási és futásidőben, a classpath
– A jogosultságkezelés és a SecurityManager
– A Java 9 modularizált környezete, a modulleíró, a module path
– A JShell

• Java fejlesztésheze használt fejlesztőkörnyezetek
– Eclipse
– IntelliJ IDEA

• A build automatizálása
– Egyszerű fordítási szkriptek az Ant segédprogrammal
– A Maven keretrendszer és a convention over configuration elvek
– Függőségek kezelése a Maven keretrendszerrel
– A Gradle keretrendszer

• Java alkalmazások tesztelése
– Az assertions használata
– Unittesztek készítése (JUnit, TestNG)
– A mock-technika használata (Mockito)
– A Selenium keretrendszer
– Elfogadási tesztek (Cucumber, JBehave)
– Code Coverage eszközök használata (JaCoCo)
– Tesztelési módszerek (TDD, BDD)

• A diagnosztikai eszközök használata
– Naplózás az alkalmazásokban, naplózó absztrakciók és naplózó keretrendszerek (SLF4J, Logback)
– A Java Mission Control lehetőségei
– Memóriahasználat és szálak monitorozása
– Események figyelése triggerekkel
– Profiling a Flight Recorderrel
– A Java Management Extensions (JMX) szabvány

• A JVM és a GC konfigurálása
– Interpretálás és fordítás konfigurációja, a C1 és C2 compilerek
– A heapméret konfigurációja
– A GC megválasztása
– Naplózási beállítások

• Függőséginjektálás DI keretrendszerekkel
– A SOLID-elvek
– A függőséginjektálás szerepe
– Függőségek konfigurálása és feloldása
– A Spring és a Context Dependency Injection (CDI)

• Java-alkalmazások webes környezetben
– A HTTP protokoll áttekintése
– Java webkonténerek (Tomcat, Jetty, Undertow)
– Dinamikus webalkalmazások Servlettel
– Webes keretrendszerek, Front Controller és Application Controller tervezési minták
– Objektumrelációs leképezés (ORM) és a Java Persistence API (JPA)
– Webalkalmazások csomagolása és deployolása webkonténereken
– Telepítésleírók és konfigurációs fájlok
– Konténerfüggő konfiguráció általános módjai

• Java backendalkalmazásokban
– Teljes Java EE alkalmazásszerverek
– Az Enteprise JavaBeans (EJB), Stateless, Stateful és Singleton session beanek
– Aszinkron üzenetsorok a Java Messaging System (JMS) segítségével.
– Web Services endpointok és kliensalkalmazások
– REST endpointok
– WebSocket endpointok

• Continuous Integration
– A verziókezelés alapjai (git)
– Branchelési stratégiák
– A Jenkins CI tool