Lilla Java -turen” • Innehåll Varför inte Java! • skulle i så fall vara att

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