Lesen Sie das Probekapitel!

Inhaltsverzeichnis

KapitelÜberschriftSeite
 
1VorwortV
 
2Automatisierte Integration mit Anthill & Co.1
2.1Überblick1
2.2Probleme bei der Softwareentwicklung im (virtuellen) Team1
2.3Lösungsideen und Lösungskonzepte2
2.4Werkzeuge3
2.5Einheitliche Modulstruktur4
2.5.1Modultypen4
2.5.2Beispiele Modulstruktur5
2.6Das Integrationstool Anthill6
2.6.1Das Konzept von Anthill6
2.6.2Arbeitsablauf mit Anthill6
2.6.3Unterstützung durch Urbancode8
2.6.4Die Zukunft von Anthill8
2.7Zusammenfassung8
2.8Links9
2.9Über den Autor9
 
3Source-Code-Generatoren11
3.1Definition11
3.2Motivation11
3.3Forderungen12
3.3.1Allgemein12
3.3.2Generatoren-Plattform12
3.3.3Generat13
3.4Prozess13
3.5Ansätze15
3.5.1Modell15
3.5.2Technisch15
3.5.3Architektur16
3.6Beispiel18
3.6.1Ziele18
3.6.2XML19
3.6.3Modelle20
3.6.4Generat21
3.7Java-Generator23
3.7.1Generierungsablauf24
3.7.2Methodenimplementierung26
3.7.3XSLT-Generator27
3.7.4XSLT-Facadenimplementierung30
3.7.5Jython-Generator32
3.7.6Analyse38
3.7.7Bewertung38
3.8Fazit40
3.9Andere Ansätze40
3.10Links41
3.11Über den Autor41
 
4Das Dynamic Attribute Set Pattern43
4.1Definition und Überblick Über Patterns43
4.2Nutzen von Patterns44
4.3Arbeitsweise mit Patterns44
4.4Quellen für Patterns45
4.5Das Dynamic Attribute Set Pattern (DAS)46
4.5.1Problematik46
4.5.2Anwendungsfälle46
4.5.3Lösung mit dem Dynamic Attribute Set Pattern (DAS)48
4.6Fazit54
4.7Über die Autoren54
 
5Pragmatic Programmer55
5.1Projektrealität55
5.2Auswege56
5.3Das Muster58
5.4Die Bibliothek69
5.4.1Interfaces69
5.4.2Erweiterungen70
5.4.3Defaultimplementierungen71
5.4.4Hilfsklassen71
5.4.5Introspection71
5.4.6Abgrenzung73
5.5Der Prozess74
5.6Schlussbemerkung78
5.7Weitergehende Literatur78
5.8Über den Autor79
 
6KGB-Programmierung81
6.1Motivation81
6.1.1Null-Check81
6.1.2Exception Container84
6.1.3Klassenspezifische Validatoren85
6.1.4Starke Typisierung nutzen87
6.1.5Zusammenspiel mit Logging und Unittests89
6.2Zusammenfassung89
6.3Über die Autoren89
 
7Java und relationale Datenbanken91
7.1Ein SQL-Wrapper macht Applikationen flexibel91
7.2Grundlagen91
7.2.1Relationale Modell91
7.2.2SQL91
7.2.3JDBC92
7.2.4Das Problem92
7.2.5Nachfolgend verwendete Beispiel92
7.3Die Fallen93
7.3.1Falle Join93
7.3.2Falle Position94
7.3.3Falle Sortierung94
7.3.4Falle Alias-Namen94
7.3.5Falle Group95
7.3.6Falle Funktion95
7.3.7Falle Datentypen95
7.3.8Falle Sommerzeit96
7.3.9Falle Borland-Save96
7.3.10Falle Memory Leak 196
7.3.11Falle Memory Leak 296
7.3.12Falle Memory Leak 397
7.3.13Falle Datenbank-Performance97
7.3.14Falle SQL-Bugs97
7.3.15Falle SQL-Umfang und SQL-Version97
7.3.16Falle Syntax97
7.3.17Falle strukturelle Limits98
7.3.18Falle Installation98
7.3.19Falle Bestellung98
7.4Das Kochbuch für den SQL-Wrapper98
7.4.1Rezept: Datenbank Verbindung98
7.4.2Rezept: Jede Tabelle in eine Klasse packen99
7.4.3Rezept: Datenbank-Manipulation kapseln100
7.4.4Rezept: Datenbank-Select kapseln100
7.4.5Rezept: Kapseln von ResultSet-Datentypen101
7.4.6Rezept: Java-Datentypen kapseln102
7.4.7Rezept: Datenbank-Funktionen kapseln102
7.4.8Rezept: Kommandoabschlusszeichen ”;“ kapseln102
7.4.9Rezept: Datenmigration102
7.4.10Zusammenfassung102
7.5Alternativen zum SQL-Wrapper103
7.5.1Visuelle Programmierung103
7.5.2Model Driven Architektur (MDA)103
7.5.3Java-Framework103
7.5.4SQLJ103
7.5.5Java Data Objects (JDO)104
7.6Fazit104
7.7Links105
7.8Über den Autor105
 
8SWT - PlattformÜbergreifend natives Look & Feel107
8.1Introducing SWT107
8.2Installation108
8.2.1Bibliotheken108
8.2.2Dokumentation108
8.3Struktur einer SWT-Anwendung109
8.4Typisch SWT109
8.4.1Erzeugen von Objekten110
8.4.2readAndDispatch-Schleife110
8.4.3Style Bits110
8.4.4Ressourcenverwaltung111
8.5Widgets112
8.6Events114
8.7Grafik115
8.8Layouts115
8.9Distribution116
8.10Zusammenfassung118
8.11Links118
8.12Über den Autor119
 
9Internationalisierung121
9.1Mehrsprachige Anwendungen121
9.2Ermittlung der Länder- bzw. Spracheinstellungen121
9.2.1Full Client/Applikation122
9.2.2Web Client122
9.2.3Benutzerdefiniert122
9.2.4Server122
9.3Ressourcen verwenden123
9.3.1ResourceBundles123
9.3.2Verwendung der Ressourcen124
9.3.3Formatierung von Zahlen und Nachrichten125
9.4Datum und Zeit127
9.4.1Kalender127
9.4.2Zeitzonen127
9.4.3Ein-/Ausgabe128
9.5I18N in Apache Jakarta und JSTL128
9.5.1Apache Jakarta i18n Tag Library128
9.5.2JSP Standard Tag Library129
9.5.3Apache Struts130
9.6Fortgeschrittene Themen130
9.6.1Kodierung und Zeichensätze130
9.6.2Schriftarten131
9.6.3Grafische Benutzungsoberflächen131
9.6.4Sprachsensitive Sortierung132
9.7Links132
9.8Über den Autor133
 
10Java Native Interface135
10.1Motivation136
10.1.1Erweiterung einer vorhandenen Anwendung mit Java137
10.1.2Wiederverwendung vorhandener C/C++-Programmteile137
10.2Grundlagen138
10.2.1Das ”Hello World“-Beispiel138
10.2.2Erweitern einer bestehenden C/C++-Anwendung mit Java143
10.3Toolunterstützung148
10.3.1cxxwrap149
10.3.2SWIG154
10.3.3Weitere Tools161
10.4Links162
10.5Über die Autoren162
 
11Mobile Datenkommunikation163
11.1Was ist ”Mobile Datenkommunikation“?163
11.2Wie macht man Mobile Datenkommunikation?163
11.2.1Socket Kommunikation TCP163
11.2.2Socket Kommunikation UDP164
11.2.3RMI165
11.2.4CORBA165
11.2.5JMS166
11.2.6SOAP166
11.3Herausforderungen der Mobilen Datenkommunikation168
11.3.1TCP168
11.3.2RMI, CORBA, JMS, SOAP170
11.3.3UDP171
11.4Optimierungsmöglichkeiten172
11.4.1Verwendung von Wireless TCP172
11.4.2Lösung bei Verwendung von Standard-TCP172
11.4.3Lösung mit UDP172
11.4.4Optimale Lösung173
11.5Datenkommunikation in der Praxis173
11.5.1RMI Über GPRS174
11.5.2JMS Über GPRS175
11.5.3HTTP Kommunikation im J2ME Midlet177
11.6Nebenbei erwähnt179
11.7Über den Autor179
 
12Server-Konfiguration und -Betrieb181
12.1Überblick181
12.2Entwicklung181
12.2.1Besondere Anforderungen183
12.2.2Lesen von Konfigurationsparametern184
12.2.3Kontrollierte Initialisierung von Web-Anwendungen185
12.2.4Dynamische Änderungen Über das Preferences-API186
12.2.5Logging mittels Log4j188
12.3Betrieb191
12.3.1Schnelles Logging und Log-Level192
12.3.2Mail193
12.3.3Dynamisches Ausführen von Java-Code194
12.4Zusammenfassung195
12.5Links195
12.6Über die Autoren195