Hello Maven. JSE vs. JEE, JEE vs Spring. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2. Bedők Dávid v0.

Hasonló dokumentumok
Hello Gradle. TestNG, Eclipse, IntelliJ IDEA. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2. Bedők Dávid v0.

Eclipse IDE. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 2. Bedők Dávid v0.6

Hello Gradle. JEE, Git, Gradle, TestNG, Eclipse, IntelliJ IDEA. Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 1

libgdx alapok, első alkalmazás

Mobil Informatikai Rendszerek

Java I. A Java programozási nyelv

JAVA webes alkalmazások

CI gyakorlat segédlet

BookStore #maven. Enterprise Application, Git, EJB, EAP/EAS, Logging, PostgreSQL/MySQL, JPA, Integration testing

Mobil Informatikai Rendszerek

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

Fási PHP függőségkezelés composerrel

BookStore #maven. Enterprise Application, Git, EJB, EAP/EAS, Logging, PostgreSQL/MySQL, JPA, Integration testing

AZ APACHE MAVEN ÉLETE ÉS HALÁLA.! Cservenák Tamás

Javadoc. Dokumentációs megjegyzés (2) Dokumentációs megjegyzés (1) Dokumentációs megjegyzés felépítése

Java I. A Java programozási nyelv

Széchenyi István Egyetem

Automatizált Java Build. ApacheAnt használatával

JUnit. JUnit használata. IDE támogatás. Parancssori használat. Teszt készítése. Teszt készítése

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Programozás I. 1. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

4. Gyakorlat: Csoportházirend beállítások

8. rész: Implementáció JDeveloperben

A Java EE 5 plattform

Viczián István IP Systems JUM XIX szeptember 18.

STANDARD DEVELOPMENT U.L. FACTORY SYSTEMS GROUP IT DEPARTMENT

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Javac és Eclipse útmutató

strings.xml res/values/strings.xml fájlban hozzuk létre a hiányzó string adatforrásainkat A jelenlegi helyett ez álljon: <resources> <string

Hardver modellezés SystemC-vel és SDL grafikus könyvtárral Visual Stúdió alatt

Gyakorlat és házi feladat tájékoztató

Madarassy László, mérnök, BME - Mobil Innovációs Központ. lmadarassy@mik.bme.hu

Hello Java Enterprise Edition

C# versus Java. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 3. Bedők Dávid v0.4

Alap számológép alkalmazás

Java Parancssor Maven-nel

2017/01/27 08:59 1/6 Gettext Rendszer

Programozási technológia 2.

Programozási technológia I.

C#, OOP. Osztályok tervezése C#-ban

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

Java Programozó képzés A&K AKADÉMIA 2019.

Java Challenge második forduló játékszabályai v1.2

Hello World. Óbudai Egyetem, Java Standard Edition Mérnök Informatikus szak, BSc Labor 1. Bedők Dávid v0.3

Indítsuk el az imént kicsomagolt Eclipse programot és kattintsunk a Help/Install new software menüre. A work with opcióhoz írjuk be a

MPLAB leírás V1.1. Projektek kezelése. MPLAB leírás - dr. Kónya László 1

Újdonságok és érdekességek CONSEDU BT.

RIA Rich Internet Application

Közösség, projektek, IDE

Hello Java Enterprise Edition

I. Bevezetés. 1. ábra A Java "logója"

Automatikus teszt futtatás, folytonos integráció

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

1. Gyakorlat: Telepítés: Windows Server 2008 R2 Enterprise, Core, Windows 7

Hová tűnt a sok kereszthivatkozás?

Kiszolgálók üzemeltetése. Iványi Péter

Flex: csak rugalmasan!

Automatikus teszt futtatás, build keretrendszerek

Hello, EJB! Egy egyszerű példa

Miről lesz szó? Setup Project készítése. Tulajdonságok. 1. Készítsünk egy setup project alkalmazást egy már elkészített, lefordított programhoz.

11. Gyakorlat: Certificate Authority (CA), FTP site-ok

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat

Code review és continous integration toolok BME-MIT

