Hæld kaffe i webserveren: Java Server Pages

Java Server Pages lover at være Java-verdens svar på ASP og PHP. Men i virkeligheden er det noget lidt andet. Find ud af hvad det er, og læs om styrkerne og svaghederne i konceptet.

JSP -hvad er det?

I juni 99 lancerede Sun Microsystems Java Server Pages (også kaldet JSP), som er indlejret Java-kode i HTML-dokumenter, ligesom det kendes fra Microsofts ASP-teknologi og PHP i Open Source/Unix-miljøet. Java havde i forvejen en glimrende placering i form af servlets, som er Java-programmer til servere.

Men det er ikke så smart, som det lyder. Problemet med at skrive binære programmer til brug i webservere er, at programmets output er HTML - og en stor del af HTML-koden er jo design og formattering. Hver gang, sidens design skal ændres, skal der rettes i koden, og programmet skal kompileres om. Det er selvfølgelig ikke særlig hensigtsmæssigt, da design og funktionalitet ikke har noget med hinanden at gøre.

Samtidig viste scripting-sprogene sig at være rigtig populære blandt udviklere, da de er nemme at skrive og vedligeholde, og tillige med at ydelsen for scripts blev forbedret. Microsoft byggede ASP ind i sin IIS-webserver, og Apache fik sig en perlfortolker indbygget med modulet mod_perl. Før disse muligheder var til rådighed, måtte udvikleren benytte CGI som bindeled mellem server og fortolker, og alt i alt gav det en temmelig dårlig ydelse.

Sun, der gerne ser Java bygget ind i alt der kan håndtere bits, ville ikke stå tilbage for nogen, og firmaet introducerede i juni 99 Java Server Pages (JSP) for omverdenen.

JSP ligner umiddelbart de andre websprog - her udskrives tallet 10 og strengen "Hallo":


<HTML>
<BODY>
<% int i = 10; %>
<%= i %>
<P>
<B><%= "Hallo" %></B>
</BODY>
</HTML>

Overfladisk set ligner JSP altså de andre scripting-sprog, men dets sigte og anvendelse er ikke helt som de andre. Hvor ASP og i særdeleshed PHP lægger op til at bygge funktionaliteten direkte i scriptet, fungerer JSP mere som en slags front-end for de servlets og JavaBeans, der så indeholder funktionaliteten. Der kan selvfølgelig siges både pro et contra om begge muligheder.

Scripts contra objekter

Scripts contra objekter
Ved at indbygge logikken ind i scripts, har man et meget fleksibelt miljø. Man kan hurtigt tilføje funktionalitet og lave ændringer, men til gengæld mister man hurtigt overblikket, og det kan blive svært at identificere problemer. Dette forstærkes yderligere af, at større applikationer ender med at sprede sig over mange scripts. Hvert enkelt script dækker så en del af de features, brugeren har, men opdelingen sker udfra et grænseflade-perspektiv, og det er ikke nogen god måde at programmere på.

Omvendt giver det nogle indlysende fordele at bygge funktionaliteten ind i binære moduler, om det så er JavaBeans, COM, CORBA-objekter eller moduler som i Apache. Man kan programmere på en fornuftig facon, og frem for alt får man gemt koden af vejen, så man ikke fristes til at lave hovsa-løsninger.

Man kan altså sige, at i systemer med en stor kompleksitetsgrad, for eksempel systemer der kræver transaktionsstyring, kan det være en rigtig god ide at bygge funktionaliteten ind i en sort kasse, der kan have sit eget stille liv.

Objekter i HTML'en

Problemet med objekter
Der nævnes ofte to problemer ved at benytte en objektorienteret tilgang i webverdenen. For det første er webbet af natur tilstandsløst. Det gør, at tilstandene, for eksempel at identificere en bruger igennem en succesiv række af forespørgsler (en session), skal bæres "ved siden af", hvor Java-objekter i modsætning hertil altid selv er bærere af deres tilstand.

I JSP skal sessioner håndteres ved et session-objekt, og det giver altså en lidt uvant konstruktion, da session-objektet lever ved siden af alle andre objekter - og ikke hænger sammen med dem.

Det andet problem er simpelt hen, at Java er et meget abstrakt sprog, hvilket gør, at der tilsyneladende skal skrives en masse kode for at producere en lille smule. Java-programmørerne kan fortælle os, at det senere hen giver os en meget velstruktureret kode, men de kodestumper, der indlejres, er jo som regel småtterier, da hovedparten af logikken er placeret i en servlet, og da kan Java virke lidt tungt.

