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 næsten 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 kapitlet 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 kapitlet 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. kapitlet 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 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. Sagen blev naturligvis anket, og det er i skrivende stund (marts 2002) uvist, hvad den ender med.
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.
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 test 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 kildetekster.
Oversættelse.
Kørsel og fejlfinding.
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.4 (Java Development Kit version 1.4, kaldes også for J2SE - Java 2 Standard Edition). Det kan hentes gratis på http://java.sun.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.
Der findes en række mere avancerede programmeringsværktøjer, hvoraf 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.
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 har 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.
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. Windows og Linux. JDeveloper kan en masse meget avancerede ting, men er for begyndere lidt mere indviklet at bruge end JBuilder, 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 den fulde udgave kan hentes gratis til privat- og undervisningsbrug på http://oracle.com .
Sun har udgivet sit eget udviklingsmiljø, Forte, også skrevet i Java, til Windows, Linux og Sun Solaris. Gratisversionen af Forte, der kan hentes på http://sun.com/forte , har flere funktioner til at udvikle grafiske brugergrænseflader end JBuilders basisversion.
Programmet har senere fået åbnet for kildekoden (se afsnit 1.4.1) og blevet omdøbt til NetBeans. Denne version kan hentes på http://netbeans.org .
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) og kræver Windows.
Der findes mange andre udviklingsmiljøer til Java, bl.a. Visual Café, Simplicity og Microsoft 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.
Et interessant værktøj til undervisning i objektorienteret programmering er BlueJ. Det har en overskuelig brugergrænseflade, der interaktivt lader eleven definere klasser, oprette objekter, kalde metoder i dem og se resultatet. Det kan hentes gratis på http://bluej.org .
Mens du læser bogen, kan det være nyttigt at kigge på:
Bogens hjemmeside med øvelser og ekstra ting: http://javabog.dk
Javadokumentationen: http://java.sun.com/j2se/1.4/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.4/demo)
På http://javaspil.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å:
Kristian Hansens bog: Avanceret Java-programmering, Ingeniøren|bøger, 1998.
Skåne-Sjælland Linux-brugergruppe's javabog-projekt: 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.
I den senere tid er der imidlertid 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.