1 Introduktion

Indhold:



Hvis du har lyst til at komme i gang med at programmere, kan du springe over dette kapitel.

1.1 Programmering

Alle programmer, som f.eks. tekstbehandlingsprogram, regneark, e-post, tegneprogram, spil, webserver består af nogle data (f.eks. hjælpefiler og konfigurationsfiler) og en samling instruktioner til computeren.


Hver instruktion er meget simpel, og computeren udfører dem ubetinget, uanset om det er smart eller ej. En computer kan udføre instruktionerne ekstremt hurtigt (over 1 milliard instruktioner per sekund), og det kan få computeren til at virke smart, selvom instruktionerne er simple.

1.1.1 Styresystemet

Styresystemet er det program, som styrer computeren og tillader brugeren at bruge andre programmer. Af styresystemer kan nævnes Linux, DOS, Windows, MacOS, OS/2, UNIX.


Styresystemet styrer computerens ressourcer: hukommelse og eksterne enheder: harddisken, printere og netværksadgang. Det tilbyder tjenester til programmerne, f.eks. muligheden for en grafisk brugergrænseflade.

Et program kan normalt kun køre på et styresystem. Javaprogrammer kan dog køre på flere styresystemer, og de bruges derfor bl.a. som programmer, der automatisk hentes ned til brugerens web-browser og køres der (kaldet appletter eller miniprogrammer).

1.1.2 Hvorfor lære at programmere?

Det er sjovt og spændende og kan være en kilde til kreativitet og leg at skabe sine egne programmer. Man kan bedre forestille sig nye løsninger og produkter, og man får bedre kendskab til computeres formåen og begrænsninger.


Desuden er det et håndværk, der er efterspurgt blandt IT-virksomheder og mange andre. Ved hjælp af programmering kan du løse problemer, og du er dermed ikke mere afhængig af, at andre laver et program, der opfylder dine behov.


Programmering er en af datalogiens helt basale discipliner, og selv om man ikke arbejder som programmør, kan kendskab til programmering være en stor fordel i mange beslægtede fag.


Java er et sprog, der har stor udbredelse i industrien og i akademiske kredse. Det er kraftfuldt og relativt let lært. Hvis du lærer Java, har du et godt fundament til at lære andre programmeringssprog.

1.1.3 Et simpelt program

For at computeren kan arbejde skal det have nogle instruktioner, som det kan følge slavisk. For at lægge to tal fra brugeren sammen kunne man forestille sig følgende opskrift:


  1   Skriv "Indtast første tal" på skærm
  2   Læs tal fra tastaturet
  3   Gem tal i lagerplads A
  4   Skriv "Indtast andet tal" på skærm
  5   Læs tal fra tastaturet
  6   Gem tal i lagerplads B
  7   Læg indhold af lagerplads A og indhold af lagerplads B sammen
  8   Gem resultat i lagerplads C
  9   Skriv "Summen er:" på skærm
  10  Skriv indhold af lagerplads C på skærm


Et program minder lidt om en kogebogsopskrift, som computeren følger punkt for punkt ovenfra og ned. Hvert punkt (eller instruktion eller kommando) gøres færdigt, før der gås til næste punkt.

1.1.4 Hvordan lærer man at programmere

Man lærer ikke at programmere ved at læse en bog. Har man derfor ikke tid til at øve sig, spilder man bare sin tid. For de fleste kræver det en stor arbejdsindsats at lære at programmere, og for alle tager det lang tid, før de bliver rigtig dygtige til det.


Der er kun én måde at lære at programmere på: Øv dig

Der er blevet lavet forskning, der underbygger dette. P.M. Cheney konkluderer1, at den eneste betydende faktor i produktiviteten for programmører er: Erfaring. Han fandt i øvrigt forskelle i produktiviteten på en faktor 25.


1.2 Fordele og ulemper ved Java

Java er et initiativ til at skabe et programmeringssprog, der kan køre på flere styresystemer. Det er udviklet af Sun Microsystems, der i 1991 arbejdede med at designe et programmeringssprog, der var velegnet til at skrive programmer til fremtidens telefoner, fjernsyn, opvaskemaskiner og andre elektroniske apparater. Sådanne programmer skal være meget kompakte (begrænset hukommelseslager) og fejlsikre (risikoen for, at apparatet ikke virker skal være minimal).


