Kap J1-1 ”Lilla Java -turen” • Innehåll – – – – – – Bakgrund till Java. Kompilering och exekvering av Java -program. Utvecklingsmiljöer Enkelt program. Enkel Applet. Enkelt grafiskt program. 9/20/00 Kap J1-2 Varför inte Java! • skulle i så fall vara att – – – – plattformsoberoende. verktyg för att generera GUI. applets (internet-effekter). generellt oo-språk • robust, hårt typat, säkert, inkrementell kompilering, garbage collection. – stort ”standardiserat” plattformsoberoende bibliotek. – parallella processer (trådning). – nätverksprogrammering och distribuerade system. • inte uppväger – sämre prestanda (exekvering/kompilering). – avsaknad av officiell standard. – kärleken till pekare! 9/20/00 Kap J1-3 Var finns info om Java? • www.javasoft.com – Suns egen hemsida för Java. • www.javaworld.com – Tidskriften JavaWorld • www.sun.com – Välj t ex • more resources • reading • osv • Bra startsida i samband med programutveckling: – http://java.sun.com /products/jdk/1.2/docs/index.html • The Java Language Specification • Java 2 Platform API Specification 9/20/00 1 Kap J1-4 Javaböcker • Java Direkt – Jan Skansholm , Studentlitteratur. • Programutveckling med Java – Hans-Erik Eriksson, Studentlitteratur. • The Java Tutorial: Object oriented programming for the Internet. – Campione / Walrath, Addison-Wesley. (Finns i fri ”on-line”-form) • Core Java (Am., stor, dyr) • Volume 1-Fundamentals • Volume-2 Advanced Features – Horstmann / Cornell, Sunsoft Press Java series. • Thinking in Java – Bruce Eckel, ?. (Finns i fri ”on-line”-form, se www.eckelobjects.com) • Java How to program – Deitel / Deitel, Prentice Hall. • Objektorienterad programmering och Java – Per Holm, Studentlitteratur. • o s v i tusental……. 9/20/00 Kap J1-5 Kompilering -Länkning -Exekvering Kompilator Programkod Javabytekod Interpretator in- ut-data 9/20/00 Kap J1-6 Integrerade utvecklingssystem (IDE) IDE= Integrated Development Environment: • Java Workshop (Sun) • Jbuilder (Borland) • Visual Café (Symantech) • Visual J++ (Microsoft) Enkel och allmänt tillgänglig: • JDK (Sun) – I DOS-fönster: D:>javac TheWall.java D:>java TheWall Kompilering(/länkning) Exekvering 9/20/00 2 ”JDK is a no-frills system” Kap J1-7 JDK Weiss • JDK (Java Development Kit) • Finns några olika versioner av Java: – JDK 1.02 – JDK 1.1.x – JDK 1.2.x • I kursen används JDK 1.1.8 (1.1.6) ! • JDK innehåller • (är gratis och kan laddas ner från Internet) – en virtuell maskin – en Javakompilator – samtliga standardbibliotek • API (Application Programming Interfaces) – dokumentation • Fungerar som referens för andra utvecklingsmiljöer. 9/20/00 Kap J1-8 Första programmet // Första programmet. Fil: TheWall.java public class TheWall { public static void main( String [ ] args ) { System.out.println("Is there anybody out there?" ); } } 9/20/00 Kap J1-9 Ett grafiskt program // Fil: GrafProg.java import java. awt.*; class GrafProg extends Frame { Font f ; GrafProg() { f= new Font("SansSerif", Font.BOLD,24); setBackground(Color. yellow ); setSize(800,250); } public void paint (Graphics g) { g.setFont(f); g.setColor (Color.blue ); g.drawString("Välkommen till Sim -kursen!",45,50); } public static void main(String[] arg) { GrafProg dpt = new GrafProg(); dpt. setVisible( true) ; } } 9/20/00 3 Kap J1-10 ”på den svartvita tiden…” 9/20/00 Kap J1-11 Java API • T ex AWT (Abstract Windows Toolkit ) – paket innehållande klasser för att skriva grafiska program. T ex: • grafisk utformning (färger,typsnitt etc). • grafiska komponenter (menyer, knappas etc). • organisation och utplacering av komponenter (storlek,placering etc). • Paket måste importeras: import java.awt.*; alternativt (i detta fall) import java.awt.Graphics; import java.awt.Font; import java.awt.Color; • Undantag! Paketet java.lang importeras automatiskt till alla Javaprogram. 9/20/00 Kap J1-12 Stil, typsnitt och storlek. f= new Font(" SansSerif", Font.BOLD,24); • Typsnitt: – – – – – Serif SansSerif Monospaced Dialog DialogInput (Times-Roman) (Helvetica ) (Courier) • Stil: – PLAIN – BOLD – ITALIC • Typsnittets storlek 9/20/00 4 Kap J1-13 Applets • betyder ”liten applikation”. • Kan ej köras sjävständigt, utan körs från ett annat program. – I första hand från en webbläsare. • Kan testköras lokalt utan webbläsare med appletviewer (finns med i JDK). – Ge kommandot: c:>appletviewer myAppl.html 9/20/00 Kap J1-14 En enkel applet . // Fil: MyAppl.java import java. awt.*; import java. applet .*; public class MyAppl extends Applet { Font f ; public void init() { f= new Font("SansSerif", Font.PLAIN,18); setBackground(Color. blue); } public void paint (Graphics g) { g.setFont(f); g.setColor(Color.green); g.drawString("Välkommen till ",45,50); g.setFont(new Font("SansSerif", Font.BOLD,30)); g.setColor (Color.red); g.drawString("Sim-kursen! ",200,100); } } 9/20/00 Kap J1-15 En enkel HTML-fil. <html> <head> <title >MyApplet</ title > </head > <body> Inte min sista applet <br> <applet code=MyAppl.class width=600 height=300> </applet> </body> </html> 9/20/00 5 Kap J1-16 ”tillbaka till den svartvita tiden…” 9/20/00 Kap J1-17 Grafik, några exempel. • Klass: java.awt.graphics – metoder för att rita olika slags figurer och texter. import java.awt.*; import java.applet .*; public class GrafFig extends Applet { Font f= new Font ("Serif", Font.ITALIC,18); public void init () { setBackground(Color.white); } public void paint(Graphics g) { g.setColor (Color.black); g.drawRect(50,50,60,60); g.drawString ("Rektangel",50,130); g.setColor(Color.cyan); g.fillOval(200,50,60,60); g.setColor(Color.black); g.drawString("Cirkel",200,130); g.setColor(Color.black); g.drawLine(70,150,50,170); g.drawLine(50,170,90,170); g.drawLine(70,150,90,170); g.drawString ("Triangel",50,190); g.setColor(Color.blue); g.drawArc(200,150,40,20,180,180); g.drawString ("B•GE",200,190); g.setFont(f); g.drawString ("KLART!",400,50); } } 9/20/00 Kap J1-18 Detta visas! 9/20/00 6 Kap J1-19 Paket. • Paket (packages ) används för att organisera klasser. – Javas standardpaket. • java.awt (awt=abstract window toolkit ) – GUI-klasser • java.applet – klasser för design av applets. • java.io – olika stream-klasser. • java.lang – Integer, Math,String, System etc. • java.util – Date,Random,StringTokenizer etc. – Egendefinierade paket. T ex våra simuleringsklasser. • java.sim 9/20/00 Kap J1-20 Paket, forts. • Klass E i paket P specificeras som P.E . T ex: java.util.Date anotherDay = new java. util.Date(); • Import-direktivet underlättar. T ex: import java.util.Date; import java.io.*; medger Date anotherDay = new Date(); FileReader myFile = new FileReader(namn); • Två nackdelar: – – • • svårt avgöra vilka klasser som används. formen .* kan introducera namnkonflikter. Import-direktivet måste ligga före klassdeklarationen. Obs! Hela java.lang importeras automatiskt. 9/20/00 Kap J1-21 Skapa paket. • package-satsen anger att en klass tillhör ett visst paket. • Nedan visas hur package-satsen används för den statiska metoden longPause. package extra; public class Exiting { //Suspendera detta program en lång tid public static void longPause () { try { Thread. sleep(1000000000); } catch( InterruptedException e) {} } } 9/20/00 7 Kap J1-22 Omgivningsvariabeln CLASSPATH • Java söker efter paket under de mappar som anges av CLASSPATH. – Windows 95/98/NT (MS DOS) SET CLASSPATH=.;D:\minaprog\java\klasser\ – UNIX setenv CLASSPATH .:/usr/java/klasser • En klass i paket P måste ligga i en mapp P, vilken kan återfinnas via CLASSPATH –listan. 9/20/00 Kap J1-23 Egendefinierade paket • Struktur se nedan. • Obs! Även subpaket är tillåtna! minaprog java klasser extra Exiting.java Exiting. class sim Prosess.java Prosess. class Scheduler.java Scheduler.class random SimpleRandom.java SimpleRandom. class 9/20/00 Kap J1-24 9/20/00 8