Webszolgáltatások kommunikációs overhead-jének becslése

SOPHOS simple + secure. A dobozba rejtett biztonság UTM 9. Kókai Gábor - Sophos Advanced Engineer Balogh Viktor - Sophos Architect SOPHOS

RapidMiner telepítés i. RapidMiner telepítés

Bevezetés a Seam keretrendszer használatába

Programozási nyelv Java

Java-ról Kotlinra. Ekler Péter AutSoft BME AUT. AutSoft

Data Integrátorok a gyakorlatban Oracle DI vs. Pentaho DI Fekszi Csaba Ügyvezető Vinnai Péter Adattárház fejlesztő február 20.

A Microsoft Visual Studio 2005 fejlesztőkörnyezet

Oracle BI Administration Tool. Repository felépítése

I. fejezet Hello Világ! Programozás tankönyv. II. Fejezet. Helló Világ! avagy a Miért?-ek elkezdődnek

BookStore #gradle. Enterprise Application, Git, EJB, EAP/EAS, Logging, PostgreSQL/MySQL, JPA, Integration testing

Első lépések. File/New. A mentés helyét érdemes módosítani! Pl. Dokumentumok. Fájlnév: pl. Proba

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Digitális elektronika gyakorlat. A VHDL leírástípusok

EBS fogyókúra György Zoltán Innovent Tanácsadó Kft október 9.

10. Gyakorlat: Alkalmazások publikálása Remote Desktop Szervízen keresztül

DiskStore #maven. Remote EJB, JNDI, Dependency management, Service client, Context root, InitialContext, MyBatis 3

Google Web Toolkit. Elek Márton. Drótposta kft.

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

9. MPI

MVC Java EE Java EE Kliensek JavaBeanek Java EE komponensek Web-alkalmazások Fejlesztői környezet. Java Web technológiák

JEE tutorial. Zsíros Levente, 2012