Med udviklingen af internettet blev Java samtidigt meget udbredt, fordi teknologien bl.a. tillader, at små programmer kan lægges ind i en hjemmeside (se kapitlet om appletter).


Det har på kort tid udviklet sig til at være fremherskende på grund af dets egenskaber. Java er et enkelt, objektorienteret, robust, netværksorienteret, platformuafhængigt, sikkert, fortolket, højtydende, flertrådet og dynamisk sprog.

1.2.1 Enkelt, objektorienteret og robust

Java er i forhold til andre programmeringssprog et ret enkelt sprog, og det er forholdsvis nemt at programmere (specielt for C++ og C-programmører). Mange af de muligheder for at lave fatale fejl, der eksisterer i andre programmeringssprog, er fjernet i Java.


Samtidig kommer det med over 1000 foruddefinerede objekt-typer, som kan udføre næsten enhver tænkelig opgave. Præcist hvad "objektorienteret" betyder handler denne bog om.


Java er også robust; under afviklingen af et program checkes det, at handlingerne er tilladelige, og opstår der en fejl, såsom en ønsket fil ikke kan findes, erklærer Java, at der er opstået en undtagelse. I mange andre sprog vil sådanne uventede fejl føre til, at programmet stopper. I Java kan disse undtagelser fanges og håndteres, så programmet alligevel kan køre videre.

1.2.2 Netværksorienteret, platformuafhængigt og sikkert

Java er platformuafhængigt. Det vil sige, at samme program umiddelbart kan udføres på mange forskellige styresystemer, f.eks. UNIX, Linux, Mac og Windows, og processor-typer f.eks. Intel IA32, PowerPC og Alpha.


Java har indbygget alskens netværkskommunikation (se kapitlet om netværk) og bruges meget på internettet, da javaprogrammer kan køre på næsten alle platforme. Samtidig er Javaprogrammer så kompakte, at de nemt kan indlejres i en hjemmeside.


Et sikkerhedssystem tjekker al programkode og sørger for, at bl.a. hjemmesider med Java-appletter ikke kan gøre ting, de ikke har lov til (f.eks. læse eller ændre i brugerens filer), uden at brugeren har givet lov til det.

1.2.3 Fortolket, højtydende, flertrådet og dynamisk

Kildeteksten oversættes til en standardiseret platformuafhængig kode (kaldet bytekode), som derefter udføres af en javafortolker på det pågældende styresystem. Derved opnås, at man kun behøver at oversætte sin kildetekst én gang. Javafortolkeren er en såkaldt virtuel maskine, der konverterer instruktionerne i bytekoden til instruktioner, som styresystemet kan forstå.


De nuværende fortolkere tillader javaprogrammer at blive udført næsten lige så hurtigt, som hvis de var blevet oversat direkte til det pågældende styresystem.


Java er designet til at understøtte flere samtidige programudførselspunkter (kaldet tråde), og en programudførsel kan blive fordelt over flere CPU'er (se kapitlet om flertrådet programmering).


Java kan dynamisk (i et kørende program) indlæse ekstra programkode fra netværket og udføre den, når det er nødvendigt, og der er indbygget mekanismer til at lade programmer på forskellige maskiner dele dataobjekter (se eksempelvis kapitlet om RMI).


Disse egenskaber gør, at Java også har vundet stor udbredelse i serversystemer de seneste år.

1.2.4 Stor opbakning

Java understøttes af næsten alle større softwarefirmaer, f.eks. IBM, Oracle, Borland, Netscape.


Softwaregiganten Microsoft er en undtagelse. Den blev i efteråret 2000 kendt skyldig ved domstolen i USA for ulovligt at misbruge sin monopollignende magt på PC-markedet for at skade bl.a. Java. Microsoft er ikke interesseret i, at programmerne kan udføres under andre styresystemer end Windows. De har lavet deres egen udgave af Java, der kun virker under Windows, og har (uden større held) forsøgt at lokke programmører til at bruge den.

1.2.5 Svagheder ved Java

Java har også en del kritikere, især blandt de, hvis forretningsmodel eller område er truet af Java. Ikke desto mindre er der nogle gode pointer iblandt:



1.3 Programmeringsværktøjer til Java

