Systemnahe Klassen und Utilities

Werbung
Systemnahe Klassen und Utilities
Systemnahe Klassen
und
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
1
Die Wurzelklasse
Die Klasse
bildet die Wurzelklasse in der Hierarchie der Klassen,
von der alle anderen Klassen abgeleitet sind
In der Klasse
sind einige elementare Methoden definiert:
•
Methoden
,
, und
•
Methoden
,
Kapitel Threading)
•
Methode
Kapitel Reflection)
für den Zugriff auf die Runtime-Klasse des Objekts (siehe
•
Methode
für eine String-Repräsentation des Objekts
, und
für die Thread-Synchronisation (siehe
Diese Methoden sind in der Klasse
elementar implementiert;
insbesondere die Methoden
,
,
und
müssen oftmals in Unterklassen überschrieben werden
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
2
Die Klasse
Die Klasse System bietet eine Reihe von
-Methoden für
-Feldern und
• Standard-Streams für Eingabe, Ausgabe und Fehlerausgabe
• Zugriff auf Umgebungsvariablen
• Systemnahe Methoden
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
3
Die Klasse
: Standard Ein-/Ausgabe
Für die Ein- und Ausgabe stellt
Verfügung
drei Stream-Objekte zur
Diese Standard-Streams können auch gesetzt werden (= Umleiten
von Standard Ein-/Ausgabe)
!
!
"
Pratikum SWE 2
!
© M. Löberbauer, T. Kotzmann, H. Prähofer
4
Die Klasse
: Umgebungsvariablen
System bietet über Properties Zugriff auf eine Vielzahl von
Umgebungsvariablen
#
!
#
$
!
Mit
!
erhält man Zugriff auf das ganze
Pratikum SWE 2
-Objekt
© M. Löberbauer, T. Kotzmann, H. Prähofer
5
Die Klasse
Property
: Standard-Properties
Bedeutung
java.version
Java-Versionsnummer
java.vendor
java.vendor.url
java.home
java.class.version
java.class.path
os.name
os.arch
os.version
file.separator
path.separator
line.separator
Herstellerspezifische Zeichenkette
URL (also ein Internet-Link) zum Hersteller
Installationsverzeichnis
Versionsnummer der Java-Klassenbibliothek
Aktueller Klassenpfad
Name des Betriebssystems
Betriebssystem-Architektur
Versionsnummer des Betriebssystems
Trennzeichen für die Bestandteile eines Pfadnamens
Trennzeichen für die Trennung von Dateinamen in einer Liste
Zeichenkette für Zeilenschaltung
user.name
user.home
user.dir
java.vm.specification.version
java.vm.specification.vendor
java.vm.specification.name
java.vm.version
java.vm.vendor
java.vm.name
java.specification.vesion
java.specification.vendor
java.specification.name
Name des angemeldeten Benutzers
Home-Verzeichnis
Aktuelles Arbeitsverzeichnis
Version der VM-Spezifikation
Hersteller der VM-Spezifikation
Bezeichnung der VM-Spezifikation
VM-Version
Hersteller der VM
Name der VM-Implementierung
Version der Spezifikation der Laufzeitumgebung
Hersteller der Spezifikation der Laufzeitumgebung
Bezeichnung der Spezifikation der Laufzeitumgebung
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
6
Die Klasse
Klasse
repräsentiert eine persistente Menge von
Eigenschaften in der Form von Name – Wert-Paaren
Properties können von einen Stream geladen und auf einen Stream
geschrieben werden
!
"%
$
!
"%
Die Form der Speicherung auf dem externen Medium (File) ist
&
'
(
Lesen und Schreiben von einzelnen Property-Werten erfolgt mit
Pratikum SWE 2
#
!
#
$
© M. Löberbauer, T. Kotzmann, H. Prähofer
!
7
Die Klasse
: Systemnahe Methoden
Schnelles Kopieren von Arrayinhalten
$
$
!
$
$
)
Setzen und Zugriff auf den aktuellen
)
)
)
)
!
!
Zugriff auf die aktuelle Systemzeit in Millisekunden
*
)
!
Explizites Laden von Code
!
+
!
Explizites Starten des Garbage Collectors
!
Beenden des Programms
%
Pratikum SWE 2
!
© M. Löberbauer, T. Kotzmann, H. Prähofer
8
Weitere systemnahe Klassen im Package
,
•
stellt Zugriff auf laufende Java Runtime (= VM) zur Verfügung
•
ermöglicht Starten von externen Prozessen
•
Klasse, die für das Laden und Nachladen von Klassen verantwortlich ist
•
erlaubt in diesen Prozess des Ladens von Klassen einzugreifen
•
stellt Zugriff auf den JIT-Compiler zur Verfügung
)
•
Basisklasse für die Realisierung von Sicherheitsmanagementstrategien
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
9
Systemnahe Klassen und Utilities
Systemnahe Klassen
und
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
10
und
Für Daten gibt es zwei grundlegende Klassen:
:
•
stellt einen Zeitpunkt in der Form der Anzahl der Millisekunden seit dem
Referenzzeitpunkt 1.1.1970, 00:00:00 dar
•
Anzahl der Millisekunden wird in einer
•
ist primitiv und sollte für weitere datumsspezifische Zugriffe wie z.B. Wochentag
eines Zeitpunkts nicht verwendet werden
•
kapselt ein Datum und stellt Zugriff auf datumsspezifische Informationen zu einem
Zeitpunkt zur Verfügung, wie z.B.
-
-Variablen gespeichert
Wochentag
Monat
das Jahr
Sommerzeitverschiebung
Tag im Jahr
…
• erlaubt Rechnen mit Datumsobjekten, z.B. Verschieben von Zeitpunkten
.
ist eine abstrakte Klasse und erlaubt die Implementierung von
unterschiedlichen Kalendern;
einzige konkrete Spezialisierung ist derzeit /
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
11
Die Klasse
(API Auszug)
%
0
$
$
The class Date represents a specific instant in time, with millisecond precision
!
Allocates a Date object and initializes it so that it represents the time at which it was allocated,
measured to the nearest millisecond.
!
Allocates a Date object and initializes it to represent the specified number of milliseconds since the
standard base time known as "the epoch", namely January 1, 1970, 00:00:00 GMT.
!
*
Sets this Date object to represent a point in time that is time milliseconds after January 1, 1970
00:00:00 GMT.
!
Tests if this date is before the specified date.
!
Tests if this date is after the specified date.
!
Compares two dates for equality. The result is true if and only if the argument is not null and is a
Date object that represents the same point in time, to the millisecond, as this object.
!
*
Compares two Dates for ordering.
!
Converts this Date object to a String of the form: dow mon dd hh:mm:ss zzz yyyy, with dow is day of
week, zzz is time zone and yyyy is year.
Achtung:
definiert eine Vielzahl von weiteren Methoden, wie
1
die aber veraltet sind und nicht mehr verwendet werden sollten
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
,
)
, etc.,
12
Die Klasse
Die Klasse
.
bietet:
-Methoden für die Erzeugung spezifischer
eine gegebene Zeitzone und Land (+
)
-Objekte für
• Methoden für das Setzen des Zeitpunkts
• Methoden für das Setzen von datumsspezifischen Teilen des Zeitpunkts
• Methoden für den Zugriff auf die datumsspezifischen Informationen zum
Zeitpunkt
• Methoden zum Verändern des Zeitpunkts, z.B. Verschieben
• Vergleich von Zeitpunkten
• Eine Reihe von Konstanten für typische Datumswerte, z.B. Wochentage
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
13
Die Klasse
2
: Erzeugung von
#
-Objekte können mit static-methode
erzeugt
werden; Parameter können sein (werden diese weggelassen werden die
Einstellungen im Betriebssystem ausgelesen):
•
die Zeitzone
•
Locale
&
*
'
,
'
!3
,
*
+
4
,
*
,8 !3
4
5
6+
7
5!$
Alternativ kann direkt ein Objekt vom konkreten Typ /
erzeugt werden; Parameter können sein
•
Zeit (wird keine Zeit angegeben wird die aktuelle Zeit genommen)
•
die Zeitzone
•
Locale
&
*
/
'
/
9::;$
,)
$ 9$ <=$ ;>$ 9?!3
'
*
Pratikum SWE 2
4
,
*
4
5
6+
7
© M. Löberbauer, T. Kotzmann, H. Prähofer
5!$ +
,8 !3
14
Die Klasse
ein
: Abfragen von Datumsfeldern
-Objekt kapselt immer einen bestimmten Zeitpunkt
zu diesem Zeitpunkt können alle Kalender-spezifischen Informationen abgefragt werden
Dies erfolgt über die Methode
!
wobei
eine der folgenden in
field
Calendar.ERA
Calendar.YEAR
Calendar.MONTH
Calendar.WEEK_OF_YEAR
Calendar.WEEK_OF_MONTH
Calendar.DAY_OF_MONTH
Calendar.DAY_OF_YEAR
Calendar.DAY_OF_WEEK
Calendar.DAY_OF_WEEK_IN_MONTH
Calendar.AM_PM
Calendar.HOUR
Calendar.HOUR_OF_DAY
Calendar.MINUTE
Calendar.SECOND
Calendar.MILLISECOND
Calendar.ZONE_OFFSET
Calendar.DST_OFFSET
Pratikum SWE 2
definierten Konstanten sein kann
Minimalwert
Maximalwert
0
1
0
1
1
1
1
1
-1
0
0
0
0
0
0
-2*60*60*1000
0
1
5,000,000
11
54
6
31
366
7
6
1
12
23
59
59
999
12*60*60*1000
1*60*60*1000
Bedeutung
Ära
Jahr
Monat - 1
Woche im Jahr
Woche im Monat
Tag im Monat
Tag im Jahr
Wochentag
Wochentagswiederholung im Monat
Vor-/nachmittags
Amerik. Stunde
Stunde
Minute
Sekunde
Millisekunde
Zeitzonenoffset
Sommerzeitoffset
© M. Löberbauer, T. Kotzmann, H. Prähofer
15
Die Klasse
: Setzen von Datumsfeldern
Der im
-Objekt gespeicherte Zeitpunkt kann verändert werden:
mit Methode
$
wobei
!
die gleiche Bedeutung wie bei der Methode
hat
mit Methoden
$
$
$
$
*
*
!
$
$
$
!
)
!
kann der Zeitpunkt direkt gesetzt werden
mit Methoden
$
wird der Zeitpunkt verschoben, wobei
Pratikum SWE 2
!
wieder das Datumsfeld angibt
© M. Löberbauer, T. Kotzmann, H. Prähofer
16
!
Die Klasse
: Weitere Operationen
Vergleich von Datumsobjekten erfolgt über Methoden:
!
!
Umwandlung auf
Methoden:
-Objekt und Zugriff auf Millisekunden seit 1.1.1970 mit
*
*
Pratikum SWE 2
)
!
!
© M. Löberbauer, T. Kotzmann, H. Prähofer
17
Die Klasse
: Konstante
Calendar definiert eine Reihe von Konstanten für Werte bei Datumsobjekten
8&
1
) &
1
@
*8-
1
A &8 -1
@
" ")B")
)
/
definiert zusätzlich die Konstanten
B
für „before Christ “ und „anno domini“ (= after Christ)
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
18
Beispiel
: Ausgabe einer Monatstabelle
Folgendes Programm gibt eine Monatstabelle wie gezeigt aus
,
,C3
*
D
EF
66
#
'
/
;
<<
<P
9N
G
N
<9
<=
9>
!3
'
,
,
'
,
,) &*H!3
)
17 G7) &*H!3
0
,
,
#
66 J
! D
)
9C ?
= <:
<> <O
9? 9;
?: ?<
#
/
66
O
<;
9<
9P
)
<
P
<N
99
9=
'
17 G7) &*H$ <!3
,
,
17 G7I""J!3
0
,
66 "
,
5
4
)
J
'
,
)
5!3
K #
, 8&
,
G
5
13
L
#
3
MM !
5!3
D
,,,
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
19
>
<?
9:
9O
Beispiel Calendar: Ausgabe einer Monatstabelle (forts.)
D
66 *
'
,
,
L <:!
,
66
,
,
17 G7) &*H!3
,
5 5!3
!3
#
*
C
''
#
!
,
,
5C 5!3
,
,
5
5!3
66 &
4
#
''
,
,
!3
,
66
Q
,
*
,
#
'
*8-
1!
0
17 G7) &*H$ <!3
,
,
17 G7I""J!3
R
,
,) &*H! ''
66
66 B
$
B
*
S
#
T'
,
,
!3
<
Q
)
4
, 8&
1!
!3
R
R
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
20
Literatur
Krüger, Handbuch der Java-Programmierung, 3. Auflage, Addison-Wesley,
2003, http://www.javabuch.de: Kapitel 16
Horstmann, Cornell, Core Java 2, Band 1 - Grundlagen, Markt und Technik,
2002: Kapitel 4.2
JavaTM 2 Platform, Standard Edition, API Specification
•
Package
,
•
Package
,
Pratikum SWE 2
© M. Löberbauer, T. Kotzmann, H. Prähofer
21
Programmbeispiele
Beispiel
: Ausgabe einer Monatstabelle:
Core Java 2, Band1: <
Pratikum SWE 2
;,
*
© M. Löberbauer, T. Kotzmann, H. Prähofer
22
Herunterladen