public class HelloWorld extends TestCase { public void testmultiplication() { // Testing if 3*2=6: assertequals ("Multiplication", 6, 3*2);

A felhőről általában. Kacsuk Péter MTA SZTAKI

C++ fejlesztés az ECLIPSE környezetben

Java és web programozás

Visual Basic 2005 Express Edition A VISUAL STUDIO HASZNÁLATA NEM LEKTORÁLT VÁLTOZAT

Szálkezelés. Melyik az a hívás, amelynek megtörténtekor már biztosak lehetünk a deadlock kialakulásában?

Szoftvertechnológia alapjai Java előadások

Az Oracle Fusion szakértői szemmel

Collections. Összetett adatstruktúrák

OPENCV TELEPÍTÉSE SZÁMÍTÓGÉPES LÁTÁS ÉS KÉPFELDOLGOZÁS. Tanács Attila Képfeldolgozás és Számítógépes Grafika Tanszék Szegedi Tudományegyetem

BackupPC. Az /etc/hosts fájlba betehetjük a hosztokat, ha nem a tejles (fqdn, DNS név) névvel hivatkozunk rájuk: # /etc/hosts #

Átírás:

Hello Maven JSE vs. JEE, JEE vs Spring Óbudai Egyetem, Java Enterprise Edition Műszaki Informatika szak Labor 2 Bedők Dávid 2017.09.18. v0.1 Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 1 / 24

Java project struktúra Avagy hogyan szervezzük forrásainkat? Java Build eszközök: javac batch files / bash scripts IDE (Eclipse, IntellJ IDEA,...) Apache ANT (+ Apache IVY) build tool Apache Maven Miket érdemes figyelembe venni? Gradle Lesznek egység tesztjeink? külön source folder a teszteknek (test és main) Lesznek erőforrásaink? külön source folder az erőforrásoknak (resources) Lesznek nem java forrásaink is? külön source folder a forrásoknak (java, scala, groovy, stb.) Java filozófia átláthatóság, egyértelműség classpath (cp) használata SAR*: JBoss specifikus APK**: android specifikus JAR, WAR, EAR, SAR*, APK** csomagolások alkalmazása Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 2 / 24

Java project struktúra javac Csak a "fantázia" szab határt a konfigurációnak (nincsenek szabályok)! javac programnak megadjuk az összes olyan könyvtárat, ahol forrásállományok találhatóak. Könyvtár struktúra bin/ src1/ source folder src2/ source folder Az Application osztály használja az ImperialToMetricCalculator osztály egy példányát. Mindkettő azonos csomagba fordul, ezért az alkalmazás nem importálja a kalkulátort, futás időben egy helyen lesznek. \hellotest 1 > javac -d./ bin./ src1 /hu/ qwaevisz / demo / Application. java./ src2 / hu/ qwaevisz / demo / ImperialToMetricCalculator. java 2 > java - cp./ bin hu. qwaevisz. demo. Application Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 3 / 24

Java project struktúra Eclipse IDE Eclipse "Java project" alapértelmezett konfigurációja: Könyvtár struktúra bin/ src/ source folder Eclipse "Java project" egység tesztekkel konfigurációja: Könyvtár struktúra bin/ src/ main/ source folder test/ source folder A legtöbb IDE-ben ezek teljeskörűen konfigurálható elemek (Eclipse: Project properties Java Build Path Source tab)! Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 4 / 24

Java project struktúra Maven Maven alapértelmezett könyvtár konfigurációja: Könyvtár struktúra src/ main/ java/ source folder resources/ source folder test/ java/ source folder resources/ source folder Ezektől Maven-ben is szabadon el lehet térni, de nem érdemes. Ha élünk ezzel, akkor minimális konfigurációval el tudjuk kezdeni a munkát! Megjegyzés : A resources könyvtárak bár tipikusan nem tartalmaznak lefordítandó forrást, ugyanúgy rajta vannak a classpath-on, hogy runtime a tartalmuk feldolgozható legyen. Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 5 / 24

JAR - Java ARchive ZIP formátum, mely (Java) byte code-okat (*.class), konfigurációs állományokat (pl. *.properties, *.xml, stb.) illetve egy speciális metaadatokat (kulcs-érték párokat) tartalmazó MANIFEST.MF állományt tartalmaz. Könyvtár struktúra META INF/ MANIFEST.MF hu/ qwaevisz/ demo/ HelloWorld.class Lorem.class log4j.xml Struktúrája előre definiált, opcionálisan forrásállományokat (pl. *.java, *.groovy, stb.) is magával hordoz (azonos helyen a byte code-dal). 1 Manifest - Version : 1.0 2 Created - By: 1.7.0 _67 ( Oracle Corporation ) MANIFEST.MF Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 6 / 24

Executable JAR file A Main-Class kulcsnak szerepelnie kell a MANIFEST.MF állományban, és a belépési pontként szolgáló osztály full 1 Manifest - Version : 1.0 qualified neve lesz az értéke. 2 Created - By: 1.7.0 _67 ( Oracle Corporation ) 3 Main - Class : hu. qwaevisz. demo. Application MANIFEST.MF 1 > cd bin 2 > jar cvfe calculator. jar hu. qwaevisz. demo. Application hu/ qwaevisz / demo / Application. class hu/ qwaevisz / demo / ImperialToMetricCalculator. class 3 > cd.. 4 > java - jar bin / calculator. jar create new archive verbose specify archive file name (2) sepcify entry point (main class) (3) Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 7 / 24

Eclipse OXYGEN IDE, 2017 június Eclipse IDE for Java EE Developers Letöltés: https://www.eclipse.org/downloads/ Verzió: 4.7.0 Telepítés: unzip vagy installer Integrált kiegészítők (plugins): Gradle Maven Git EclEmma Java Code Coverage... Továbbiak telepítése (Help / Eclipse Marketplace): TestNG (filter: testng) http://beust.com/eclipse Magyar billentyűzet kiosztás esetén a "{" (Ctrl + B) használata: Preferences General Keys Skip all brakepoints (Ctrl + Alt + B) Unbind Eclipse IDE alapvető kezelése: http://users.nik.uni obuda.hu/bedok.david/jse.html Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 8 / 24

Eclipse beállítása Code Style Formatter Window Preferences (type: formatter) Java Code Style Formatter New... / Import...: uni-obuda-java-formatter Initialize: Eclipse [build-in] Indentation Indent Statement within switch body Line Wrapping General Maximum line width: 160 Line Wrapping Enum declaration Policy: Wrap all elements, every element on a new line Constants policy: Wrap all elements, every element on a new line + Force split Comments Line width Maximum: 120 \eclipse\uni obuda java formatter.xml Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 9 / 24

Eclipse beállítása Save Actions Window Preferences (type: save actions) Java Editor Save Actions Perform the selected actions on save Format source code (all lines) Organize imports Additional actions - Configure Code Organaizing: Remove trailing whitespaces Code Style: Use blocks in if/while/for/do statements Member Accesses: Use this qualifier for field accesses: Always Member Accesses: Use this qualifier for method accesses: Always Unnecessary Code: Remove unused imports Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 10 / 24

IntelliJ IDEA IDE Letöltés: https://www.jetbrains.com/idea/ Kereskedelmi termék Community verzió pl. JavaEE-t nem támogat, de ezen IDE támogatás nélkül is tökéletesen alkalmas professzionális munkára (akár JavaEE projektek kezelésére is) Néhol gyorsabb mint Eclipse Más billentyűkiosztás, átszokni nem könnyű, de van lehetőség más IDE kiosztásának használatára Beépített Maven/Gradle/Git plugin Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 11 / 24

Hello World src main java hu qwaevisz hello Application.java 1 package hu. qwaevisz. hello ; 2 3 public class Application { 4 5 public static void main ( final String [] args ) { 6 System. out. println (" Hello World "); 7 } 8 9 public int add ( final int a, final int b) { 10 return a + b; 11 } 12 13 } Application.java [gradle maven]\helloworld Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 12 / 24

TestNG 3 rd party library http://testng.org/ GitHub: https://github.com/cbeust/testng Verzió: 6.11 Artifactory URL: org.testng:testng:6.11 group/groupid: org.testng name/artifactid: testng version: 6.11 Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 13 / 24

Egység teszt TestNG-vel src test java hu qwaevisz hello ApplicationTest.java 1 package hu. qwaevisz. hello ; 2 3 import org. testng. Assert ; 4 import org. testng. annotations. Test ; 5 6 public class ApplicationTest { 7 8 @Test 9 public void addnumbers () { 10 Application app = new Application (); 11 Assert. assertequals ( app. add (2, 3), 5); 12 } 13 14 } ApplicationTest.java Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 14 / 24

Apache Maven Build tool https://maven.apache.org/ Letöltés: https://maven.apache.org/download.cgi Verzió: 3.5.0 A szoftver teljes (fejlesztési) életciklusát támogatni kívánó eszköz. monorepo és multi-repo támogatás POM: Project Object Model Telepítés: unzip Környezeti változók: MAVEN_HOME c:\apps\apache maven 3.3.9 Path módosítása %Path%;%MAVEN_HOME%\bin Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 15 / 24

Maven Major properties A Maven elsődleges célja hogy teljeskörűen kezelje és összehangolja a fejlesztési folyamatokat, és mindezt a lehető legrövidebb (fejlesztési) idő befektetése mellett produkálja. A build folyamat könnyűvé tétele Egységes build rendszer kialakítása Minőségi projekt információk biztosítása Fejlesztési útmutatások biztosítása "best practice"-ek alapján Áttekinthető migráció biztosítása új lehetőségek bevezetésekor A Maven egy plugin execution framework, minden munkát plugin-ek hajtanak végre. Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 16 / 24

Maven 1 > mvn -- version 2 Apache Maven 3.3.9 ( bb52d8502b132ec0a5a3f4c09453c07478323dc5 ; 2015-11 -10 T17 :41:47+01:00) 3 Maven home : c:\ apps \ apache - maven -3.3.9\ bin \.. 4 Java version : 1.8.0 _102, vendor : Oracle Corporation 5 Java home : c:\ apps \ java \ jdk1.8.0 _102 \ jre 6 Default locale : en_us, platform encoding : Cp1252 7 OS name : " windows 7", version : "6.1", arch : " amd64 ", family : " dos " Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 17 / 24

Maven Phases validate a project korrektségének és a szükséges információk meglétének ellenőrzése compile a project forrásának lefordítása test a lefordított források egység tesztelése test framework alapján package a lefordított forrás becsomagolása a szállítási formátumba (pl. jar) verify integrációs tesztek futtatása és minőség ellenőrzési kritériumok vizsgálata install a szállított artifact helyi repository-ba telepítése (így elérhetővé válik más helyi project-ek számára mint függőség) deploy a szállított artifact távoli repository-ba telepítése (így elérhetővé válik más fejlesztők és project-ek számára) clean a korábban elkészült artifact(ok) takarítása site a project dokumentációjának generálása A phase-ek valójában a hozzájuk tartozó goal-okat fogját futtatni, contextus alapján (pl. packages végrehajt egy jar:jar goal-t, ha a project típusa jar, és war:war goal-t, ha a project csomagolási típusa war). Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 18 / 24

Maven Archetype Az archetypeok segítségével legenerálhatunk blueprint projekteket, mankókat, melyeket egyébként is elkészítenénk, mert mindenki így járna el (best practices). Ezek nélkül a legegyszerűbb hello world példa is viszonylagosan sok "gépeléssel" járna. Későbbiekben teljesen figyelmen kívül fogjuk hagyni az archetype-okat... Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 19 / 24

HelloWorld létrehozása archetype segítségével maven\helloworld 1 > mvn archetype : generate - DgroupId = hu. qwaevisz. hello - DartifactId = hellomaven - DarchetypeArtifactId = maven - archetype - quickstart - DinteractiveMode = false archetype Maven plugin generate goal (a plugin-hez tartozik) Létrejön a projekt struktúra és a pom.xml. Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 20 / 24

Hello Maven! 1 < project xmlns =" http: // maven. apache. org / POM /4.0.0 " xmlns:xsi =" http: // www.w3.org /2001/ XMLSchema - instance " xsi:schemalocation =" http: // maven. apache. org / POM /4.0.0 http: // maven. apache. org / maven - v4_0_0. xsd "> 2 < modelversion >4.0.0 </ modelversion > 3 < groupid >hu. qwaevisz. hello </ groupid > 4 < artifactid > hellomaven </ artifactid > 5 < packaging >jar </ packaging > 6 < version >1.0 </ version > 7 <name >Hello Maven </ name > 8 < properties > 9 < project. build. sourceencoding >UTF -8 </ project. build. sourceencoding 10 </ properties > 11 < dependencies > 12 < dependency > 13 < groupid >org. testng </ groupid > 14 < artifactid > testng </ artifactid > 15 < version >6.11 </ version > 16 <scope >test </ scope > 17 </ dependency > <packaging>jar</packaging> A projekt kimenete egy JAR állomány lesz. 18 </ dependencies > 19 </ project > Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 21 / 24

Maven Fordítás és futtatás 1 > mvn clean package Output: target/hellomaven 1.0.jar 1 > java -cp target / hellomaven -1.0. jar hu. qwaevisz. hello. Application Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 22 / 24

Maven Eclipse integráció Eclipse m2e pluginje felismeri a maven konfigurációs állományait, és annak megfelelően képes kezelni a projektet. Létezik Maven-hez is Eclipse plugin, mely legyártja az Eclipse specifikus állományokat, de ez a plugin már deprecated. Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 23 / 24

Eclipse Maven project File Import... Maven Existing Maven Project Project root directory: \helloworld Mit honnan? Az Eclipse Maven plugin (m2e) elsősorban a Maven projekt struktúra kezelése, a projektek importálása miatt fontos. Eclipse-ből futtatni Maven goal-okat már ízlés dolga (van aki minden ilyesmit Eclipse-ből szeret futtatni, van aki ezt külön terminal/command window-ban teszi meg). Bedők Dávid (UNI-OBUDA) Hello JavaEE 2017.09.18. v0.1 24 / 24