NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Lekce 1 - Úvod do Spring Boot frameworku v Javě

Vítejte u první lekce kurzu o Java frameworku Spring, který je současně nejpoužívanější framework pro tvorbu webových aplikací v Javě. Dnes si Spring představíme a porovnáme jej s alternativní knihovnou JEE. Dále si vysvětlíme, proč je Spring tak populární a rozdíl mezi jeho dvěma distribucemi. Řekneme si také, jaké technologie budeme v kurzu používat.

Minimální požadavky

Kurz předpokládá znalosti:

Pokud některé ze znalostí nemáte, absolvujte prvně daný kurz.

Vývoj webových aplikací v Javě

Vývojáři, kteří dnes chtějí vytvářet webové aplikace v Javě, si primárně vybírají ze dvou knihoven:

Pojďme si je představit a vysvětlit, proč si vybrat právě Spring a proč zvolíme distribuci Spring Boot.

Jakarta EE

Jakarta Enterprise Edition (zkráceně JEE) by se dala představit jako "podniková edice Javy". Dříve se jmenovala Java Enterprise Edition a byla spravována přímo společností Oracle, dnes již patří pod Eclipse Foundation. Jedná se o rozšíření do klasické Java Standard Edition. Důležité je si uvědomit, že se jedná pouze sadu rozhraní (bez implementace). Implementaci těchto rozhraní typicky dodává "komunita" (ostatní vývojáři / společnosti) formou tzv. aplikačních serverů.

Projekty napsané v prvních verzích tohoto frameworku typicky obsahovaly spoustu opakujícího se kódu (tzv. boilerplate kód) a zbytečných konfiguračních souborů. Java komunitě se tento přístup natolik nelíbil, že vytvořila Spring Framework.

Dnes je již rozdíl mezi JEE a Spring Frameworkem minimální. Obě technologie se liší pouze v rozhraních (jak vývojář framework používá / provolává metody), jinak umí de facto stejné věci. Programátor, který pochopí základy Spring Frameworku, do jisté míry pochopí i základy JEE. I přes vylepšení JEE ale zůstal Spring framework o něco populárnější.

Spring Framework

Prvotním cílem Spring Frameworku bylo ulehčit vývoj webových aplikací v Javě. Mezi výhody Springu nad prvotními verzemi JEE mimo jiné patřilo:

Je důležité si uvědomit, že některé "komponenty" Spring Frameworku pracují s rozhraním z JEE (např. s JPA). S těmito komponentami se setkáme v průběhu dalších lekcí.

Jak JEE, tak Spring Framework vyžadují ke spuštění tzv. servlet kontejner. Ten může být pro začátečníka zdrcující a obtížný nastavit (viz instalace a nastavení aplikačního serveru v JEE, které je rozepsané na jednu celou lekci). Tento nedostatek řeší Spring Boot.

Spring Boot

Spring Boot logo - Základy Spring Boot frameworku pro Javu

A dostáváme se ke knihovně, kterou budeme v kurzu používat. Spring Boot je nadstavba Spring Frameworku, která řeší výše zmíněný nedostatek. Implementuje tedy veškeré funkcionality Spring Frameworku a navíc má v sobě zabudovaný servlet kontejner (Tomcat), který by si vývojáři jinak museli nastavovat ručně. Tento kontejner při spuštění projektu automaticky vytvoří a nakonfiguruje server, ke kterému se budou moci připojovat uživatelé přes HTTP protokol (z webového prohlížeče).

Rozdíl je tedy v tom, že ve Spring Frameworku by si vývojář musel nastavovat server sám, zatímco Spring Boot ho nastaví za vývojáře. V kurzu budeme používat právě Spring Boot. Alespoň ušetříme pár vytrhaných vlasů, nějaký ten čas, nervy a také řádky kódu :)

Většinou se využívá Spring Boot i ve firmách, jelikož Spring Framework jako takový je moc složitý i na základní spuštění projektu. Kromě větší velikosti aplikace či webu nás nečeká žádná nevýhoda při zvolení Spring Boot namísto Spring Frameworku, takže si myslím, že volba je jasná :)

Vývojář, který se naučí Spring Boot, a nastoupí do firmy kde se používá Spring Framework, jej bude schopen bez problému ovládat.

Termíny spjaté s vývojem webových aplikací

Na úvod je důležité říci, že webové aplikace fungují výrazně odlišně od těch lokálních, které jsme v předchozích kurzech vytvářeli. Pojďme si představit jejich nejdůležitější principy.

Frontend a backend

Struktura většiny webů se dělí na:

  • Frontend - (Přední) část aplikace, která běží u uživatele v prohlížeči. Představuje uživatelské rozhraní, např. registrační formulář. Jedná se pouze o skořápku, ke které mají přístup uživatelé a která by zpravidla neměla mít hlubší logiku. Frontend komunikuje přímo s backendem.
  • Backend - (Zádní) část aplikace, která se již nachází na vzdáleném serveru. Obstarává funkčnost celého programu. Uživatele ji nevidí a nemají k ní přístup. Backend provádí logické operace, pracuje se soubory a databází.
