1. Vad är Java EE?
Java EE (Java Enterprise Edition) är en specifikation för hur en Java-applikationsserver (Java EE-server) ska fungera. En Java EE-server används vanligen till att bygga internetapplikationer. Java EE är alltså samlingsnamnet på en grupp tekniker och en specifikation på hur dessa ska arbeta tillsammans. Denna tutorial kommer inte att beskriva Java EE i sin helhet, utan endast fokusera på grunderna.
2. Vad ingår i Java EE?
Java EE består huvudsakligen av 3 delar:
- Komponenter (Application components). Dessa kommer du som programmerare att skriva själv. De typer av komponenter som man kan skapa är:
- Applets är javakomponenter som lever i webbläsaren, ofta med grafiska funktioner.
- Applikationsklienter är "vanliga" javaprogram som installerats på användarens dator som kommunicerar med Java EE-servern mha RMI.
- Servlets är javaklasser som kan svara på förfrågningar via internet på protokollet HTTP.
- JSP (Java Server Pages) är ett enklare sätt att skriva servlets. De som kan PHP eller ASP känner snabbt igen sig i JSP.
- EJB (Enterprise JavaBeans) är en specifikation för hur man bygger distribuerade applikationer på serversidan.
- Behållare (Containers). När man talar om Java EE pratar man om behållare istället för JVM, även då de gör liknande saker.
På samma sätt som en klass bara kan köras av en JVM, kan en komponent bara köras av en behållare. Det finns en behållartyp för varje komponenttyp. Java EE-specifikationen kräver att en Java EE-server har två behållare:
- Webb-behållaren som kör Servlets och JSP.
- EJB-behållaren som kör EJBs.
Behållaren är skriven av Java EE-plattformsutvecklaren (se
roller ). JSP och servlets är egentligen samma komponenttyp och sköts därför båda av webb-behållaren (som på dessa sidor även kalls webbmotorn eller kort och gott servern).
- Resurshanterare (Resource manager drivers). Dessa hanterare sköter kontakten med utomstående mjukvara. Exempel på resurshanterare är JDBC, JavaMail och JMS.
3. Servlet eller JSP?
I Java EE finns två olika sätt att svara på en HTTP-förfrågan, nämligen med en servlet och med en JSP-sida. Vilken metod man väljer är en smaksak:
- Servlet: Servleten är egentligen en vanlig klass, och en javaprogrammerare känner lätt igen sig. För varje typ av förfrågan definieras en metod, t.ex. GET anropar doGet() hos servleten. Metoden init() anropas då en instans av servleten laddas och destroy() innan instansen förstörs. All utskrift till webbläsaren sker via out.print()-metoder, och därför är det svårt att se hur HTML-koden ser ut i servleten. Eftersom allt som sker i servleten utförs med metoder är den ofta lättare att använda för programmeraren, som är van att tänka funktionellt.
- JSP: JSP-sidan liknar en HTML-sida med insprängda kodsnuttar där de behövs. JSP har tagit HTML-programmerarens sida, och man får snabbt en överblick över hur HTML-koden ser ut. Däremot kan javaprogrammeraren få dålig överblick.
4. Model View Controller
Webbapplikationer skrivna i Java EE går relativt lätt att dela upp i flera lager. Bilden nedan föreställer den generella strukturen hos Java EE:
Anledningen till att man vill ha uppdelning i lager är:
- Olika yrkesroller kan arbeta med samma projekt utan att är att inkräkta på varandras område.
- Man får en klarare uppdelning av koden.
Ofta pratar man om de tre lagren Model View Controller (MVC). Nedan beskrivs lagren i MVC och vad de motsvarar i Java EE:
- View (Presentation). Detta lager är det som användaren ser i webbläsaren, alltså HTML, Javascript, Flash, CSS-mallar, bilder osv. JSP-sidan ser till att sammanföra allt presentationsmaterial till den HTML-sida som ska skickas till användaren, på samma sätt som tex ASP. Vill man ha en strikt MVC-uppdelning ska endast den del av koden som handlar om presentationen ligga i JSP-sidan. Detta lager programmeras av en webbkomponentutvecklare (se
roller ), som inte behöver kunna mycket om affärslogiken.
- Controller (Affärslogik). I detta lager finns affärslogiken, alltså huvuddelen av javakoden. Affärslogiken placeras i javaklasser eller EJB, som kan provköras utan att presentationslagret är färdigt. På detta sätt kan utvecklingen av presentation och affärslogik ske parallellt. Affärslogiken programmeras av en vanlig javaprogrammerare eller en EJB-utvecklare (se
roller ), som inte behöver kunna mycket om användargränssnitt.
- Model (Data). Detta lager innehåller data, och motsvaras vanligtvis av en databas eller XML-sidor. Ansvaret för datalagret kan tilldelas en databasadministratör. Databasadministration ligger utanför Java EE-arkitekturen och kommer inte att beskrivas här.
Dessa tre lager kan sedan ytterligare delas upp i nya lager beroende på applikationens komplexitet. En diskussion om fördelar och nackdelar med att använda lager finns på
systemarkitektur/lager .
5. Vad ska Java EE kunna utföra?
Nedan listas de viktigaste tjänsterna som en Java EE-server måste kunna erbjuda:
- HTTP. Java EE-servern kan svara på HTTP-förfrågningar med JSP och servlets.
- HTTPS. Java EE-servern kan svara på HTTPS-förfrågningar. HTTPS är HTTP över SSL.
- JavaBean Activation Framework måste implementeras.
- JTA (Java Transaction API). Java EE-servern kan hantera transaktioner. En transaktion är en serie handlingar som utförs på en gång eller inte alls. Genom att använda transaktioner kan man minska risken att databasen blir korrupt.
- JavaIDL. Java EE-servern kan ansluta till CORBA-objekt via JavaIDL.
- JNDI (Java Naming and Directory Interface). Java EE-servern implementerar namn och katalogtjänster.
- JDBC (Java DataBase Connectivity). Java EE-servern kan hantera databaser. JDBC erbjuder ett standardiserat sätt att kommunicera med en databas, så den faktiska databasen kan bytas till ett annat fabrikat utan att koden behöver ändras.
- JavaMail. Java EE-servern kan skicka mail.
- JMS (Java Messaging Service). Java EE-servern kan (sedan Java EE 1.3) sköta asynkron meddelandehantering.
- JAXP (Java API for XML Processing). Java EE-servern kan tolka och omforma XML.
På denna webbplats kommer inte alla delar av Java EE att diskuteras. Vill du veta mer om Java EE kan du kolla in
java.sun.com/j2ee .
6. Java EE 1.4
Följande specifikationer måste uppfyllas av en server som är Java EE 1.4 certifierad:
7. Java EE 1.5
En server som är Java EE 1.5-certifierad måste implementera följande specifikationer:
- JSR-244: Java Platform, Enterprise Edition 5 (Java EE 5)
Web Services Technologies
- JSR-109: Implementing Enterprise Web Services
- JSR-224: Java API for XML-Based Web Services (JAX-WS) 2.0
- JSR-101: Java API for XML-Based RPC (JAX-RPC) 1.1
- JSR-222: Java Architecture for XML Binding (JAXB) 2.0
- JSR-67: SOAP with Attachments API for Java (SAAJ)
- JSR-173: Streaming API for XML
- JSR-181: Web Service Metadata for the Java Platform
Web Application Technologies
- JSR-252: JavaServer Faces 1.2
- JSR-245: JavaServer Pages 2.1
- JSR-52: JavaServer Pages Standard Tag Library
- JSR-154: Java Servlet 2.5
Enterprise Application Technologies
- JSR-250: Common Annotations for the Java platform
- JSR-220: Enterprise JavaBeans 3.0
- JSR-112: J2EE Connector Architecture 1.5
- JSR-925: JavaBeans Activation Framework (JAF) 1.1
- JSR-919: JavaMail
- JSR-914: Java Message Service API
- JSR-220: Java Persistence API
- JSR-907: Java Transaction API (JTA)
Management and Security Technologies
- JSR-88: J2EE Application Deployment
- JSR-77: J2EE Management
- JSR-115: Java Authorization Contract for Containers