Diskuze: Knihy o Jave
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, vezmu to trošku zeširoka .
Pokud budeš chtít programovat v Java EE neznamená to nějaký nový jazyk Java, ale znamená to, že se budeš zaměřovat na vývoj webových či podnikových aplikací a to znamená, že se budeš muset seznámit s obrovským množstvím různých rozhraní a jejich implementacemi a s nepřeberným množstvím různých frameworků.
Java EE nepoužívá nějakou jinou, lepší Javu. Pořád se jedná o jeden a tentýž programovací jazyk. Java EE je prostředí (platforma) pro vývoj aplikací. Platforma je název pro soubor programů, které umožňují vývoj a spouštění programů napsaných v programovacím jazyce Java (wiki). Platforma Java EE je určena pro vývoj enterprise aplikací (ale stále používá ten stejný programovací jazyk jako platforma Java SE). Protože je určena pro enterprise aplikace, nabízí rozhraní, které se v těchto enterprise aplikacích používají.
- Servlety
- JSP (Java Server Pages)
- JSF (Java Server Faces)
- JPA (Java Persistence API)
- JMS (Java Messaging Services)
- WS (Web Services)
- ...
Jelikož se jedná o rozhraní, je třeba si pak zvolit implementaci (konkrétní třídy) které toto API (rozhraní) implementují. Pokud budeš psát webové aplikace, budeš potřebovat webový (aplikační) server, který splňuje (implementuje) Servlet API. Pro práci s databází je možné používat JPA (které umožňuje s relační databází pracovat objektově) a vybrat si jednu z řady implementací (EclipseLink, Hibernate, DataNucleus, OpenJPA, ...).
Krátká poznámka k frameworkům.
Java EE znamená vývoj obrovských aplikací (např. bankovních a
telekomunikačních systémů) a pro zrychlení a usnadnění existuje v Javě
řada frameworků. Je možné např. vyvíjet webovou aplikaci pomocí Servletů
a JSP. Je to ale zdlouhavé a mnohem častěji se používají frameworky,
které sami využívají Servletů a JSP, ale programátora odstiňují a
nabízí určitou formu abstrakce. Na itnetwork je např. tutoriál na framework Wicket, který se používá
pro vývoj webových aplikací v Javě.
Dalším příkladem může být přístup k databázi. Je možné k ní
přistupovat pomocí "čistého" JDBC (což je také API) a nebo zvolit nějaký
framework, které přístup a práci s databází ulehčuje (Spring JDBC
Template, MyBatis, ...) - není třeba se starat o otevírání a uzavírání
spojení (connections). Samo JDBC představuje docela "nízko úrovňovou"
práci s databází a tak je možné zvolit rozhraní JPA (a některou z jeho
implementací) a tím získat vyšší míru abstrakce a zrychlení vývoje.
Pokud hledáš literaturu věnující se Java EE, tak češtinu či slovenštinu vynech. V angličtině je publikací celá řada např. "Beginning Java EE 7", "Java EE 7 Recipes", ..., ale myslím si, že téma je natolik obsáhlé, že je velmi těžké se jej učit z knihy, kterou budeš číst od začátku do konce.
Pokud uvažuješ o Java EE vývoji budeš pro začátek minimálně potřebovat tyto znalosti:
- SQL a databáze (enterprise aplikace v naprosté většině ukládají data a je třeba znát jak jazyk SQL tak alespoň základy týkající se databází). Aplikace v Javě často používají PostgreSQL - tutoriál nalezneš zde.
- práce s databází v Javě (JDBC, JPA - velmi často se používá implementace Hibernate)
- Verzovací systémy (minimálně GIT, firmy často používají SVN).
- Nástroje pro správu, řízení a automatizaci buildů aplikací (standardem je Maven)
- IDE (dobrý znalost vývojového prostředí, nejčastěji se používá Eclipse a IntelliJ)
- IoC (framework pro Inversion of Control, nejčastěji používaným frameworkem je Spring)
- Znalost Servletů a JSP a znalost nějaké webového frameworku (Spring MVC, Vaadin, Wicket, ....)
- WS (Webové služby - plus znalost XML a Json)
- Znalost webového nebo apliačního serveru (dobrou volbou je Tomcat)
Doufám, že jsem tě nevyděsil . Pro začátek se můžeš podívat např. na http://www.itnetwork.cz/java/jee/wicket popřípadě na nějaký jiný Java webový framework a zkusit vytvořit web v Javě.
+20 Zkušeností
+2,50 Kč
balaz.marek94:26.8.2015 14:25
Ďakujem za tak rozsiahlu odpoveď. Aj keď to, že Java EE je klasická java obohatená o rozsiahle množstvo knižníc a rozhraní som vedel, nevedel som mnoho ďalších informácií, ktoré si napísal pod tým. Zatiaľ z Javy EE som si skúšal v NetBeans-e tutoriály, ktoré som našiel v sekcií Java EE (prevažne JSF), avšak ku Wicket-u som sa ešte nedostal. Chcem sa ťa ešte spýtať, ak ti to nebude prekážať, je možné vytvoriť malé web aplikácie len za pomoci technológie JSF? Teda čiste hypoteticky keby som vytvoril jednoduchú web aplikáciu (bez nutnosti databázy), umiestnil ju na server, fungovala by bez problémov? (za predpokladu, že by bol kód napísaný bezchybne). Vďaka
vita:26.8.2015 16:31
Ahoj,
je jedno jak veliká (nebo malá) aplikace bude. Pokud bude napsána bezchybně, tak bude fungovat .
Java Server Faces (JSF) nepoužívám, ale pokud vím, tak staví na Servletech a určite je možné vytvořit velmi jednoduchou stránku jen pomocí Servletů, takže určite můžeš udělat i velmi jednoduchou stránku pomocí JSF.
Webová aplikace nemusí používat databázi. Většina webů (pokud vynecháme statické stránky) databázi používá, ale samozřejmě jednoduchá aplikace se bez ní obejde. Každá webová aplikace napsaná v Javě ale potřebuje webový kontejner (jedním z nejpopulárnějších je Tomcat). Webová aplikace v Javě je spuštěná ve webovém kontejneru, který jí poskytuje vše potřebné např. zpracovává dotazy (http requesty) a předává je správnému servletu. Kromě webového kontejneru nic víc nepotřebuješ.
Zde je příklad jednoduché webové aplikace, která se jmenuje "simple_devbook_project", a která se skládá ze dvou servletů (bohužel ke komentáři nelze připojit .zip soubor):
- BasicServlet (po nasazení přístupný na http://localhost:8080/…BasicServlet), který pouze vypíše text "This is response from the server."
- AdvancedServlet (po nasazení přístupný na http://localhost:8080/…ancedServlet?…), který získá z url parametry name, surname a age a ty vypíše v odpovědi.
Celá tato aplikace obsahuje pouze tyto dva servlety (dokonce nebyl potřeba ani web.xml). Neobsahuje ani html, css, JavaScript, nepracuje s databází.
BasicServlet.java
@WebServlet("/BasicServlet")
public class BasicServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public BasicServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html><head>");
out.println("<charset=UTF-8'>");
out.println("<title>Response to the request</title></head>");
out.println("<body>");
out.println("<h1>This is response from the server.</h1>");
out.println("</body></html>");
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
AdvancedServlet.java
@WebServlet("/AdvancedServlet")
public class AdvancedServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public AdvancedServlet() {
super();
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String name = request.getParameter("name");
String surname = request.getParameter("surname");
String age = request.getParameter("age");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE html>");
out.println("<html><head>");
out.println("<charset=UTF-8'>");
out.println("<title>Response to the request</title></head>");
out.println("<body>");
out.println("<h1>Hello</h1>");
out.println("<p>Your name is " + name + " and surname " + surname + " and your are " + age + " years old.</p>");
out.println("</body></html>");
out.close();
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
Este by stalo za zmienku to, ze free hostingov pre servelty je menej ako ostatnych.
Redhat ma celkom fajn riesenie, ale nic velke na tom asi nespustis: https://www.openshift.com/.
Ďakujem veľmi pekne za odpovede
Zobrazeno 6 zpráv z 6.