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




  • Brancheguiden
    Brancheguide logo
    Opdateres dagligt:
    Den største og
    mest komplette
    oversigt
    over danske
    it-virksomheder
    Hvad kan de? Hvor store er de? Hvor bor de?
    Konica Minolta Business Solutions Denmark A/S
    Salg af kopimaskiner, digitale produktionssystemer og it-services.

    Nøgletal og mere info om virksomheden
    Skal din virksomhed med i Guiden? Klik her

    Kommende events
    Computerworld Cloud & AI Festival 2025

    Med den eksplosive udvikling indenfor cloud & AI er behovet for at følge med og vidensdeling større end nogensinde før. Glæd dig til to dage, hvor du kan netværke med over 2.400 it-professionelle, møde mere end 50 it-leverandører og høre indlæg fra +90 talere. Vi sætter fokus på emner som AI; infrastruktur, compliance, sikkerhed og løsninger for både private og offentlige organisationer.

    17. september 2025 | Læs mere


    IT og OT i harmoni: Sikring uden at gå på kompromis med effektiviteten

    IT og OT smelter sammen – men med risiko for dyre fejl. Få metoder til sikker integration med ERP, kundesystemer og produktion. Tilmeld dig og få styr på forskellene og faldgruberne.

    24. september 2025 | Læs mere


    NIS2: Vi gør status efter tre måneder og lærer af erfaringerne

    Vær med, når vi deler oplevelser med implementering af NIS2 og drøfter, hvordan du undgår at gentage erfaringerne fra GDPR – og særligt undgår kostbar overimplementering.

    30. september 2025 | Læs mere