Archive for the 'Programvare' Category

Eclipse refactoring plug-in

Source and tutorial (in english)

De fleste Java utviklere kjenner til Eclipse som en utviklingsplattform med mange verktøy og hjelpemidler. Eclipse IDE har faktisk blitt så omfattende at de færreste har full oversikt over alle de muligheter man har tilgjenngelig. Mye av årsaken til dette mangfoldet i funksjonalitet i Eclipse er den plug-in baserte arkitekturen. I prinsippet kan en hver utvikler utvide/endre hvilken som helst funksjonalitet i Eclipse, ved å skrive en ny plug-in. Men først må man over en liten kneik for å komme inn i Eclipse plug-in tankegang.

Jeg har skrevet en enkel liten refactoring plug-in som gir utvikleren mulighet til å endre typen på en klassevariabel og tilhørende getter/setter ved en liten wizard. Kilde koden for denne plug-in’en sammen med en liten tutorial for hvordan man kan lage egne refactoring plug-ins kan du finne her.

Tutorialen er skrevet med tanke på utviklere som ikke har utviklet plug-ins for Eclipse og går dermed ikke dypt ned i materien. For mer om plug-in utvikling så er det en god start med JDT Plug-in Developer Guide og PDE Does Plug-in. For grundigere og mer utfyllende om eclipse refactoring rammeverket så finner man forklaring og eksempler i Unleashing the Power of Refactoring og Automated Refactorings in Eclipse-based IDEs. Sistnevnte bruker eksempel fra renaming i properties filer. Og for de som er interessert i å lære mer om det mektige AST (AbstractSyntaxTree) så er dette en fin plass å begynne.

Webapplikasjoner på skrivebordet - en liten hendelse?

I dagens Digi skriver de om den nyeste satsningen til Mozilla, Prism. En ny browser som kan kjøre programmer uavhengig av det tradisjonelle grensesnittet. I utgangspunktet en gammel idé i ny innpakning, men det ligger mer i dette enn kun å endre måten vi browser nettapplikasjonstjenester på.

Mozilla er nemlig ikke alene. Adobe Labs har for eksempel lansert sin nye plattform “Air” som gjør det mulig å lage fullverdige desktopapplikasjoner som kan samhandle helt eller delvis med webappliaksjoner. Et eksempel på dette er eBay sin beta desktop applikasjon, hvor man kan betjene hele sitt engasjement på auksjonstjenesten - offline. Så snart man er online vil informasjon fra din desktop syndikeres med den sentrale nettjenesten. Du kan også “surfe” og bruke den ordinære webtjenesten til eBay fra desktop applikasjonen.

Dette er på mange måter en “stille revolusjon”. For forbrukere er dette kun en utøkt service fra tjenesteleverandører vi benytter oss mye av. Tenk deg for eksempel nettbanktjenester utført på denne måten. Men for virksomheter kan de faktiske implikasjonene langt overgå det som ligger i bedre service.

Bedre service er bra, og vil sannsynligvis gi økt inntjening, eller bedre måloppnåelse for de det gjelder. Men enda viktigere er sikkerhetsaspektet. Browsere er ikke laget for sikkerhet, noe alle sikkerhetseksperter er smertefullt klar over. Flytter man applikasjoner til desktopen vil man ha helt nye muligheter til å tilby tjenester hvor man tar i bruk brukernes egne maskiner for å ivareta sikkerheten. Sikkerhetsutfordningene på nettet blir ikke borte ved hjelp av den desktop webapplikasjoner, men vi får et helt nytt sett med muligheter som tradisjonell browserhåndtering aldri vil kunne gi oss.

Og om ikke dette var nok, vil man kunne utnytte lokal prosessorkraft i stedet for å prosessere alt over egne servere. Dette gir mulighet for store innsparinger for virksomheter som tilbyr tung funksjonalitet i sine webapplikasjoner.

Min spådom - og jeg er ikke alene om den - er at desktop webapplikasjoner vil bli utviklet av virksomheter som har en stor masse av brukere som hyppig benytter seg av webløsninger med høye sikkerhetskrav og prosessering av store datamengder. Eksempler på dette kan være meglertjenester, nettbanker, webbaserte effektiviseringsverktøy osv.

Så langt ligger mye av utviklingen på dette området i softwareselskapenes lab avdelinger. Men det vil ikke vare lenge.

Hva er det beste verktøyet for prototyping?

Vi har benyttet en rekke verktøy for å lage prototyper før man programmerer (og designer) nettløsninger.

Så langt har jeg benyttet følgende:

  • Powerpoint
  • Visio
  • Word
  • Dreamweaver
  • Illustrator
  • Axure
  • Papir-skisser

Andre kollegaer har også jobbet med:

  • Pdf prototype
  • Photoshop
  • Flash

Alle disse ulike variantene har styrker og svakheter, men for å komme med konklusjonen først: Axure Pro (4.6) er pr. i dag det beste verktøyet for å prototype nettløsninger i min mening.
Read more »

Eclipse for webutvikling: To tips

Jeg bruker Eclipse til å utvikle webapplikasjoner, og da trengs det plugins. Skal du sette opp et nytt utviklingsmiljø kan det være lurt å starte med “Eclipse and Web Tools Project all-in-one”. Dette er en pakke som inneholder både Eclipse og WTP (Web Tools Project) i en og samme zip.fil.