Hertil har Sun fundet på, at lave en række tags, der tager sig af ofte udførte opgaver. Problemet er her, at udvikleren også skal have styr på disse tags ud over Java og de JSP-specifikke objekter. Det smarte er, at det giver en nem måde at hente og sætte værdier, for eksempel fra en JavaBean:


<jsp:setProperty id="localName" property="serialNumber" value="string" />

Som en sidste ting kan det nævnes, at Java ikke er noget nemt sprog at lære - slet ikke i sammenligning med VBScript, JScript/Javascript, PHP og Perl, som er de foretrukne sprog i scripting-miljøerne. Til gengæld kan man en masse andre ting med Java end bare JSP, når man først har lært det.

Kvaliteterne i JSP
Der kan retfærdigvis også siges mange gode ting om JSP. For det første er der de førnævnte fordele ved at indkapsle logik, som udviklere i Microsoft-miljøer også kan opnå med COM-objekter. Udover det kan der nævnes de almene egenskaber for Java:

  • Exceptionel portabilitet
  • Sikkerhedsmodel ved distribuerede applikationer
  • Objektorientering og "hård" typekontrol
  • Meget stort udvalg af features i klassebiblioteker
  • Strømlinede API'er (Application Programming Interfaces)

    Blandt de store firmaer, der godt kan lide Java, finder vi IBM, og det er jo ikke så mærkeligt, da firmaet producerer en mængde forskellige operativsystemer. Ved store, dyre udviklingsprojekter er der altså en klar pointe i portabilitet.

    Relevant link:
    CNet: Intro to JavaServer Pages

  • Annonce

    Netcompany A/S

    Test Consultant

    Københavnsområdet

    BEC Financial Technologies

    Business Continuity Manager - Business Impact & Criticality

    Region Sjælland

    Statens IT

    Statens IT søger 3 fuldtidskoordinatorer

    Københavnsområdet

    Capgemini Danmark A/S

    AI/Data Engineer

    Københavnsområdet

    Annonceindlæg fra Salesforce

    Det vigtigste AI-spørgsmål handler ikke om valg af model

    Det er mindst lige så afgørende at optimere overblik, kontekst og datakontrol som at beslutte, hvilken AI-model man skal satse på.

    Navnenyt fra it-Danmark

    Arctic Wolf Networks har pr. 3. august 2026 ansat Johnny Krogsboll som Head of Sales Engineering for Norden.Med base i Stockholm får han ansvaret for Arctic Wolfs samlede Sales Engineering-organisation i den nordiske region.<br /><br />Johnny Krogsboll skal være med til at udbygge Arctic Wolfs tilstedeværelse i Norden og hjælpe virksomheder og organisationer med at stå stærkere over for et stadig mere komplekst cybertrusselsbillede. Det skal blandt andet ske i tæt samarbejde med Arctic Wolfs vigtigste kanalpartnere i regionen.<br /><br />Gennem sin karriere har Johnny Krogsboll arbejdet med og rådgivet virksomheder hos blandt andre Hewlett-Packard, Trend Micro og Palo Alto Networks med fokus på at skabe konkret værdi af deres teknologiinvesteringer. Nyt job

    Johnny Krogsboll

    Arctic Wolf Networks

    LCG har pr. 1. september 2026 ansat Thomas Wong, 47 år,  som Director of Cyber & Risk Advisory. Han skal især beskæftige sig med Ansvar for at udvikle LCG’s rådgivning inden for cybersikkerhed, cyberrisiko og GRC. Han kommer fra en stilling som VP of security hos Atea. Nyt job
    Sophie Dalsgaard Myhrmann, er pr. 1. september 2026 ansat hos Elbek & Vejrup A/S som Project Manager i Logistik & Produktion. Hun skal især beskæftige sig med projektledelse indenfor logistik og produktion. Hun er nyuddannet cand.it, i IT, kommunikation og Organisation fra Aarhus Univeristet. Nyt job

    Sophie Dalsgaard Myhrmann

    Elbek & Vejrup A/S

    Genetec har pr. 1. august 2026 ansat Jan Julin som Channel Account Executive. Han skal især beskæftige sig med styrke samarbejdet med partnere og kunder i Danmark, Finland og Baltikum. Han kommer fra en stilling som Senior Business Development Manager hos Dahua Technology. Han har tidligere beskæftiget sig med videoovervågning, adgangskontrol, sikkerhedsteknologi, salg og forretningsudvikling. Nyt job

    Jan Julin

    Genetec