summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100278.html
blob: b1396a46c68f5b7d4238254da8433daf41a66cce (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<html>
<head>
<title>
Handbuch der Java-Programmierung, 5. Auflage
</title>
</head>
<body>
<a name="startofbody"></a>
<script language="JavaScript" src="hjp4lib.js">
</script>
<script language="JavaScript">
installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100271.html;106,k100277.html;107,k100279.html;108,k100279.html");
</script>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100271.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100277.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">Kapitel 43 - Reflection
</table>
<hr>


<!-- Section -->
<a name="sectlevel2id043007"></a>
<h2>43.7 Zusammenfassung </h2>
<hr>
<ul>
<li><a href="k100278.html#sectlevel2id043007">43.7 Zusammenfassung</a>
</ul>
<hr>

<p>
Das Reflection-API ist ohne Zweifel ein wichtiger Bestandteil von
Java. Es ist nicht nur Grundlage der Beans- und Serialisierungs-APIs,
sondern er&ouml;ffnet dem Tool-Entwickler auch eine F&uuml;lle von
M&ouml;glichkeiten und Freiheiten bei der Entwicklung allgemein verwendbarer
Werkzeuge. Zu beachten ist allerdings, dass Zugriffe auf Methoden
und Membervariablen deutlich langsamer als bei direktem Zugriff ausgef&uuml;hrt
werden. Im experimentellen Vergleich ergaben sich typischerweise Unterschiede
um den Faktor 10 bis 100. W&auml;hrend auf der verwendeten Testmaschine
der Aufruf einer Methode mit einem <a href="index_d.html#ixb100247"><font color=#000080><tt>double</tt></font></a>-Parameter
beispielsweise 120 ns. dauerte, wurden f&uuml;r denselben Aufruf per
Reflection etwa 7.0 &micro;s. ben&ouml;tigt. Bei deaktiviertem Just-In-Time-Compiler
erh&ouml;hte sich die Zeit f&uuml;r den direkten Aufruf auf 620 ns.,
w&auml;hrend der Reflection-Wert mit etwa 7.2 &micro;s. nahezu unver&auml;ndert
blieb. Beim Zugriff auf Membervariablen wurden &auml;hnliche Unterschiede
gemessen. Bemerkenswert ist, dass der JIT bei Verwendung des Reflection-APIs
praktisch keine Geschwindigkeitsvorteile bringt, denn alle nennenswerten
Methoden sind native und k&ouml;nnen daher kaum optimiert werden.

<p>
Mit den Annotationen haben Sie schlie&szlig;lich ein leistungsf&auml;higes
Mittel kennen gelernt, wie Sie zus&auml;tzliche Informationen direkt
in den Quellcode integrieren und auch zur Laufzeit wieder auslesen
k&ouml;nnen. 

<p>
In diesem Kapitel wurden folgende Themen behandelt: 
<ul>
<li>Die Klassen <a href="index_o.html#ixb100224"><font color=#000080><tt>Object</tt></font></a>
und <a href="index_c.html#ixb100641"><font color=#000080><tt>Class</tt></font></a>.
<li>Dynamisches Laden und Instanzieren von Klassen.
<li>Aufruf parameterloser Methoden.
<li>Ein Hilfsprogramm zum Testen von Java-Klassen.
<li>Aufruf parametrisierter Methoden und das automatische Aus- und
Einpacken von primitiven Typen in Wrapperklassen.
<li>Nachbilden von Funktionszeigern mit Reflection.
<li>Verwenden parametrisierter Konstruktoren.
<li>Zugriff auf Membervariablen.
<li>Erzeugen von Arrays und Zugriff auf Array-Elemente.
<li>Die Verwendung von Annotationen im Quellcode
</ul>
<hr>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
Wesley, Version 5.0.1
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100271.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100277.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100279.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>