Under programudviklingen har man brug for arbejdsredskaber, der kan hjælpe en med:


1.3.1 Sun JDK

Den mest skrabede løsning, man kan vælge at redigere kildeteksterne i, er et ikke-Java-orienteret program som for eksempel Notesblok under Windows eller kedit eller emacs under Linux.


Til oversættelse og kørsel kan man installere et Java-udviklingskit udgivet af Sun, f.eks. JDK1.3 (Java Development Kit version 1.3). Det kan hentes gratis på http://www.javasoft.com til et væld af styresystemer.


JDK'en bruges fra kommandolinien (f.eks. i et DOS-vindue). De vigtigste kommandoer er javac, der oversætter en kildetekstfil til bytekode, og java, der udfører en bytekode-fil.

1.3.2 Borland JBuilder

Der findes en række mere avancerede programmeringsværktøjer, hvor vi anbefaler JBuilder fra Borland, som er et af de mest populære. JBuilder er skrevet i Java og kører på både Macintosh, Windows, Linux og Sun Solaris. Det anbefales at have 128 MB RAM.


En basisversion af JBuilder kan hentes gratis fra http://www.borland.com/jbuilder/. Ønsker man adgang til de mere avancerede funktioner skal programmet købes.


JBuilder er opbygget med en menulinie øverst, der indeholder tilgang til filhåndtering, projektstyring og alle nødvendige værktøjer, hvoraf de vigtigste er "Run" og "Debug". "Run" oversætter først kildeteksten og starter derefter fortolkeren. Uddata kan ses i den nederste ramme. "Debug" (der findes under "Run") bruges til fejlfinding af programmer og giver mulighed for at udføre programkoden trinvist.


Når man udvikler i JBuilder, er det baseret på projekter. Projekterne indeholder en liste over kildetekst-filerne samt, hvis det ønskes, projektinformation (lagret som HTML-dokument).


Projektet (her oop.jpr) kan ses i den venstre ramme. Den højre ramme indeholder kildeteksten på et faneblad. På de andre faneblade er bl.a. designværktøj til grafiske brugergrænseflader, dokumentationsvisning og versionskontrol.

1.3.3 Oracle JDeveloper


Oracle udgiver JDeveloper, som er en udgave af JBuilder, hvor Oracle har integreret sit eget database-produkt. JDeveloper er lidt mere indviklet at bruge, idet projekter er samlet i arbejdsområder, en facilitet, man sjældent har brug for som almindelig udvikler.

JDeveloper kræver 128 MB RAM og kører så vidt vides kun under Windows NT. Det kan købes af Oracle, men bruger man i forvejen Oracles produkter, er der sandsynlighed for, at man har fået leveret JDeveloper med i pakken.

1.3.4 Sun Forte for Java


Sun udgiver sit eget udviklingsmiljø, også skrevet i Java, til Windows, Linux og Sun Solaris. Gratisversionen, der kan hentes på http://www.sun.com/forte/, har flere funktioner til at udvikle grafiske brugergrænseflader end JBuilders basisversion.

Hvilken en, der er bedst, afhænger nok af, hvem man spørger, men Forte virker efter forfatterens mening mindre gennemført end JBuilder. JBuilder fylder mere på disken, men har betydeligt mere hjælp, både til begynderen og den erfarne.

1.3.5 IBM VisualAge for Java


Ligesom Sun har IBM sit eget udviklingsmiljø til bl.a. Java, og en gammel udgave af miljøet kan hentes gratis på IBMs hjemmeside til bl.a. Linux (skærmbilledet viser VisualAge for Java under Linux). Gratisversionen kræver kun 32 MB RAM. De nyere udgaver er mere krævende (128 MB RAM).

1.3.6 Andre

Der findes mange andre udviklingsmiljøer til Java, bl.a. Visual Café, Simplicity og Microsofts Visual J++. De fleste findes i en prøveudgave, der kan hentes gratis fra internettet, og som har alle nødvendige faciliteter til at lave mindre programmer.

1Artiklen hedder 'Effects of Individual Characteristics, Organizational Factors and Task Characteristics on Computer Programmer Productivity and Job Satisfaction' og kan findes i Information and Management, 7, 1984.


Jacob Nordfalk - Objektorienteret programmering i Java - http://javabog.dk