OpenSource-produkter för programutveckling - en jämförelse ● Byggverktyg (make, Ant, Maven) ● Template Engines (XSLT, Velcity, Freemarker) ● MVC-ramverk (Spring MVC, Struts, MyFaces, Expresso, Turbine) ● Persistens (Java Persistence API, Hibernate, Toplink, JDO)
Byggverktyg - make GNU Make, BSD Make, Microsoft nmake Vad tillhandahåller make? ● Möjlighet att bygga stora applikationer för nästan alla kompilerande språk ● Man gör regler som uppdaterar mål-filer, som härleds från andra filer. (exempelvis skall objektfiler uppdateras om källkodsfiler ändras)
Byggverktyg - make Begränsningar ● Makefiler ej porterbara ● Krånglig syntax ● Kan ta tid att bygga stora projekt (rekursion)
Byggverktyg - make Exempel cd /projects/maketest cat Makefile make./helloworld
Byggverktyg - Ant Apache-projekt – ant.apache.org Vad tillhandahåller Ant (Another Neat Tool)? ● Byggverktyg som är oberoende av operativsystem ● Understödjer programutveckling i de flesta språk: Java,.Net, C, C++, Fortran,... och IDE:er: Eclipse, JBuilder, IntelliJ,... ● Enkelt att bygga ut med egna ”tasks”
Byggverktyg - Ant Begränsningar ● I stora projekt blir build.xml lång ● Svårt att integrera då man har flera projekt som är beroende av varandra ● Man får hela tiden skriva om grundstrukturen i build.xml
Byggverktyg - Ant Exempel /usr/tomcat/bin/startup.sh cd /projects/stockholmstad/mallprojektet/trunk cat build.xml ant stop ant deploy ant start
Byggverktyg - Maven Apache-projekt – maven.apache.org Vad tillhandahåller Maven? ● Enkel byggprocess (Man skall inte behöva bry sig om detaljer) ● Enhetligt byggsystem – XML-baserad konfigurationsfil - Project Object Model, POM – plugins som är gemensamma för alla Maven-projekt)
Byggverktyg - Maven ● Aktuell projektinformation (site!) – förändringsloggar från v-hanteringssystemet – javadoc – xref till källkoden – maillistor till användare – listor över beroenden – rapporter över enhetstester (inklusive code coverage)
Byggverktyg - Maven ● Hjälpmedel för att utveckla bra källkod – enhetstester ingår automatiskt i byggcykeln – tester och källkod i separata källkodsträd – använder case-konvensionerna för enhetstest – rapporter över hur källkodskonvensioner följs
Byggverktyg - Maven Exempel: cd /projects/vegas/vegas-server/trunk cat pom.xml mvn site cd target/site file:///projects/vegas/vegas- server/trunk/target/site/index.html
Byggverktyg - jämförelse make (+) ● kräver inte Java, finns oftast i OS:et ● enkel byggmodell ● bygger nästan alla kompilerande språk make (-) ● gammalt (1977) => snårig syntax ● kan ej själv analysera beroenden i moderna språk ● en Makefile kan ej porteras till andra OS
Byggverktyg - jämförelse Ant (+) ● build.xml ”oberoende” av OS ● Enkelt att utöka med egna tasks ● bygger de flesta språk Ant (-) ● Kräver att java är installerad på maskinen ● build.xml blir lätt stor ● stödjer inte flera projekt som är beroende av varandra bra
Byggverktyg - jämförelse Maven (+) ● Gemensam hantering av beroenden för samtliga Maven-projekt ● Uppmuntrar till bra programmering ● Bygger en ständigt aktuell informationssite Maven (-) ● Kräver att java är installerad på maskinen ● Endast för att bygga rena Java-projekt
Byggverktyg - referenser Hemsidor för de olika projekten: Problem med make:
Template engines - Introduktion Vad är en template engine? ● Processar mallar och indata och producerar ett måldokument ● Innehåller sätt att processa text (exempelvis: textsubstitution, tilldelning av variabler, villkor, definition av funktioner, loopar eller rekursion, inkludering av andra mallar) ● Exempel: XSLT, JSP, Velocity, Freemarker
Template engines - Velocity Apache-projekt – ● Enkelt och kraftfullt mallspråk ● Kan användas fristående eller i en webbapplikation ● Främjar MVC-modellen
Template engines - Velocity Exempel cd /usr/velocity-1.5-beta1/examples/app_example1 cat example.vm cat Example.java./example.sh
Template engines – Freemarker BSD-licens – ● Enkelt och kraftfullt mallspråk ● Kan användas fristående eller i en webbapplikation ● Främjar MVC-modellen
Template engines – Freemarker Exempel /usr/tomcat/bin/startup.sh cd /usr/freemarker-2.3.9/examples/webapp1/WEB- INF/templates cat test.ftl
Template engines - jämförelse Velocity (+) ● Flexibelt ● Många produkter/ramverk använder sig av det: Turbine (MVC), Spring, Eclipse (code generation), Velosurf (db access tool) Velocity (-) ● Ännu ett eget ”programspråk” ● Finns bara i beta för Java5 (nu finns JDK6)
Template engines - jämförelse Freemarker (+) ● Flexibelt ● Många produkter/ramverk använder sig av det: Jooreports, Eclipse, Spring, Alfresco (CM), JForum, Freemarker (-) ● Ännu ett eget ”programspråk” ● Verkar mer optimerat för webbapplikationer
Template engines - referenser Lista över olika template engines: Hemsidor för de olika projekten: Ramverk/Applikationer/Siter som använder respektive template engine: