Java application architecture: modularity patterns with examples using OSGi
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Upper Saddle River, NJ [u.a.]
Prentice Hall
2012
|
Schriftenreihe: | Robert C. Martin series
|
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | XXVII, 353 S. graph. Darst. |
ISBN: | 0321247132 9780321247131 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV040117609 | ||
003 | DE-604 | ||
005 | 20120523 | ||
007 | t | ||
008 | 120504s2012 d||| |||| 00||| eng d | ||
020 | |a 0321247132 |9 0-321-24713-2 | ||
020 | |a 9780321247131 |9 978-0-321-24713-1 | ||
035 | |a (OCoLC)799012113 | ||
035 | |a (DE-599)GBV647372304 | ||
040 | |a DE-604 |b ger | ||
041 | 0 | |a eng | |
049 | |a DE-83 |a DE-523 |a DE-863 |a DE-859 |a DE-522 | ||
082 | 0 | |a 005.117 | |
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
100 | 1 | |a Knoernschild, Kirk |e Verfasser |0 (DE-588)184216249 |4 aut | |
245 | 1 | 0 | |a Java application architecture |b modularity patterns with examples using OSGi |c Kirk Knoernschild |
264 | 1 | |a Upper Saddle River, NJ [u.a.] |b Prentice Hall |c 2012 | |
300 | |a XXVII, 353 S. |b graph. Darst. | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
490 | 0 | |a Robert C. Martin series | |
650 | 0 | 7 | |a Software Engineering |0 (DE-588)4116521-4 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Java |g Programmiersprache |0 (DE-588)4401313-9 |D s |
689 | 0 | 1 | |a Software Engineering |0 (DE-588)4116521-4 |D s |
689 | 0 | |5 DE-604 | |
856 | 4 | 2 | |m HBZ Datenaustausch |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=024973773&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
943 | 1 | |a oai:aleph.bib-bvb.de:BVB01-024973773 |
Datensatz im Suchindex
DE-BY-863_location | 1340 |
---|---|
DE-BY-FWS_call_number | 1340/ST 250 J35 K72 |
DE-BY-FWS_katkey | 453852 |
DE-BY-FWS_media_number | 083101260723 |
_version_ | 1828435635167297537 |
adam_text |
Titel: Java application architecture
Autor: Knoernschild, Kirk
Jahr: 2012
Contents
Foreword by Robert C. Martin xix
Foreword by Peter Kriens xxi
Acknowledgments xxv
About the Author xxvii
Introduction I
Object-Oriented Design 2
Logical versus Physical Design 3
Modularity 4
Unit of Modularity: The JAR File 5
OSGi 5
Who This Book Is For 6
How This Book Is Organized 7
Part I: The Case for Modularity 7
Part II: The Patterns 8
Part III: POM A and OSGi 9
Pattern Form 10
Pattern Name 11
Pattern Statement 11
Sketch 11
Description 11
IX
Contents
Implementation Variations 11
Consequences 11
Sample 12
Wrapping Up 12
Pattern Catalog 12
The Code 13
An Opening Thought on the Modularity Patterns 14
Reference 14
Part I The Case for Modularity 15
Chapter I Module Defined 17
1.1 Defining a Module 17
1.1.1 Deployable 17
1.1.2 Manageable 18
1.1.3 Testable 19
1.1.4 Natively Reusable 19
1.1.5 Composable 19
1.1.6 Stateless 19
1.2 Succinct Definition of a Software Module 20
1.3 Conclusion 20
Chapter 2 The Two Facets of Modularity 21
2.1 The Runtime Model 21
2.2 The Development Model 22
2.2.1 The Programming Model 22
2.2.2 The Design Paradigm 23
2.3 Modularity Today 25
2.3.1 Beware 26
2.4 Conclusion 27
Chapter 3 Architecture and Modularity 29
3.1 Defining Architecture 29
3.2 A Software Architecture Story 30
3.2.1 The Ivory Tower 30
3.2.2 Turtles and the Tower 31
Contents
3.3 The Goal of Architecture 33
3.3.1 The Paradox 34
3.3.2 Eliminating Architecture 35
3.4 Modularity: The Missing Ingredient 36
3.4.1 Is It Really Encapsulated? 37
3.5 Answering Our Questions 43
3.6 Conclusion 44
3.7 References 44
Chapter 4 Taming the Beast Named Complexity 45
4.1 Enterprise Complexity 46
4.2 Technical Debt 47
4.3 Design Rot 48
4.3.1 Hinder Maintenance 48
4.3.2 Prevent Extensibility 48
4.3.3 Inhibit Reusability 49
4.3.4 Restrict Testability 49
4.3.5 Hamper Integration 49
4.3.6 Limit Understanding 49
4.4 Cyclic Dependencies-The Death Knell 50
4.4.1 Types of Cycles 50
4.4.2 Creeping Cycles 53
4.4.3 Managing Cycles 54
4.4.4 Are Cycles Always Bad? 55
4.5 Joints, Modules, and SOLID 56
4.6 Managing Complexity 57
4.6.1 Illustrating the Benefit 57
4.7 Benefits of Modularity 59
4.8 Conclusion 60
4.9 References 60
Chapter 5 Realizing Reuse 61
5.1 The Use/Reuse Paradox 62
5.2 The Reuse Disclaimer 63
5.2.1 Granularity 63
5.2.2 Weight 64
XI
Contents
5.3 Reuse or Use 64
5.4 Modular Tension 65
5.5 Modular Design 66
5.6 Conclusion 67
5.7 Reference 68
Chapter 6 Modularity and SOA 69
6.1 All the Way Down, Revisited 69
6.1.1 Structural Flexibility-Different Entities, Different Purpose 70
6.2 Granularity-Architecture's Nemesis 72
6.2.1 A Really Simple Example 72
6.2.2 Bring It Up a Level 74
6.2.3 Another Dimension 74
6.2.4 The Complete Picture 75
6.2.5 A Service Example 71
6.3 An Alternate View 79
6.4 Conclusion 80
Chapter 7 Reference Implementation 83
7.1 Why No OSGi? 83
7.2 Background on This Exercise: Building the System 84
7.3 Version 1 85
7.4 First Refactoring 87
7.4.1 Wrapping Up and Getting Ready for the Next Refactoring 89
7.5 Second Refactoring 90
7.6 Third Refactoring 93
7.6.1 Wrapping Up and Getting Ready for the Fourth Refactoring 95
7.7 Fourth Refactoring 95
7.7.1 A Note on the Benefit of OSGi 96
7.7.2 Wrapping Up and Getting Ready for the Next Refactoring 98
7.8 Fifth Refactoring 98
7.9 Sixth Refactoring 99
7.10 Seventh Refactoring 102
7.11 The Postmortem 103
Zil.l A Note on Module Testing 104
7.11.2 A Note on Managing Module Dependencies 106
7.11.3 A Note on Module Reuse 108
XII
Contents
7.11.4 A Note on the Build 109
7.11.5 A Note on Object Orientation 110
7.12 Conclusion 110
7.13 Reference 110
Part II The Patterns III
Chapter 8 Base Patterns 115
Manage Relationships 116
Statement 116
Description 116
Implementation Variations 117
Consequences 120
Sample 122
Wrapping Up 124
Module Reuse 125
Statement 125
Description 125
Implementation Variations 127
Consequences 129
Sample 129
Wrapping Up 138
Cohesive Modules 139
Statement 139
Description 139
Implementation Variations 139
Consequences 140
Sample 141
Wrapping Up 144
Chapter 9 Dependency Patterns 145
Acyclic Relationships 146
Statement 146
Description 146
Implementation Variations 146
Consequences 147
Contents
Sample 148
Wrapping Up 155
Levelize Modules 157
Statement 157
Description 157
Implementation Variations 157
Consequences 159
Sample 160
Wrapping Up 160
Physical Layers 162
Statement 162
Description 162
Implementation Variations 162
Consequences 164
Samp/e 164
Wrapping Up 169
Container Independence 170
Statement 170
Description 170
Implementation Variations 171
Consequences 172
Sample 172
Wrapping Up 176
Independent Deployment 178
Statement 178
Description 178
Implementation Variations 178
Consequences 180
Samp/e 180
Wrapping l/p 185
Reference 185
Chapter 10 Usability Patterns 187
Published Interface 188
Statement 188
Description 188
Implementation Variations 189
XIV
Contents
Consequences 192
Sample 193
Wrapping Up 199
External Configuration 200
Statement 200
Description 200
Implementation Variations 200
Consequences 202
Sample 202
Wrapping Up 205
Default Implementation 206
Statement 206
Description 206
Implementation Variations 206
Consequences 208
Stfmp/e 208
Wrapping Up 211
Module Facade 212
Statement 212
Description 212
Implementation Variations 212
Consequences 214
Sample 215
Wrapping Up 219
Chapter II Extensibility Patterns 221
Abstract Modules 222
Statement 222
Description 222
Implementation Variations 223
Consequences 224
Samp/e 224
Wrapping Up 228
Implementation Factory 229
Statement 229
Description 229
Implementation Variations 230
xv
Contents
Consequences 231
Sample 232
Wrapping Up 236
Separate Abstractions 237
Statement 237
Description 237
Implementation Variations 238
Consequences 240
Sample 241
Wrapping Up 244
Reference 244
Chapter 12 Utility Patterns 245
Colocate Exceptions 246
Statement 246
Description 246
Implementation Variations 247
Consequences 247
Sflwp/e 248
Wrapping Up 252
Levelize Build 253
Statement 253
Description 253
Implementation Variations 255
Consequences 256
Sample 257
Wrapping Up 262
Test Module 263
Statement 263
Description 263
Implementation Variations 263
Consequences 265
Sample 265
Wrapping Up 269
xvi
Contents
Part III POMA and OSGi 271
Chapter 13 Introducing OSGi 273
13.1 Some History 273
13.2 Benefits of OSGi 274
13.2.1 Modular Development 274
13.2.2 Managed Dependencies 274
13.2.3 Module Platform 275
13.2.4 Versioned Bundles 275
13.2.5 Dynamic (Re)deployment 276
13.2.6 Environmental Control 276
13.3 Digesting OSGi 276
13.4 OSGi Bundle 277
13.4.1 Bundle State 277
13.4.2 OSGi uServices 278
13.5 OSGi Runtime Management 279
13.6 The Two Facets of Modularity, Revisited 279
13.7 OSGi and the Patterns 279
13.7.1 Managing Dependencies 280
13.7.2 Dynamism 281
13.7.3 Blueprint Specification 281
Chapter 14 The Loan Sample and OSGi 283
14.1 Getting Started 283
14.2 The Manifests 285
14.3 uServices 286
14.3.1 Blueprint Services 286
14.3.2 The Loan Bean Configuration 287
14.3.3 OSGi pService Declarations 290
14.4 Installation and Execution 292
14.5 Conclusion 293
Chapter 15 OSGi and Scala 295
15.1 Getting Started 295
15.2 The Scala Code 296
15.2.1 The Manifest 298
XVII
Contents
15.3 Scala Bean Configuration 299
15.4 Scala uService Configuration 299
15.5 Building the Scala Module 300
15.6 Installation and Execution 300
15.7 Conclusion 301
Chapter 16 OSGi and Groovy 303
16.1 Getting Started 303
16.2 The Groovy Code 304
16.2.1 The Manifest 306
16.3 Groovy Bean Configuration 306
16.4 Groovy Service Configuration 307
16.5 Building the Groovy Module 307
16.6 Installation and Execution 308
16.7 Conclusion 309
Chapter 17 Future of OSGi 311
17.1 OSGi as an Enabler 312
17.2 The Disruption 312
17.2.1 A Bit of (Recent) Platform History 313
17.3 The Power of Ecosystems 314
17.3.1 Ecosystems and the Two Facets of Modularity 315
17.3.2 CBD Has Already Had Its Day, You Say? 315
17.4 The Ecosystem 316
17.5 Conclusion 317
Appendix SOLID Principles of Class Design 319
Single Responsibility Principle (SRP) 320
Open Closed Principle (OCP) 320
Liskov Substitution Principle (LSP) 323
Dependency Inversion Principle (DIP) 325
Interface Segregation Principle 327
Composite Reuse Principle (CRP) 329
References 335
Index 337
XVHI |
any_adam_object | 1 |
author | Knoernschild, Kirk |
author_GND | (DE-588)184216249 |
author_facet | Knoernschild, Kirk |
author_role | aut |
author_sort | Knoernschild, Kirk |
author_variant | k k kk |
building | Verbundindex |
bvnumber | BV040117609 |
classification_rvk | ST 250 |
ctrlnum | (OCoLC)799012113 (DE-599)GBV647372304 |
dewey-full | 005.117 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.117 |
dewey-search | 005.117 |
dewey-sort | 15.117 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>00000nam a2200000 c 4500</leader><controlfield tag="001">BV040117609</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20120523</controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">120504s2012 d||| |||| 00||| eng d</controlfield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">0321247132</subfield><subfield code="9">0-321-24713-2</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9780321247131</subfield><subfield code="9">978-0-321-24713-1</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)799012113</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)GBV647372304</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">eng</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-83</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-863</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-522</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.117</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Knoernschild, Kirk</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)184216249</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Java application architecture</subfield><subfield code="b">modularity patterns with examples using OSGi</subfield><subfield code="c">Kirk Knoernschild</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Upper Saddle River, NJ [u.a.]</subfield><subfield code="b">Prentice Hall</subfield><subfield code="c">2012</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXVII, 353 S.</subfield><subfield code="b">graph. Darst.</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="490" ind1="0" ind2=" "><subfield code="a">Robert C. Martin series</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Software Engineering</subfield><subfield code="0">(DE-588)4116521-4</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Software Engineering</subfield><subfield code="0">(DE-588)4116521-4</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">HBZ Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=024973773&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="943" ind1="1" ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-024973773</subfield></datafield></record></collection> |
id | DE-604.BV040117609 |
illustrated | Illustrated |
indexdate | 2025-04-04T04:01:44Z |
institution | BVB |
isbn | 0321247132 9780321247131 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-024973773 |
oclc_num | 799012113 |
open_access_boolean | |
owner | DE-83 DE-523 DE-863 DE-BY-FWS DE-859 DE-522 |
owner_facet | DE-83 DE-523 DE-863 DE-BY-FWS DE-859 DE-522 |
physical | XXVII, 353 S. graph. Darst. |
publishDate | 2012 |
publishDateSearch | 2012 |
publishDateSort | 2012 |
publisher | Prentice Hall |
record_format | marc |
series2 | Robert C. Martin series |
spellingShingle | Knoernschild, Kirk Java application architecture modularity patterns with examples using OSGi Software Engineering (DE-588)4116521-4 gnd Java Programmiersprache (DE-588)4401313-9 gnd |
subject_GND | (DE-588)4116521-4 (DE-588)4401313-9 |
title | Java application architecture modularity patterns with examples using OSGi |
title_auth | Java application architecture modularity patterns with examples using OSGi |
title_exact_search | Java application architecture modularity patterns with examples using OSGi |
title_full | Java application architecture modularity patterns with examples using OSGi Kirk Knoernschild |
title_fullStr | Java application architecture modularity patterns with examples using OSGi Kirk Knoernschild |
title_full_unstemmed | Java application architecture modularity patterns with examples using OSGi Kirk Knoernschild |
title_short | Java application architecture |
title_sort | java application architecture modularity patterns with examples using osgi |
title_sub | modularity patterns with examples using OSGi |
topic | Software Engineering (DE-588)4116521-4 gnd Java Programmiersprache (DE-588)4401313-9 gnd |
topic_facet | Software Engineering Java Programmiersprache |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=024973773&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT knoernschildkirk javaapplicationarchitecturemodularitypatternswithexamplesusingosgi |
Inhaltsverzeichnis
THWS Würzburg Teilbibliothek SHL, Raum I.2.11
Signatur: |
1340 ST 250 J35 K72 |
---|---|
Exemplar 1 | ausleihbar Verfügbar Bestellen |