Frontend vs backend - Základy Spring Boot frameworku pro Javu

Toto členění (na frontend a backend) nám také pomáhá lépe dělit práci mezi vývojáře. Ti se typicky specializují pouze na jednu z těchto částí. Backend vývojář nebude umět udělat hezké animace (protože na to se specializuje frontend vývojář) a naopak frontend vývojář zase nebude umět efektivně číst data z databáze (protože na to se zas specializuje backend vývojář).

Existuje ještě třetí skupina vývojářů, kteří se specializují jak na frontend, tak i na backend. Říkáme jim tzv. fullstack vývojáři.

V tomto základním kurzu budeme vyvíjet jak backend, tak i frontend, protože půjde o jednoduché projekty. Reálně se ve Springu typicky vytváří pouze serverová část (backend). Na ten se poté připojuje frontend přes nějaký javascriptový framework, jako je např. React nebo Angular. To vše si pak ukážeme v navazujícím kurzu :)

Příklad interakce mezi backendem a frontendem

Uveďme si jednoduchý příklad. Představme si, že máme webovou aplikaci, na které se uživatelé mohou registrovat a přihlašovat. Scénář, který popisuje registraci, by mohl vypadat nějak takto:

  1. Aplikace v prohlížeči vykreslí stránku s registračním formulářem
  2. Uživatel formulář vyplní
  3. Uživatel klikne na tlačítko "Registrovat se" (odešle formulář)
  4. Aplikace na serveru zpracuje odeslaná data z formuláře
  5. Aplikace uloží uživatelské údaje do databáze serveru (aby se mohl nový uživatel později přihlásit).

První tři kroky (vykreslení a interakce s uživatelem) provádí frontend. Čtvrtý a pátý (zpracování a uložení dat) krok provede již backend.

MVC

Spring Boot je postavený na populární MVC architektuře. To znamená, že aplikaci rozděluje do 3 logických vrstev:

  • na uživatelské rozhraní,
  • logiku a na
  • komunikační vrstvu, která tyto 2 vrstvy propojuje.

Vrstva pro uživatelské rozhraní pak může generovat stránky pro front-end, který jsme si představili výše. Aplikace je tím přehledná a jednoduše rozšiřitelná (např. neřešíme vzhled stránky v tom samém souboru, kde řešíme práci s databází). Tuto architekturu si představíme dále v kurzu v samostatné lekci, jelikož se vše točí právě kolem ní.

Dependency Injection

Možná tento návrhový vzor již znáte nebo jste se v praxi již setkali s problémy s předáváním závislostí. Výhodou Springu je, že má zabudovanou Dependency injection. To je způsob, jak si objekt řekne o další objekty, které ke své činnosti potřebuje a je na nich tedy závislý (anglicky "depends", proto "dependency").

Kdybychom nepoužívali Dependency Injection, musel by si každý objekt sám hledat a spravovat další objekty z aplikace nebo bychom mu je museli všechny ručně předávat. Ve velkých aplikacích by to bylo prakticky neproveditelné. Opět se nenechte ze začátku zmást, jakmile se dostaneme do reálného kódu, bude vše jasné, protože se o nic složitého nejedná.

Co budeme používat?

Pracovat budeme s následujícími technologiemi:

  • Maven – Jedná se o balíčkovací nástroj, který usnadňuje práci s knihovnami třetích stran (knihovny vyvinuté komunitou, nikoliv společností Oracle). Budeme tím primárně řešit vložení Springu do našeho projektu.
  • MySQL – Toto je databáze, se kterou bude Spring komunikovat. Můžeme použít samozřejmě i PostgreSQL, jen bude potřeba pozměnit nastavení. K tomu si vše řekneme.
  • Swagger – Jedná se o automaticky vygenerovanou dokumentaci k REST API, kterou budeme vytvářet až v dalších kurzech. Knihovna nám vygeneruje seznam tzv. "endpointů". Swagger není nutné stahovat, dáme jej do Mavenu.
  • IDE – Je jedno, v jakém IDE budete pracovat. Pokud mě ale chcete následovat úplně přesně, použijte IntelliJ Idea. Jeho Community Edition je dostupná zdarma na stránkách JetBrains. Doporučuji tvořit aplikaci právě v ní.

V příští lekci, Úvod do webových aplikací v Java Spring, si uděláme úvod do webových aplikací, abychom pochopili, proč jsou žádanější, než aplikace desktopové.


 

Všechny články v sekci
Základy Spring Boot frameworku pro Javu
Přeskočit článek
(nedoporučujeme)
Úvod do webových aplikací v Java Spring
Článek pro vás napsal Tomáš Střecha
Avatar
Uživatelské hodnocení:
533 hlasů
Autor se věnuje tvorbě backend webových aplikací v Javovém frameworku Spring boot, grafickému vykreslování v C++ společně s pomocí OpenGL.
Aktivity