For å laste ned, gå til http://download.eclipse.org/webtools/downloads/, og klikk på den versjonen du vil ha. På neste side velger du filen som begynner med “wtp-all-in-one-sdk” for din plattform.

Denne pakken gir deg et grunnleggende utviklingsmiljø for webapplikasjoner. Dessverre er ikke JavaScript-editoren som kommer med særlig bra. Denne bør erstattes med noe bedre, og da er JSEclipse fra Adobe et bedre alternativ. En prerelease av denne editoren er tilgjengelig og kan lastes ned fra http://labs.adobe.com/technologies/jseclipse/ (registrering nødvendig). JSEclipse inneholder nyttig funksjonalitet som code completion og syntax-sjekk, men har dessverre ikke kodeformattering enda.

Bør man ikke bruke Ajax toolkits?

Jeg leser nettopp i en interessant rapport fra Butler Group om Rich Internet Applications. Rapporten omtaler diverse Ajax toolkits / frameworks, samt plug-ins til nettleseren som Flash og Silverlight.En av konklusjonene er at det ikke er anbefalt å utvikle Ajax-applikasjoner fra bunnen av. Det er heller ikke anbefalt å lage dem basert på Ajax toolkits. Man bør basere seg på Ajax frameworks eller enda heftigere saker. Dette på grunn av at det er unødvendig å finne opp hjulet på nytt, og at kunnskapsterskelen når det gjelder JavaScript og håndtering av forskjellige nettlesere er høy.

Dette er jeg litt uenig i. Rammeverk har ofte mye i seg som man ikke trenger, og de binder deg også til å gjøre ting på en spesiell måte. Det kan være en rask måte å komme igang på, med en lav kunnskapsterskel, og dette kan virke fristende fra et kostnadsperspektiv. Men når løsningen skal videreutvikles, og når det dukker opp bugs som er vanskelige å finne, så kan rammeverkene komme i veien. Da hadde det vært bedre om du hadde full kontroll på all koden din.

At rammeverk lar deg slippe unna med lite kunnskap synes jeg ikke er noe argument. Du vil få problemer med å finne feil og forstå hvordan ting virker hvis du ikke kjenner teknologien godt. Først lærer du deg den grunnleggende teknologien, så kan du vurdere om et rammeverk bør brukes eller ikke.Til sist har vi spørsmålet om ytelse. Skal du laste ned mange JavaScript-biblioteker til nettleseren fordi rammeverket krever det, selv om de ikke trengs? Hva om du skal lage verdens raskeste Ajax-applikasjon og blir nødt til å tune applikasjonen kraftig for å nå kravene? Igjen mener jeg at et rammeverk kan komme i veien.

Kanskje det er fordi jeg startet min karriere med å programmere 8086-assemblykode, men likevel…

Pipes for å kombinere RSS-feeder

Med et vell at blogger og RSS-feeder tilgjengelig blir det stadig mer aktuelt å aggregere og filtrere innholdet fra alle aktuelle kilder. Det finnes mange klientprogrammer som tilbyr denne funksjonalitetet - mens Yahoo! har valgt en annen tilnærming:

Pipes (http://pipes.yahoo.com) fra Yahoo! tilbyr muligheten til å sy sammen feeds til en ny feed, som så kan publiseres til bruk på for andre formål. På denne måten tilgjengeliggjør man det arbeidet og den kunnskapen man faktisk legger ned i å aggregere og filtrere innhold. Pipes gir også muligheten til å tilføre innhold manuelt, manipulere data, formatere og langt på vei programmere en ny feed.

Brukergrensesnittet for å sette opp dette er grafisk, med drag&drop av funksjoner, og grafiske forbindelseslinjer mellom funksjonene. Et eksempel er vist i bildet under (klikk på bildet for å se det større og lesbart):

Pipes fra Yahoo!

Terskelen for å komme igang er ikke høy, men det er rimelig å anta at dette først og fremst appellerer til mennesker med teknisk og/eller programmeringskompetanse.

Som et lite eksperiment er det etablert en offentlig tilgjengelig feed som kombinerer innholdet fra denne bloggen med Tarantells publiserte bokmerker. Feeden finnes på denne adressen

Applikasjonsgartner

Joel Spolsky skriver om hvordan man kan bruke menneskers innebygde instinkt for å irritere seg over selv den minste detalj, til noe positivt. Ihvertfall når det gjelder å lage fantastisk programvare. Det gjelder å bygge 2,54-centimeter for 2,54-centimeter (han er imperialist av avstamning, den gode Spolsky) og når man har rettet nok 2,54-centimetere så oppnår man en mile med fremdrift. Til dette behøves en svært velutviklet evne til å finne feil overalt, og aldri aldri gi seg med å fikse de tusenvisene av småting som egentlig skulle vært tatt. Man blir en slags gartner som går og luker i bedet helt til alle feil er funnet, alle hjørner er rundet av og alle gradienter går fra øverst til nederst, eller omvendt… Prisen er selvfølgelig at ens nærmeste omgivelser av og til blir offer for umenneskelig detaljfokusert kritikk når man glemmer å legge igjen dette tankesettet på jobben. Så det må man ikke. Les og lær, det er viktig å prøve å opprettholde en sånn pasjon for det man holder på med som Joel skriver om. Først da kan man bygge fantastisk programvare.