Programmering

Velocity eller FreeMarker?

Skabelonmotorer kan anvendes til en lang række udviklingsscenarier, hvor du vil generere tekst baseret på specifikke behandlingsregler og ofte bruges som visningskomponent i MVC-applikationer. I denne artikel forklarer Jeroen van Bergen, hvor skabelonmotorer passer ind i din applikationsarkitektur og viser dig nogle af de operationer, der er fælles for alle skabelonmotorer. Endelig sammenligner han de to førende Java-skabelonmotorer, Velocity og FreeMarker, hvad angår kraft, brugervenlighed og ydeevne.

Skabelonmotorer bruges i Java-udviklingsscenarier, hvor det er nødvendigt automatisk at generere tekst og formatere den i henhold til specifikke behandlingsregler. De to mest populære open source Java-skabelonmotorer er i øjeblikket Velocity og FreeMarker. Mens Velocity har været den førende skabelonmotor i lang tid, er FreeMarker begyndt at overhale den og tilbyder en hastighed og sofistikering, som du ikke altid finder i Velocity.

I denne artikel introducerer jeg kort dig til skabelonmotorer, hvor jeg forklarer, hvor de passer ind i din Java-applikationsarkitektur og viser dig nogle grundlæggende operationer, der er fælles for dem alle. Jeg sammenligner derefter Velocity og FreeMarker baseret på magt, brugervenlighed og ydeevne.

Denne diskussion er primært beregnet til læsere, der er nye for skabelonmotorer, der ønsker at lære, hvad de bruges til og få hjælp til at vælge mellem de to førende open source-muligheder.

Hvad er en skabelonmotor?

EN skabelonmotor er en komponent, der tager fast tekst og data som input, integrerer disse efter bestemte behandlingsregler og outputter et tekstdokument, der indeholder dataene. Skabelonmotorer er meget nyttige til opgaver såsom oprettelse af dynamiske websider, dokumenter og e-mails og kan også bruges til at generere kildekode.

Skabelonmotorer bruges hovedsageligt som visningskomponent i en MVC-arkitektur. Skabelonmotoren tilskynder til god adskillelse mellem den aktuelle visningslogik og den gengivne visning, der betragtes som en god ting. Brug af en skabelonmotor involverer noget overhead i opbygningen af ​​applikationen, men de fleste udviklere ser et hurtigt investeringsafkast, når applikationen skal ændres. Adskillelsen af ​​visningen fra logikken gør det let at opdatere applikationens udseende og følelse ved at justere skabelonerne snarere end at skulle omskrive kildekoden. Forholdet ligner CSS og HTML, hvor en ændring i stil kræver en mindre redigering af CSS-filen snarere end mange revisioner af HTML.

Oversigt over open source Java-skabelonmotorer

Som det ofte er tilfældet, når du udvikler på Java-platformen, har du mange Java-baserede skabelonmotorer at vælge imellem. Jeg har forsøgt at sammensætte en omfattende liste over alle Java-skabelonmotorer, der i øjeblikket er tilgængelige. Nogle af disse er ægte skabelonmotorer i den forstand, at de ikke er udviklet med en bestemt type applikation i tankerne. Nogle er specialmotorer, der sigter mod at udføre en bestemt form for dokumentoprettelse, såsom dekorering af websider. Hvis en skabelonmotor ikke er beregnet til almindelig brug, kan du se en eksplicit beskrivelse af den applikationstype, den er beregnet til.

Tabel 1. Skabelonmotorer til Java-platformen

NavnVersionFormålURLLicens
Hastighed1.5Generel skabelonmotor//velocity.apache.org/Apache-softwarelicens
FreeMarker2.3.10Generel skabelonmotor//www.freemarker.org/index.htmlBSD-licens
SiteMesh2.3Websides layout og dekoration//www.opensymphony.com/sitemeshOpenSymphony-licens
TeaServlet2.3web sider//teatrove.sourceforge.netTe-licens
Jamon2.3.0Generel skabelonmotor//www.jamon.org/index.htmlMozilla Public License
WebMacro Generel skabelonmotor//www.webmacro.org/GNU General Public License