Indhold:
Programmering
Fordele og ulemper ved Java
Værktøjer til at programmere i Java
Hvis du har lyst til at komme i gang med at programmere, kan du springe over dette kapitel.
Ethvert program, f.eks. et 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 den ubetinget, uanset om det er smart eller ej. Den kan udføre instruktionerne ekstremt hurtigt (over 1 milliard pr. sekund) og det kan få computeren til at virke smart, selvom instruktionerne er simple.
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 hukommelse og eksterne enheder som skærm, tastatur, mus, disk, printere og netværksadgang. Det tilbyder tjenester til programmerne, f.eks. muligheden for at læse på disken eller tegne en grafisk brugergrænseflade.
Et program kan normalt kun køre på et bestemt styresystem. Javaprogrammer kan dog køre på flere styresystemer og de bruges derfor bl.a. som programmer, der automatisk hentes ned til brugerens netlæser/browser og afvikles der. Den type programmer kaldes appletter eller miniprogrammer.
Det er sjovt og spændende og det 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 fordel i mange beslægtede fag.
Java er et sprog, der har stor udbredelse såvel i industrien som i akademiske kredse. Det er kraftfuldt og relativt let lært. Lærer du Java, har du et godt fundament til at lære andre programmeringssprog.
For at computeren kan arbejde, skal den have nogle instruktioner, den kan følge slavisk. For at lægge to tal, som brugeren oplyser, sammen kunne man forestille sig følgende opskrift:
1 Skriv "Indtast første tal" på skærmen 2 Læs tal fra tastaturet 3 Gem tal i lagerplads A 4 Skriv "Indtast andet tal" på skærmen 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ærmen 10 Skriv indhold af lagerplads C på skærmen
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 fortsættes til næste punkt.
Man lærer ikke at programmere blot ved at læse en bog. Har man ikke tid til at øve sig og eksperimentere med det man læser om, 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.
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 samtidig meget udbredt, fordi teknologien bl.a. tillader, at små programmer kan lægges ind i en hjemmeside (se kapitlet om appletter).
Sproget har på bemærkelsesværdigt 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:
Enkelt. 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 fejl, der eksisterer i andre programmeringssprog, er fjernet i Java.
Objektorienteret. Sproget kommer 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.
Platformuafhængigt. 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.
Netværksorienteret. 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.
Fortolket. Java-kildetekst oversættes til en standardiseret platformuafhængig kode (kaldet bytekode), som derefter udføres af en javafortolker på det enkelte 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 maskinkode-instruktioner, som det aktuelle styresystem kan forstå.
Højtydende. De nuværende fortolkere tillader javaprogrammer, at blive udført nogenlunde lige så hurtigt, som hvis de var blevet oversat direkte til det pågældende styresystem.
Flertrådet. Java er designet til at udføre flere forskellige programdele samtidigt og en programudførsel kan blive fordelt over flere CPU'er (se kapitel 17 om flertrådet programmering).
Robust. Under afviklingen af et program tjekkes 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 har man let adgang til at fange og håndtere disse undtagelser, så programmet alligevel kan køre videre (se kapitel 14 om undtagelser).
Sikkert. 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 selv har givet tilladelse til det.
Dynamisk. 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 f.eks. kapitel 19 om RMI).
Ovenstående egenskaber gør, at Java også har vundet stor udbredelse i serversystemer de seneste år og Java understøttes i dag af næsten alle større softwarefirmaer, f.eks. IBM, Oracle, Borland, Netscape.
Softwaregiganten Microsoft er en undtagelse. 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.
Microsoft bl.a. 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.
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:
Java kræver en del hukommelse (RAM). Store Javaprogrammer kan kræve så meget, at de har problemer med at køre på mindre kontor-PC'ere.
Java skal installeres på en computer, før den kan afvikle javaprogrammer. Hvis man vil distribuere sit program, skal man således pakke en version af Java med.
Sun Microsystems ejer Java og nogle frygter, at det vil udvikle sig til et monopol som Microsoft. Indtil videre har de dog opført sig eksemplarisk og bl.a. frigivet hele kildeteksten til Java og derudover findes der andre uafhængige udgaver af Java.
Java satser på at være platformuafhængigt, men der er alligevel små forskelle på de forskellige platforme. Dette gælder specielt ved programmering af grafiske brugergrænseflader. Det kræver erfaring og afprøvning at sikre sig, at ens program virker tilfredsstillende på flere platforme. Dette er ikke kun et Java-relateret problem - udviklere af f.eks. hjemmesider har tilsvarende problemer. Java gør det nemmere at skrive platformuafhængige programmer, men det løser ikke alle problemer for programmøren.
Under programudviklingen har man brug for arbejdsredskaber, der kan hjælpe en med:
Redigering af kildeteksten.
Oversættelse af kildeteksten til binær kode.
Kørsel og fejlfinding.
De fleste foretrækker at bruge et grafisk udviklingsværktøj (f.eks. JBuilder vist herunder). De er bygget op med en menulinje ø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 kører derefter programmet. Uddata kan ses i en ramme nederst. "Debug" (der findes under "Run") bruges til fejlfinding og giver mulighed for at udføre koden trinvist og følge med i variablernes værdier.
I et udviklingsværktøj arbejder man som regel med et "projekt", der er en liste over kildetekst-filer og alle indstillinger for, hvordan programmet skal køres (herunder ses projektet oop.jpr i venstre side). Til højre vises kildeteksten på et faneblad. På de andre faneblade er typisk designværktøj til grafiske brugergrænseflader, dokumentation og versionskontrol.
En af de mest populære udviklingsværktøj er JBuilder fra Borland.
JBuilder er skrevet i Java og kan derfor bruges på både Linux, Macintosh, Windows og Sun Solaris. Det anbefales at have 256 MB RAM eller mere.
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.
Databaseproducenten Oracle udgiver JDeveloper, også skrevet i Java, til bl.a. Linux og Windows.
JDeveloper kan en masse meget avancerede ting, men er for begyndere lidt mere indviklet at bruge end JBuilder, bl.a. fordi projekter er samlet i arbejdsområder (eng.: workspace), en facilitet man sjældent har brug for som almindelig udvikler.
JDeveloper kræver mindst 256 MB RAM. Den fulde udgave kan hentes gratis til privat- og undervisningsbrug på http://oracle.com/technology/software/products/jdev/.
Sun har sit eget udviklingsmiljø, Java Studio Creator, også skrevet i Java, til Linux, Windows og Sun Solaris.
Programmet har fået åben kildekode (se afsnit 1.4.1) under navnet NetBeans. NetBeans, der kræver 384 MB RAM, kan hentes gratis på http://netbeans.org, mangler en del af de mere avancerede funktioner, men er glimrende til begyndere.
En 30 dages prøveversion af Java Studio Creator kan hentes på http://java.sun.com.
Ligesom Sun har IBM sit eget udviklingsmiljø til bl.a. Java. Det hedder IBM WebSphere Studio og basisudgaven har også fået åben kildekode under navnet Eclipse.
Eclipse, der kræver 256 MB RAM, kan hentes gratis på http://eclipse.org.
En gratis prøveversion af IBM WebSphere
Studio kan hentes på IBMs hjemmeside:
http://www.ibm.com/software/websphere.
Et interessant værktøj til undervisning i objektorienteret programmering er BlueJ. Det hentes gratis på http://bluej.org og kræver 64 MB RAM. Det har en overskuelig brugergrænseflade, der lader eleven oprette objekter interaktivt, kalde metoder i dem og se resultatet:
Bogens eksempler er forberedt til BlueJ (se afsnit 4.10.1). Ovenfor ses således matadorspillet fra kapitel 5. Øverst er klasserne, nederst objekterne som eleven har oprettet. Til højre ses, hvordan eleven er ved at kalde metoden transaktion() på spilleren Jacob.
Desværre mangler BlueJ den avancerede syntaks- og formateringshjælp som er tilgængelig i de større værktøjer og som, efter forfatterens erfaring, er af afgørende betydning for begyndere.
Den er derfor fin som supplement men kan ikke erstatte et "rigtigt" udviklingsværktøj.
Der findes mange andre udviklingsmiljøer til Java, bl.a. JCreator (http://jcreator.com/ - kræver kun 64 MB RAM, men kun til Windows), IntelliJ (http://jetbrains.com) og Simplicity (http://datarepresentations.com). De fleste findes i en prøveudgave, der kan hentes gratis fra internettet og som har alle de nødvendige faciliteter til at lave mindre programmer.
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 under Linux.
Til oversættelse og kørsel kan man installere et Java-udviklingskit udgivet af Sun, f.eks. JDK 1.5 (Java Development Kit version 1.5, kaldes også J2SE version 5.0). Det kan hentes gratis på http://java.sun.com til et væld af styresystemer.
JDK'et bruges fra kommandolinjen (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.
Mens du læser bogen, kan det være nyttigt at kigge på:
Bogens hjemmeside med øvelser og ekstra materiale: http://javabog.dk
Javadokumentationen: http://java.sun.com/j2se/1.5/docs/api
Vejledninger og introduktioner: http://java.sun.com/docs/books/tutorial
OSS - ofte stillede spørgsmål om alt om Java: http://jguru.com/faq
Du kan også deltage i
diskussionsgruppen dk.edb.programmering.java, hvor man kan få
hjælp og finde mange relevante spørgsmål og svar.
Der er 5-10 indlæg om dagen.
Har du ikke adgang til
diskussionsgrupper (eng.: newsgroups), kan de også læses
via http://groups.google.com/
. Den direkte henvisning
er:
http://groups.google.com/groups?group=dk.edb.programmering.java
Et andet sted med en del spørgsmål og svar er http://eksperten.dk under Java.
Eksemplerne (med kildetekst), der følger med, når et JDK installeres (kig i jdk1.5/demo)
På http://javaspil.dk, http://spil.tv2.dk og http://vredungmand.dk kan du se nogle ganske flotte spil skrevet i Java (uden kildetekst).
Hvis du efter denne bog vil læse mere om Java på dansk, kan du kigge på:
Mine andre bøger om programmering i Java, på http://javabog.dk.
Kristian Hansen: Avanceret Java-programmering, Ingeniøren|bøger, 1998.
Skåne-Sjælland Linux-brugergruppes javabog: http://sslug.dk/bog
Åben kildekode (eng.: open source) vil sige, at kildeteksten er frit tilgængelig. Dette er i modsætning til de fleste kommercielle producenter, der holder kildeteksten for sig selv.
For en lettere øvet i Java og programmering er projekter med åben kildekode interessante, som kilde til inspiration og som eksempler på, hvordan man gør forskellige ting.
Et sted med åben kildekode-projekter er http://sourceforge.net, hvor der er fri adgang til titusindvis af projekter skrevet i Java. Java-siden http://foundries.sourceforge.net/java byder på generelle nyheder om Java og åben kildekode.
Åben kildekode blev før i tiden mest produceret af universiteter og idealistisk indstillede firmaer og enkeltpersoner. Styresystemet Linux er udelukkende baseret på åben kildekode.
Imidlertid er der sket et skred mod mere og mere åben kildekode, hvor store firmaer som Sun og IBM har ført an. Det er indlysende, at hvis programudviklingen sker åbent, sådan at alle kan være med til at afprøve programmet, komme med forbedringsforslag, kigge i kildeteksten og selv bidrage til at forbedre programmet, kan det have en meget positiv indvirkning på et programs kvalitet og opbakning blandt brugerne.
Samtidig føler mange, at de lukkede, proprietære systemers tid er ved at være forbi, både fordi man som forbruger er prisgivet producenten m.h.t. fejlrettelser og nye versioner, men også fordi lukkede systemer har en indre tendens, til at bevæge sig mod større og større monopoler og dermed mindre nyskabelse og sund konkurrence.
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.