0 Om programutveckling speciellt i Java Development Kit Java - javisst. Läsanvisningar Algoritmer Program och programmeringsspråk Översättning till maskinkod - Kompilering Översättning med interpretator Allmänt om Java-program Övningar Utvecklingsverktyg för Java Kap 0: Sid 2 Java - javisst. Läsanvisningar Kapitlen studeras lämpligen i nummerordning. Vissa kapitel kan dock till en början, helt eller delvis, hoppas över och läsas vid ett senare tillfälle. Se nedanstående sammanställning. Läsanvisningarna nedan finns även - ofta i något utförligare version - i början på respektive kapitel. 0: Om programutveckling - speciellt i Java Development Kit Kapitlet tar först upp några generella begrepp inom programmering, och inriktar sig sedan på Java, och detta språks utvecklingsverktyg. Lär dig de ord och företeelser som kapitlet behandlar. Kör övningarna, mest för att kontrollera att din utvecklingsmiljö fungerar. 1: Grundläggande programmering Kapitlet behandlar ett litet urval grundläggande begrepp inom programmering, såsom variabler (tal-, tecken-, sträng-) och styrstrukturer (selektioner / iterationer). Om du redan är bekant med något annat programmeringsspråk så känner du igen det mesta. Om du är nybörjare ska du se till att du är väl förtrogen med detta kapitel innan du fortsätter. 2: Klasser och objekt Här möter vi begreppen klass och objekt som är centrala i OOP (=objektorienterd programmering). Många viktiga företeelser inom OOP förklaras och exemplifieras. Ägna tid åt att försöka förstå dessa grundläggande begrepp, men var inte orolig om du inte "greppar" allt på en gång! Mycket klarnar efter hand längre fram i materialet. Kapitlet är ganska omfattande. Återvänd till kapitel 2, läs på nytt och repetera, när du stöter på begreppen igen i senare avsnitt 3: Arv Arv är en mycket väsentlig företeelse inom OOP. Kapitlet förklarar och exemplifierar. Vidare presenteras Javas klassbibliotek (från vilket man kan importera färdiga klasser som vi kan ärva ifrån). Dessutom introduceras klassen Frame som är grundläggande för fristående javaapplikationer. Läs med omsorg. Se till att du förstår alla exempel och övningar. 4: Applets Äntligen lite mer "praktiska" övningar. Du skapar applets ( = små javaprogram inbäddade på en hemsida ) som är försedda med enkel grafik i olika färger, bilder, ljud med mera. Kunskaperna från kapitel 2 och 3 tillämpas för att skapa egna objekt som appleten använder. Flera av övningarna återkommer längre fram i senare kapitel. (Efter kap. 4 kan man, om man vill, gå direkt till kap. 17 och studera den utökade grafiken i Java2, Java2D.) 5: Applets med komponenter Nu börjar det hända saker! Här introduceras händelsehantering. Genom att förse en applet med knappar kan du byta färger, starta ljuduppspelning, ändra positionen hos objekt med mera. Du lär dig också hur man, via textrutor, matar in strängar och tal i en applet, hur man utför beräkningar samt hur man tar hand om fel. 6: Loopar och val Här fördjupas och utvidgas innehållet i kapitel 1 (styrstrukturer - selektion och iteration - med mera) Om du redan behärskar ett annat programmeringsspråk (i synnerhet C++) behöver detta kapitel inte ta lång tid. Är du ovan programmerare bör du vara väl förtrogen med kapitlets innehåll innan du fortsätter. 7: Mest om metoder… Här återkommer vi till Javas klassbibliotek, och du får lära dig hur man söker i den dokumentation som bifogas JDK/SDK. Viktigt! Därefter följer en repetition av de begrepp som förekommer i samband med metoder. Sedan presenteras klassen Math. Dess metoder för matematiska beräkningar exemplifieras i flera övningar. Vidare lär du dig metoder för att utföra avrundning av tal. I ett avsnitt behandlas (återigen) de speciella metoder som ingår i en applet. Här lär du dig en teknik för att rita om en applet utan att den gamla bilden ligger försvinner. Vissa metoder returnerar värde (funktioner). Dessa exemplifieras i övningar om värdetabeller och funktionskurvor. Slutligen genomgås hur man skriver egna klassmetoder och skapar egna paket. 8: Arrayer I detta kapitel introduceras begreppet array, motsvarigheten till matematikens indicerade variabler (t.ex. x1, x2, … xi, … xn). Arrayer av heltal exemplifieras bland annat med sorteringsövningar och med exempel där man ritar polygoner. Vidare får du skapa arrayer av olika typer av objekt. Flera övningar (Rymdskepp, Asteroider, Tarning) ligger som grund för övningar i senare kapitel. 684090264 © Ove Lundgren 2 Kap 0: Sid 3 9: Mer om komponenter och händelsehanterare Händelsehantering igen! Hittills har du arbetat med komponenterna Button, Label och TextField. Nu får du lära dig använda komponenter som kryssrutor, radioknappar, listrutor, rullningslister med flera. Gör övningarna. Du bör lära dig komponenternas klasshierarki (i stora drag). 10: Mest om mus- och tangenthändelser (Kapitlets slut kan läsas senare, dock senast inför kapitel 15) Hur får man saker att inträffa till exempel när man klickar med musen, när man drar musen eller när man för musmarkören in över ett område? Kan man påverka en applet via tangentbordet, till exempel genom att trycka på en viss tangent? Detta får du lära dej i det här kapitlet. Dessutom kommer vi att se hur man kan förändra musmarkörens utseende, och hur man anropar och öppnar webbsidor från en applet. I kapitlets slut behandlas lyssnarklasser, inre klasser och adapterklasser. Du kan hoppa över dessa avsnitt så länge. I kapitel 15, kommer vi att använda oss av adapterklasser. Innan dess bör du ha studerat de här sidorna. 11: Mer om klasser och objekt (Hela kapitlet kan läsas senare…) Kapitlet inleds med en repetition av grundläggande begrepp som klasser, objekt, variabler, metoder, konstruktorer och arv. Därefter jämförs två metoder: super() och this() och två nyckelord: super och this. Kapitlet tar upp ytterligare en grundpelare i OOP, nämligen polymorfism: "Detta att metoder med samma namn logiskt sett gör samma sak i olika objekt, men kodmässigt sett är olika, kallas polymorfism." Slutet av kapitlet behandlar abstrakta klasser och gränssnitt. Meningen är att läsaren ska ges en något mer konkret bild av vad ett gränssnitt (ett interface) är. Det här kapitlet kan uppfattas som alltför teoretiskt. Man kan hoppa över det och läsa det vid ett senare tillfälle… 12: Layout, panel- och canvasobjekt (Kan läsas senare, dock senast inför kapitel 15) Detta kapitel handlar om appletens utseende. Hur förändrar man storlek och placering på en komponent? Hur kan man förändra layouten hos en applet? (Det finns flera layouter att välja på….) I detta sammanhang kommer du också att stifta bekantskap med klassen Panel. Om du inte är intresserad av appletens utseende, utan endast av dess funktion, kan du hoppa över det här kapitlet så länge. Först i kapitel 15 förutsätts att du läst avsnitten om layouter och Panel. I slutet av kapitel 12 finns några övningar med klassen Canvas. Detta är en komponent på vilken man kan rita och som är muskänslig. Från och med Java 1.1 miste Canvas något av sin betydelse eftersom rit- och muskänslighetsegenskaperna numera även finns hos andra komponenter t.ex. Panel. Om du inte är speciellt nyfiken på Canvas så kan du hoppa över avsnittet helt. 13: Grafikobjekt och bilder Vi lär oss en "generell" metod för att rita på paneler, applets med mera, utan att använda paint-metoden. Därefter följer ett antal övningar som handlar om bildhantering i applets. Så är det dags för animering, det vill säga, att få något att röra på sig på appletytan. Dubbelbuffring är en metod som ger mjukare animering. Gör så många övningar som möjligt, framför allt animeringsövningarna. 14: Trådar Med trådar kan man få något att ske "vid sidan av" det ordinarie programmet. Man kanske vill att en klocka ska stå och ticka, eller att en text ska förflyttas över skärmen. I Java är det enkelt att arbeta med trådar, Threads Kör övningarna i kapitlets början, men sedan ska du koncentrera dig på övningar med gränssnittet Runnable Se till att få ett fungerande Asteroidspel. Lös någon eller några av de uppgifter som presenteras sist i kapitlet (studsande bollar, artilleri, snurrande kompassnålar med flera…) 15: Frames, menyer och GUI-program Vi börjar med att skapa Frames (fönster) från applets. Vi lär oss att stänga fönster, och att förse dem med knappar och menyer. Sedan skapar vi i stället Frames från konsolprogram. En Frame blir då en GUIapplikation, ett fristående javaprogram med grafiskt gränssnitt. Vi lär oss också hur man konverterar applets till GUI-applikationer. Du bör komma så långt så att du utan större svårighet kan konvertera dina applets till fristående javaprogram. 16: Filhantering Kapitlet tar upp generella begrepp kring filhantering såsom poster och fält. Skillnaden mellan sekvensfiler och direktfiler förklaras. Begreppen exemplifieras i ett antal övningar. 684090264 © Ove Lundgren 3 Kap 0: Sid 4 17: Java2D Java2 har en uppsättning klasser med samlingsnamnet Java2D. Där finns metoder som erbjuder mer avancerad grafik än vad Graphics-metoderna kan erbjuda. Det här kapitlet kan läsas nä rsom helst efter att man studerat kapitel 4. Kapitel 0 tar först upp olika metoder för att ”översätta” den programkod som människan skriver till datorns språk, och speciellt hur detta sker i Java. Sedan följer några övningar. Dessa förutsätter att Suns utvecklingsverktyg för Java (JDK eller SDK) är installerat. Avsikten med övningarna är att du ska testa utvecklingsmiljön och se att allt fungerar. Du ska skriva av koden och ”provköra”. Du behöver tills vidare inte förstå hur programkoden är uppbyggd. Övningar som ska utföras praktiskt vid datorn markeras med ett streck i vänstermarginalen så som visas här. 684090264 © Ove Lundgren 4 Kap 0: Sid 5 Algoritmer En algoritm är en exakt beskrivning på något som ska göras. Här är ett exempel på en algoritm: // Baka en sockerkaka Sätt ugnen på 175 grader Vispa samman följande ingredienser: 2 ägg, 2 koppar socker, 2 koppar vetemjöl, 2 tsk bakpulver, 50 g smält smör, 1 dl mjölk Häll smeten i en smörjd och bröad form Sätt in formen i ugnen Grädda i 40 minuter Stäng av ugnen Ta ut formen Lätt att förstå och följa (för en människa) - eller hur? Program och programmeringsspråk Datorer förstår inte vårt vanliga språk. Den förstår bara koder bestående av nollor och ettor (kallas maskinkod). Det är svårt för oss människor att ge datorn "order" direkt i maskinkod. Vi skriver i stället program som vi förstår, och som sedan lätt kan översättas till datorns språk. Normalt skriver vi (eller ritar, eller tänker oss) först en algoritm (på svenska). Sen skriver vi ett program som bygger på denna algoritm (Det programmet kallas källkod.) Det finns många programmeringsspråk för att skriva dataprogram: Fortran, Cobol, Basic, Pascal, C, C++ och Java är bara några exempel. Programmeringsspråken är gjorda så att de någorlunda liknar mänskligt språk (bygger mest på engelska och matematik) Språken passar för olika ändamål. De har moderniserats efterhand. Av de ovan nämnda är Fortran äldst (från 1950-talet) och Java yngst (från 1995) När man skriver ett program måste man följa vissa regler (olika för olika språk). Dessa regler kallas språkets syntax. Översättning till maskinkod - Kompilering Då ett program översätts till datorns språk används några olika principer. Vi ser först på ett exempel – ett Pascalprogram - där kompilering används: Algoritm: Upprepa följande 10 gånger: Skriv textsträngen "Hej du glade!" på bildskärmen. Källkod: Ett Pascal-program som utför ovanstående skulle se ut så här: PROGRAM Happy; VAR i : Integer; BEGIN FOR i:=1 TO 10 DO END. WriteLn('Hej du glade!'); Programmet (källkoden) skrivs in i en editor (detta kallas kodning eller editering) och man sparar det med ett lämpligt namn (t ex Happy.PAS) Vi ska inte fördjupa oss i hur programmet fungerar. Helt kort bara: Det intressanta är det som står mellan BEGIN och END FOR-satsen gör att talet i undan för undan får värdet 1, 2, 3, … 10. Textsträngen ”Hej du glade” skrivs ut en gång för varje ”varv” 684090264 © Ove Lundgren 5 Kap 0: Sid 6 Maskinkod: Datorn förstår tyvärr inte källkoden. Programmet måste först översättas (kompileras) till datorns eget språk (maskinkod) Översättningen utförs av speciella program. Ett sådant program kallas kompilator. Det översatta programmet (maskinkoden) sparas på en egen fil (som får namnet Happy.EXE) Om man hämtar in maskinkoden i editorn och försöker läsa så finner man att koden är obegriplig (för oss människor). Så här kan den se ut: MZ° _ _ $_$¤ª @ _ _ _ _ ; @ E T _ _ ___ ___ Ñ__ ì__ ___ !__ Hej alla glada!š _ U‰å1ÀšÍ__ Ç_R _ ë_ÿ_R ¿T_-W¿ W1ÀPšp__ šÝ__ š‘__ ƒ>R uÙ]1Àš___ º ÚŒ_8 3íèu_è ‹Ä__ ±_ÓèŒÒ_£ £ ___ £ £_ £_ £$ _8 &¡_ £ Ç_* Ö Œ, ¿T_¾9_¹_ ü.¬´5Í!‰_ŒE_ƒÇ_âï-º_¸ %Í!º__¸#%Í!ºÛ $%Í!º__¸?%Í!¸T -P-P¸c_PèN_èÈ_¸T_-P-P¸c_Pè:_è¹_Ë3Àœ[ç_SœYåðýðt@ÏðSœYåðt_@¢L ÀÊ_ ûƒÄ_Xƒç•Ç– ü9s_¿ÿÿW´TÍ!‹ìN__X[YZ^_]_ϸРƒÄ_ë_¸È Y[ë_¸ÿ 3É3Ûº Úû£2 ‹ och så vidare… (Egentligen står här bara ettor och nollor. Som du nog vet så representeras ju våra bokstäver och tecken av ettor och nollor i datorn, så editorn gör som den är "lärd" och visar bokstäver och tecken så "gôtt den kan"…) Exekvering Nu har vi (äntligen) en kod som datorn ”begriper” - så vi kan köra (exekvera) pascalprogrammet! Vi antar att vi jobbar vid en PC under Windows. Antingen går man till DOS-prompten och skriver programnamnet (Happy) följt av ett tryck på [ENTER] , eller så dubbelklickar man på filen Happy.EXE i till exempel Utforskaren i Windows … En sådan fil (som kan startas med dubbelklick) kallas en exekverbar (=körbar) fil. Så här blir resultatet: Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej du du du du du du du du du du glade! glade! glade! glade! glade! glade! glade! glade! glade! glade! Översikt – kompilering: Happy.PAS PROGRAM Happy; VAR i : Integer; BEGIN FOR i:=1 TO 10 DO WriteLn('Hej du glade!'); END. Källkoden skrivs i en editor 684090264 Happy.EXE Kompilator Kompilering © Ove Lundgren 0010 1110 0011 0110 0011 Maskinkod Exekvering Hej du glade! Hej du glade! Hej du glade! Hej du glade! Hej du glade! Hej du glade! Hej du glade! HejResultatet… du glade! 6 Kap 0: Sid 7 Plattformsberoende En fördel med kompilerande system är att exekveringen går mycket snabbt. En nackdel är att maskinkoden som skapas fungerar bara på en viss plattform. Med plattform menar man en viss kombination av datortyp och operativsystem (t ex PC/DOS-Windows, MacIntosh/MacOS, Sun/Solaris etc…) Om du har skrivit (t ex) ett Pascal-program och vill köra den på en PC (under DOS/Windows) så kompilerar du för just denna plattform. Om du vill köra programmet på t ex en MacIntosh måste du (först eventuellt göra vissa ändringar i källkoden och sedan) kompilera om programmet så att du får ny fil med maskinkod som Mac:en "begriper". På samma sätt för andra plattformar… Översättning med interpretator I exemplet ovan översattes (kompilerades) hela pascalprogrammet (källkoden) på en gång direkt till maskinkod. Det finns en annan huvudprincip för att översätta källkod till datorns språk nämligen att källkoden översätts undan för undan, ”rad för rad”, under exekveringens gång. Någon exekverbar fil med maskinkod skapas således inte. Ett program som läser källkod, översätter och utför exekvering på detta sätt kallas en interpretator. Basic är ett exempel på ett interpreterande språk, det vill säga ett språk som använder en interpretator ("basictolken") för översättningen. Här är ett exempel med Basic: Happy.BAS FOR i = 1 TO 10 PRINT ”Hej du glade!” NEXT i Källkoden editeras i en editor Interpretator (Basic-tolk) Interpretering (översättning och exekvering ”rad för rad”) Hej du glade! Hej du glade! Hej du glade! Hej du glade! Hej du glade! Hej du glade! Hej du glade! Resultatet… Hej du glade! Interpreterande programspråk är ofta långsammare än kompilerande (eftersom koden måste översättas på nytt vid varje exekvering) De olika plattformarna har sina egna interpretatorer (t ex basic-tolkar). Har man tur så fungerar samma källkod i olika system. Oftast blir det dock fråga om att skriva om källkoden så att den passar aktuell plattform. Mer om kompilatorer och interpretatorer Utöver de ”rent” kompilerande språken (som Pascal med flera) och de ”rent” interpreterande (som de flesta Basic-dialekter) förekommer också "blandsystem" där kompilering inte sker direkt till maskinkod utan till någon form av ”specialkod” som sedan kan tolkas och utföras av en interpretator. Som vi strax ska se fungerar Java på det sättet! Lägg på minnet: En kompilator är ett program som översätter hela källkoden på en gång till ren maskinkod som datorn förstår (som i pascal-exemplet ovan) eller till någon ”specialkod” som sedan tolkas vidare. En interpretator (ibland kallad tolk) är ett program som läser, översätter och exekverar antingen källkoden eller någon ”specialkod” som en kompilator producerat. 684090264 © Ove Lundgren 7 Kap 0: Sid 8 Allmänt om Java-program Editering, kompilering, tolkning och exekvering Editering: Man skriver ett Java-program (källkoden) i en vanlig editor (t ex Anteckningar eller TextPad) Programmet sparas med filtillägget .java (Ex: Happy.java) Kompilering: Programmet ska sedan kompileras. Java-kompilatorn heter javac.exe Kompilatorn startas genom att man, vid DOS-prompten ger kommandot javac följt av källkodens filnamn Ex: javac Happy.java Härvid skapas en fil med filtillägget .class ( i vårt fall Happy.class) Innehållet i denna fil kallas byte-kod [bajt-kod] Observera här: Byte-koden är inte maskinkod utan en kod som kan översättas och exekveras av (i princip) alla plattformar! Varje plattform har sin egen version av java-interpretatorn som läser, översätter och exekverar byte-koden. Denna interpretator (tolk) kallas JVM (= Java Virtual Machine ) I Java behöver man alltså inte (som i andra språk) göra flera versioner av ett program för olika plattformar! Tolkning och exekvering: Programmet ska nu interpreteras (tolkas och exekveras). Javainterpretatorn startas av ett program som heter java.exe Detta startas med kommandot java följt av byte-kod-filens namn (utan filtillägget) Ex: java Happy Så här ser det ut: Happy.java class Happy { public static void main( String args[] ) { for (int i = 0 ; i<10 ;i++) { System.out.println( "Hej du glade" ); } } } Källkoden editeras i en editor Spara Happy.java Happy.class javac 0010 1110 0011 0110 0011 … … (kompilator) Kompilering Hej Hej Hej Hej Hej Hej Hej Hej JVM (tolk) Bytekod javac Happy.java Exekvering du du du du du du du du Resultat java Happy (Filerna javac.exe och, java.exe ingår i dataföretaget Suns utvecklingsverktyg för Java, kallat JDK = Java Developmen Kit ) Olika typer av java-program I vår kurs använder vi PC-maskiner och vi arbetar i DOS/Windows-miljö. Vi kommer att möta dessa tre typer av Java-program: Konsol-program (program som körs under DOS) Frames (”vanliga” Windows-program, kallas även GUI-applikationer. GUI =Graphic User Interface) Applets (körs på en web-sida - se nästa avsnitt!) Java har fått en enorm spridning världen över under de senaste åren. Orsakerna är bland annat: - plattformsoberoendet (javaprogram kan köras på många olika plattformar) - att man kan lägga in java-applets på web-sidor och på så sätt få dessa mera levande och interaktiva 684090264 © Ove Lundgren 8 glade! glade! glade! glade! glade! glade! glade! glade! Kap 0: Sid 9 Applets Vad är då en applet? Du vet vad en HTML-fil är eller hur? (En fil som beskriver innehållet i en web-sida) En applet är helt enkelt kompilerad java-kod (byte-kod, alltså en class-fil) som exekveras från en HTML-fil. En web-läsare (som Netscape och Internet Explorer) har nämligen inbyggda java-tolkar som kan läsa, översätta och exekvera java-kod. Man kan ” bädda in” java-program (applets) på sina hemsidor! En applet med namnet MinApplet startas med taggen <APPLET CODE="MinApplet.class" WIDTH=200 HEIGHT=200> i HTML-koden. När du skapar en applet skriver du källkod och kompilerar på samma sätt som ovan. När du ska exekvera den får du dessutom skriva en HTML-fil där appleten startas (taggen <APPLET CODE= ... > ska finnas med i HTML-koden) Sen provkör du genom att öppna HTML-filen i web-läsaren. (Det finns också ett speciellt program, vid namn appletviewer, med vilket man kan kolla appleten utan att starta webläsaren) Vi återkommer till allt detta senare… Övningar Skapa en ny mapp och ge denna namnet Java Under denna: Skapa en ny mapp och ge denna namnet Happy Denna struktur alltså: X Java Happy (X står för din enhet eller mapp, t ex U: eller G: om du arbetar i nätverk, eller kanske C:\Mina Dokument om du sparar på lokal hårddisk) I fortsättningen ska du (i princip) skapa en ny mapp i Java-mappen för varje nytt program (så att blir det lite ordning och reda!) I de första övningarna ska vi inte närmare gå in på hur programmen fungerar. Avsikten är att du ska få en kontroll av att dina utvecklingverktyg fungerar och att du får vänja dig vid arbetssättet, hur man editerar, kompilerar och exekverar olika typer av program. Vi börjar med ett konsol-program: Övning: Konsolprogrammet Happy Öppna editorn Anteckningar (Tillbehör – Anteckningar) och skriv in koden nedan. Skriv in exakt som det står. Du måste vara mycket noga med gemener och VERSALER och med att få med alla tecken. class Happy { public static void main( String args[] ) { for (int i = 0 ; i<10 ;i++) { System.out.println( "Hej du glade" ); } } } 684090264 © Ove Lundgren 9 Kap 0: Sid 10 Mycket kort om vad programmet gör: Det intressanta står efter ordet for i är ett tal som från början har värdet 0. i++ gör att i successivt kommer att öka sitt värde med 1 (till 1, 2, 3, … osv) Detta pågår så länge i<10 (alltså 10 gånger ). Vid varje "varv" sker utskrift av textsträngen "Hej du glade" Spara programmet i mappen X\Java\Happy med namnet Happy.java (var noga med gemener/VERSALER) Öppna nu även DOS-fönstret ( Start - Program – MS-DOS prompt ) Några DOS-kommandon I DOS-fönstret visas en DOS-prompt (kanske C:\WINDOWS> ) DOS-prompten visar i vilken enhet och mapp man befinner sig. Om endast enhetens namn syns (t ex C:\> ) säger man att man står i enhetens rot. I så fall är man högst upp i ” hierarkien” (man befinner sig inte i en mapp) I DOS skriver man kommandon för vad man vill göra. Du behöver lära dig några få DOS-kommandon. Ett DOS-kommando skrivs in vid prompten och avslutas alltid med att man trycker på [ENTER]-tangenten. Att byta till annan enhet Antag att du står i enhet C: (prompten visar t ex C:\> ) och du vill byta till (exempelvis) enhet G: Vid prompten skriver du: G: och trycker [ENTER] Prompten visar då G:\> Att visa innehållet i en enhet eller mapp Antag att du står i enhet G: och du vill se vilka mappar och filer som finns där. Vid prompten skriver man då: dir [ENTER] Filer och mappar visas… Om många filnamn visas hinner man ibland inte läsa. Namnen flimrar snabbt förbi på skärmen… Då kan man skriva dir/p [ENTER] Utskriften gör paus när skärmen är full. Man måste trycka på en tangent för att komma vidare. Ett alternativ är dir/w [ENTER] Nu skrivs filnamnen i bredd (wide) så att fler får plats på skärmen. Att gå (ned) till en viss mapp Antag att du står i enhet G: och att mappen Java finns i denna enhet och att du vill gå till denna mapp. Vid prompen skriver du då cd Java [ENTER] Prompten visar nu G:\Java> (cd betyder change directory = byt mapp) Att lämna en mapp (och gå uppåt i hierarkien) Antag att du står i mappen G:\Java och vill gå "upp" (i detta fall till roten) igen. Vid prompten skriver du cd.. [ENTER] Prompten visar nu åter G:\> Kommandot cd.. tar dig till nivån närmast ovanför där du befinner dig. Övning: DOS-kommandon. Öva nu på ovanstående DOS-kommandon: Växla mellan olika enheter. Om du jobbar på en lokal maskin kan du växla mellan hårddisk (C:) och diskett (A:) Visa vad enheterna innehåller med kommandot dir På den enhet där du normalt arbetar har du säkert ett antal mappar (och undermappar) vars namn och innehåll du 684090264 © Ove Lundgren 10 Kap 0: Sid 11 redan är välbekant med. Gå upp och ned i ”mapp-hierarkien” med cd-kommandot. Visa vad mapparna innehåller med dir (Öppna gärna Utforskaren samtidigt som jämförelse…) Övning: Kompilera och kör programmet Happy Gå till mappen X\Java\Happy I DOS-fönstret: Visa innehållet i mappen: dir ( Filen Happy.java ska nu visas) javac Happy.java Kompliera (var noga med gemener/VERSALER) Vänta lite medan kompilering sker. Sedan: Visa mappens innehåll igen dir ( Filen Happy.class har skapats!) Därefter: Exekvera java Happy (var noga med gemener/VERSALER) (Resultatet visas. Textsträngen ”Hej du glade” skrivs 10 gånger…) Övning: Ändra Happy Återgå till Anteckningar Ändra så att programmet skriver textsträngen ”Mitt Java-program!” 20 gånger. Spara (med samma namn) I DOS: Kompilera och exekvera. Övning: Windowsprogrammet MyFrame Skapa mappen MyFrame under mappen Java X Java Happy MyFrame Skapa ett nytt dokument i Anteckningar Skriv in den kod som finns på nästa sida (eller kopiera koden om den är tillgänglig som Word-dokument) (Du behöver inte förstå koden nu…) Spara koden med namnet MyFrame.java i mappen MyFrame I DOS-fönstret: Öppna mappen X\Java\MyFrame Kolla innehållet dir Kompilera javac MyFrame.java Kolla innehållet dir Exekvera java MyFrame 684090264 © Ove Lundgren 11 Kap 0: Sid 12 Ett fönster (en "frame", ett Windows-program, en GUI-applikation…) med lite text visas. Njut en stund - stäng sedan fönstret… Här är koden till MyFrame.java import java.awt.event.*; import java.awt.*; class MyFrame extends Frame implements WindowListener { public static void main( String args[]) { MyFrame f; f = new MyFrame(); f.setSize(300,200); f.setVisible(true); } TextArea text1 = new TextArea(); public MyFrame() { add(text1); text1.append("Hej du glade!"); addWindowListener(this); } public void windowClosing(WindowEvent e) { setVisible(false); dispose(); System.exit(0); } public void windowClosed(WindowEvent e){ } public void windowOpened(WindowEvent e){ } public void windowIconified(WindowEvent e){ } public void windowDeiconified(WindowEvent e){ } public void windowActivated(WindowEvent e){ } public void windowDeactivated(WindowEvent e){ } } Vi bryr oss inte, i det här skedet, om varför koden ser ut som den gör. I nästa övning ska du ändra koden på några ställen. Du kan lätt gissa hur och var ändringarna ska utföras. Övning: Ändra MyFrame Ändra koden i MyFrame.java på några punkter: Fönstret (frame) är nu 300 x 200 pixels. Ändra så att det blir (t ex) 500 x 100 pixels. Byt ut textsträngen "Hej du glade!" så att utskriften blir (t ex) "Min första GUI-applikation!" Spara (samma namn) I DOS: Kompilera och kör! Nu har du testat ett konsolprogram och ett GUI-program. Dags för en applet! Nästa sida visar arbetsgången när man skriver, kompilerar och kör en applet. Därefter följer ett praktiskt exempel. 684090264 © Ove Lundgren 12 Kap 0: Sid 13 Arbetsgång för att skriva och köra en applet Skriv källkod och spara Welcome.java Kompilera javac Welcome.java Welcome.java (källkod) Welcome.class (bytekod) 0010 1110 0011 0110 0011 … … import java.applet.Applet; import java.awt.Graphics; public class Welcome extends Applet { public void paint (Graphics g) { g.drawString("Välkommen till... } } javac Welcome.html Skriv HTML-kod och spara Welcome.html Starta en webläsare I denna: Öppna Welcome.html <html> <head> </head> <BODY> <H1>Jag testar min applet!</H1> <APPLET CODE="Welcome.class" WIDTH=300 HEIGHT=200> /APPLET> </BODY> </html> Jag testar min applet! Välkommen till Javaprogrammering HTML ger denna text Det här är vår applet! Resultatet 684090264 © Ove Lundgren 13 Kap 0: Sid 14 Övning: Appleten Welcome Skapa en ny mapp under mappen Java med namnet Welcome I Anteckningar: Skriv av koden nedan exakt som den står import java.applet.Applet; import java.awt.Graphics; public class Welcome extends Applet { public void paint(Graphics g) { g.drawString("Välkommen till JAVA",25,25); } } Spara filen i mappen X\Java\Welcome med namnet Welcome.java (Skilj på gemener/VERSALER! ) Gå till DOS-prompten och navigera till mappen X\Java\Welcome Kompilera: javac Welcome.java Visa innehåll: dir Om kompileringen gick bra har filen Welcome.class skapats. I Anteckningar: Skapa en ny fil. Skriv av koden nedan: <html> <head> </head> <body> <h1>Jag testar min applet! </h1> <APPLET CODE="Welcome.class" WIDTH=300 HEIGHT=200 ></APPLET> </body> </html> Spara filen i X\Java\Welcome med namnet Welcome.html Öppna en webläsare (Netscape eller Explorer) I denna klicka Arkiv – Öppna sida – Välj filen Welcome.html Din web-sida visas… Övning: Visa applets med appletviewer Om man snabbt vill testa en applet (utan att se hela websidan) så kan man använda programmet appletviewer.exe (som också ingår i Suns JDK) Gör så här: Gå till DOS-prompten, mappen X\Java\Welcome Ge kommandot appletviewer Welcome.html Programmet appletviewer startar – appleten visas! För att programmet appletviewer ska fungera krävs det att du har kompilerad kod (en class-fil) och en html-fil. Kom ihåg att skriva hela html-filens namn, inklusive filnamnstillägget (.html)! 684090264 © Ove Lundgren 14 Kap 0: Sid 15 Utvecklingsverktyg för Java Suns Java Development Kit (JDK) Java är utvecklat av dataföretaget Sun När man skriver Java-program arbetar man, som du snart kommer att märka, med något som kallas klasser (och objekt av dessa klasser) Det finns ett stort antal färdiga sådan klasser, samlade i klassbibliotek. I själva verket går programmeringen oftast ut på att använda (och komplettera) klasser som redan finns. Det som behövs för att programmera Java är dessa klassbibliotek samt naturligtvis de program som du redan har använt, nämligen kompilatorn javac.exe, interpretatorn java.exe samt appletviewer.exe Allt detta (och en del annat) finns samlat i Suns utvecklingsverktyg Java Development Kit (JDK) JDK kan laddas ned (gratis!) från Sun:s hemsida. (www.sun.com) JDK version 1.0 kom 1995. JDK version 1.1 kom 1997. JDK version 1.2 kom 1998. Hanterar Java 1.0 Hanterar Java 1.1 Hanterar Java 2 (som först kallades Java 1.2) Senare versioner av utvecklingsverktyg för Java2 kallas Java2 SDK version 1.x Java 1.1 och Java 2 skiljer inte mycket vad gäller grundläggande programmering. Java 2 är större (innehåller betydligt fler klasser…) Några tilläggspaket (som är standard i Java 2): Java Swing som ger nya möjligheter att skapa användargränssnitt (”fönstret som användaren ser”) Java 2D som ger förbättrad grafik Större delen av programmen i denna kurs kan köras med utvecklingverktyg för Java 1.1 För vissa övningar krävs Java2 Om/När du laddar ned JDK hemma får du en självuppackande exe-fil. Dubbelklicka på den och JDK installeras! Sun levererar vidare två utvecklingsverktyg för Java som heter JavaStudio respektive Java WorkShop. Microsoft MicroSoft har ett utvecklingsverktyg för Java kallat Visual J++ med en editor och diverse funktioner som ibland underlättar programutveckling. I Visual J++ version 1.0 och 1.1 arbetar man med en javaversion som motsvarar Java 1.0 I Visual J++ version 6 arbetar man med en javaversion som ungefär motsvarar Java 1.1 (plus en del ”MicroSoft-specifik Java”) Symantec Dataföretaget Symantec (som samarbetar med Sun) har ett utvecklingsverktyg vid namn Visual Café. Här möter man en visuell programmeringsmiljö. Man kan skapa t ex en applet genom att dra ut knappar och andra komponenter från en verktygslåda - ungefär som i VisualBasic, eller i Delphi (som är ett visuellt Pascalverktyg) Borland Borland har ett utvecklingsverktyg för Java som heter Java Builder I denna kurs kommer vi mestadels att arbeta med JDK. Editorer Editorn Anteckningar känns lite ”gammaldags” att arbeta med. Smidigare alternativ finns där man, bland annat, kan ha många filer öppna samtidigt och där det ges möjlighet att lägga in DOS-kommandon (som javac, java etc) direkt i menyer. (Det senare innebär att man slipper gå till DOS-prompten varje gång man ska kompilera och exekvera.) TextPad, WinEdit, PFE och KAWA är exempel på editorer med dessa egenskaper. 684090264 © Ove Lundgren 15 Kap 0: Sid 16 Följande övning förutsätter att editorn TextPad ät tillgänglig och att man lagt in ovan nämnda DOS-kommandon under menyn Tools i densamma. Övning: TextPad Öppna TextPad Klicka File – Open och öppna filen i mappen X\Java\Happy I menyn Tools välj javac Vänta … Meddelande Process completed successfully visas på statusraden (längs ned) I menyn Tools välj java Programmet körs… Kompilera och kör på samma sätt programmet MyFrame Öppna nu filen Welcome.java Ändra textsträngen "Välkommen till JAVA" till "Min första Java-applet!" Spara och kompilera. Öppna också Welcome.html Sätt WIDTH = 500 HEIGHT=100 Spara Med Welcome.html ”i bild” välj (under Tools) alternativet appletviewer Applet Welcome visas… Under menyalternativet Window i TextPad kan du välja vilken fil som ska visas, eller visa flera filer samtidigt i olika fönster. Observera: När du kompilerar och kör måste det fönster vara aktivt som innehåller den aktuella koden (java-filen) När du använder appletviewer ska det fönster vara aktivt som innehåller HTML-koden Hanteringen underlättas, som du märker, väsentligt med en editor av detta slag. Vi kommer huvudsakligen att arbeta med applets i den här kursen. Du kommer att bli mycket van vid den metod för att kompilera och köra applets som du använde i den sista övningen ovan. 684090264 © Ove Lundgren 16