Avatar
balaz.marek94:

Zdravím, absolvoval som 2 semestri Javi na vysokej škole (kde som si zdokonalil vedomosti v Java SE na pokročilého), ďalej som si naštudoval skoro všetky tutoriály tejto stránky (s výnimkou JDBC, ktorú teraz doberám). Najviac ma zaujala Java EE, kde sa beriem ako začiatočník. Vedeli by ste mi odporučiť nejakú knihu o Jave, ktorá by mi pomohla si zdokonaliť zručnosti v Jave SE, alebo Java EE (v českom alebo slovenskom jazyku)? :)

 
Odpovědět 26.8.2015 8:26
Avatar
vita
Redaktor
Avatar
vita:

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ě.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět  +3 26.8.2015 11:44
Avatar
Odpovídá na vita
balaz.marek94:

Ď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 :)

 
Nahoru Odpovědět 26.8.2015 14:25
Avatar
vita
Redaktor
Avatar
Odpovídá na balaz.marek94
vita:

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_devbo­ok_project", a která se skládá ze dvou servletů (bohužel ke komentáři nelze připojit .zip soubor):

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);
        }
}
 
Nahoru Odpovědět 26.8.2015 16:31
Avatar
dobrakmato
Člen
Avatar
dobrakmato:

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/.

Nahoru Odpovědět 26.8.2015 20:34
Čekni stránku so zabavnými obrázkami z internetov: https://www.coolovo.eu?ref=1007
Avatar
balaz.marek94:

Ďakujem veľmi pekne za odpovede :)

 
Nahoru Odpovědět 29.8.2015 16:17
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.