Hva er Java EE?
- Java EE er et sett med spesifikasjoner som blir implementert v.h.a containere.
- Containere er Java EE miljøer / runtimes som tilbyr tjenester til komponentene som kjører.
Java EE runtime definerer fire forskjellige typer komponenter som må støttes i en implementasjon
- Applets: GUI programmer som kjører i nettleser. Typisk Swing API, og helt nylig JavaFX?
- Applikasjoner: Programmer som kjøres på en klient. Typisk GUI eller batch programmer.
- Webapplikasjoner: Servlets, servlet filters, webevent listeners, JSP sider og JSF blir kjørt i en webcontainer og svarer på HTTP kall fra webklienter. Servlets støtter også SOAP og REST.
- Enterprise applikasjoner: Enterprise java beans, Java message service, Java transaction api, asynkrone kall, timer services, RMI / IIOP blir kjørt i en EJB container.
Java EE er delt opp i logiske domener som kalles containere. Hver container har en spesifikk rolle, støtter API’er og tilbyr forskjellige tjenester som sikkerhet, database aksess, transaksjoner, naming directory og resource injection.
Tjenester
Containere tilbyr som nevnt tjenester som gjør at vi kan konsentrere oss om å lage en god løsning istedetfor å utvikle tekniske tjenester.
- Java Transaction API (JTA)
- Java Persistence API (JPA)
- Validation
- Java Message Service (JMS)
- Java Naming And Directory Interface (JNDI)
- Java Mail
- JavaBeans Activation Framework (JAF)
- XML prosessering
- Java EE Connector Architecture (JCA)
- Security Services
- Web Services
- Dependency Injection
- Management
- Deployment
Nettverksprotokoller
Følgende to protokoller er støttet i Jave EE.
- HTTP, med klientdel fra java.net og serverdel via JSP, JSF, SOAP og REST, samt SSL (HTTP + SSL) via HTTPS.
- RMI-IIOP, som gir mulighet for å kalle objekter uavhengig av underliggende protokoll. Ved å bruke IIOP kan våre Jave EE komponenter kalle eksterne CORBA objekter.
Pakking
For å kjøres i en container må komponenter deployes. Dette gjøres ved å samle klasser, ressurser, biblioteker og metadata i et pakket .jar arkiv. Web applikasjoner pakkes for eksempel i et webarkiv (.war fil). En enterprise modul pakkes i et enterprise arkiv (.ear fil).
Problemer med Java EE
Dette innlegger er ikke ment som en “Bør jeg bruke Java EE, og eventuellt hvorfor”, men siden dette er en introduksjon / forklaring synes jeg det er på sin plass å nevne noen av de ulemper som ofte blir dratt frem ved bruk av Java EE.
- JEE består av 33! forskjellige spesifikasjoner. Det vil si at det er en umulig oppgave å ha oversikt over alle teknologiene som er tilgjengelig. Det må nevnes at bruken av “profiler” vil hjelpe litt på dette, for eksempel det faktum at “web profile” består av kun 15 spesifikasjoner.
- Det tar lang tid å se om koden fungerer. Det må først pakkes og deployes til applikasjonsserver før man kan starte / omstarte applikasjonen. Dette kan løses ved å ha en lokal applikasjonsserver gående for utvikling og test.
- Om man velger å bruke lokal applikasjonsserver for utvikling og test vil man skape et nytt problem, nemlig at man får et separat test / utviklings -miljø som ikke er identisk med produksjonsmiljøet.
Konklusjon
For å komme igang med Java EE trenger du en applikasjonsserver samt en forståelse for hva Java EE egentlig er for noe. Java EE er ikke hokus pokus, men en samling med APIer / Spesifikasjoner. Mange omtaler Jave EE som et paraplybegrep, noe som er ganske beskrivende.
Jave EE, IDE og applikasjonsserver kan du laste ned her.
Og husk at Jave EE ikke nødvendigvis er rette verktøy til jobben. Det kan fort bli å skyte spurv med kanon.