Groovy in action: [covers Groovy 2.4]
Gespeichert in:
Hauptverfasser: | , |
---|---|
Format: | Buch |
Sprache: | English |
Veröffentlicht: |
Shelter Island
Manning
2015
|
Ausgabe: | 2. ed. |
Schlagworte: | |
Online-Zugang: | Inhaltsverzeichnis |
Beschreibung: | Previous edition: 2007 |
Beschreibung: | XXXII, 880 S. Ill., graph. Darst. 24 cm |
ISBN: | 9781935182443 |
Internformat
MARC
LEADER | 00000nam a2200000 c 4500 | ||
---|---|---|---|
001 | BV042712074 | ||
003 | DE-604 | ||
005 | 20150804 | ||
007 | t | ||
008 | 150723s2015 ad|| |||| 00||| eng d | ||
016 | 7 | |a 016478917 |2 DE-101 | |
020 | |a 9781935182443 |9 978-1-935182-44-3 | ||
035 | |a (OCoLC)992508875 | ||
035 | |a (DE-599)BSZ433996536 | ||
040 | |a DE-604 |b ger | ||
041 | 0 | |a eng | |
049 | |a DE-11 | ||
082 | 0 | |a 005.133 | |
084 | |a ST 240 |0 (DE-625)143625: |2 rvk | ||
084 | |a ST 250 |0 (DE-625)143626: |2 rvk | ||
100 | 1 | |a König, Dierk |e Verfasser |4 aut | |
245 | 1 | 0 | |a Groovy in action |b [covers Groovy 2.4] |c Dierk Koenig ; Paul King |
250 | |a 2. ed. | ||
264 | 1 | |a Shelter Island |b Manning |c 2015 | |
300 | |a XXXII, 880 S. |b Ill., graph. Darst. |c 24 cm | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
500 | |a Previous edition: 2007 | ||
650 | 4 | |a Groovy (Computer program language) | |
650 | 0 | 7 | |a Groovy |g Programmiersprache |0 (DE-588)7575961-5 |2 gnd |9 rswk-swf |
689 | 0 | 0 | |a Groovy |g Programmiersprache |0 (DE-588)7575961-5 |D s |
689 | 0 | |5 DE-604 | |
700 | 1 | |a King, Paul |e Verfasser |4 aut | |
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=028143394&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-028143394 |
Datensatz im Suchindex
_version_ | 1804174915671162880 |
---|---|
adam_text | Titel: Groovy in action
Autor: König, Dierk
Jahr: 2015
contents
foreword, to the first edition xix
preface xx
acknowledgments xxiii
about this book xxv
about the authors xxx
Part 1 The Groovy language...................................1
1 Your way to Groovy 3
1.1 The Groovy story 4
What is Groovy ? 5 Playing nicely with Java:
seamless integration 6 * Power in your code: a feature-rich
language 9 * Community driven but corporate backed 13
1.2 What Groovy can do for you 14
Groovy for the busy Java professional 14* Groovy for the polyglot
programmer 15* Groovy for pragmatic programmers, extremos,
and agilists 16
1.3 Running Groovy 17
Using groovysh for a welcome message 18
Using groovyConsole 18 * Using the groovy command 20
vii
CONTENTS
1.4 Compiling and running Groovy 22
Compiling Groovy with groovyc 22 * Running a compiled
Groovy script with Java 23
1.5 Groovy IDE and editor support 23
IntelliJ IDEA plug-in 24 * NetBeans IDE plug-in 25
Eclipse plug-in 26 * Groovy support in other editors 26
1.6 Summary 26
Overture: Groovy basics 28
2.1 General code appearance 29
Commenting Groovy code 29 * Comparing Groovy and
Java syntax 29 * Beauty through brevity 30
2.2 Probing the language with assertions 31
2.3 Groovy at a glance 34
Declaring classes 35 * Using scripts 35 * GroovyBeans 36
Annotations 37 * Using grapes 38 * Handling text 39
Numbers are objects 40 * Using lists, maps, and ranges 40
Code as objects: closures 43 * Groovy control structures 45
2.4 Groovy s place in the Java environment 46
My class is your class 47 * GDK: the Groovy library 48
Groovy compiler lifecycle 49
2.5 Summary 53
Simple Groovy datatypes 54
3.1 Objects, objects everywhere 55
Java s type system: primitives and references 55 * Groovy s answer:
everything s an object 56 * Interoperating with Java: automatic
boxing and unboxing 57 * No intermediate unboxing 58
3.2 The concept of optional typing 58
Assigning types 59 * Dynamic Groovy is type safe 59 * Let the
casting work for you 62* The case for optional typing 63
3.3 Overriding operators 64
Overview of overridable operators 64 ¦ Overridden operators
inaction 66* Making coercion work for you 68
3.4 Working with strings 69
Varieties of string literals 69 * Working with GStrings 72
From fava to Groovy 74
CONTENTS
3.5 Working with regular expressions 76
Specifying patterns in string literals 77 ¦ Applying patterns
Patterns in action 81 * Patterns and performance 83
Patterns for classification 84
3.6 Working with numbers 85
Coercion with numeric operators 85 ¦ GDK methods
for numbers 88
3.7 Summary 89
Collective Groovy datatypes 91
4.1 Working with ranges 92
Specifying ranges 93 ¦ Ranges are objects 94
Ranges in action 95
4.2 Working with lists 97
Specifying lists 97 ¦ Using list operators 98
Using list methods 101 * Lists in action 105
4.3 Working with maps 107
Specifying maps 108 ¦ Using map operators 109
Maps in action 113
4.4 Notes on Groovy collections 114
Understanding concurrent modification 114
Distinguishing between copy and modify semantics 115
4.5 Summary 116
Working with closures 117
5.1 A gentle introduction to closures 118
5.2 The case for closures 119
Using iterators 119 ¦ Handling resources with a protocol
5.3 Declaring closures 123
Simple declaration 123¦ Using assignments for
declaration 124 ¦ Referring to methods as closures 125
Comparing the available options 126
5.4 Using closures 127
Calling a closure 127 ¦ More closure capabilities 130
5.5 Understanding closure scope 134
Simple variable scope 135 m Inspecting closure scope 136
Scoping at work: the classic accumulator test 139
CONTENTS
5.6 Returning from closures 140
5.7 Support for design patterns 141
Relationship to the Visitor pattern 142 ¦ Relationship to the
Builder pattern 143 ¦ Relationship to other patterns 143
5.8 Summary 144
Groovy control structures 145
6.1 Groovy truth 146
Evaluating Boolean tests 146 ¦ Assignments within
Boolean tests 147
6.2 Conditional execution structures 149
The humble if statement 149 ¦ The conditional ?: operator
and Elvis 130 * The switch statement and the in operator 131
Sanity checking with assertions 134
6.3 Looping 157
Looping with while 137 m Looping with for 138
6.4 Exiting blocks and methods 160
Normal termination: return/break/continue 160
Exceptions: throw/try-catch-finally 161
6.5 Summary 162
Object orientation, Groovy style 164
7.1 Defining classes and scripts 165
Defining fields and local variables 163 ¦ Methods and
parameters 168 ¦ Safe dereferencing with the ?. operator 172
Constructors 173
7.2 Organizing classes and scripts 175
File to class relationship 176 * Organizing classes in
packages 177 ¦ Further classpath considerations 180
7.3 Advanced object-oriented features 181
Using inheritance 181 * Using interfaces 182
Multimethods 183 ¦ Using traits 185
7.4 Working with GroovyBeans 187
Declaring beans 187 * Working with beans 189
Using bean methods for any object 192 ¦ Fields, accessors,
maps, and Expando 193
CONTENTS
7.5 Using advanced syntax features 194
Querying objects with GPaths 194 ¦ Injecting the spread
operator 197 ¦ Concise syntax with command chains 198
7.6 Summary 199
Dynamic programming zvith Groovy 200
8.1 What is dynamic programming? 202
8.2 Meta Object Protocol 202
8.3 Customizing the MOP with hook methods 204
Customizing methodMissing 204 Customizing
propertyMissing 2061 Using closures for dynamic hooks 207
Customizing GroovyObject methods 208
8.4 Modifying behavior through the metaclass 210
MetaClass knows it all 210 ¦ How to find the metaclass
and invoke methods 211 ¦ Setting other metaclasses 213
Expanding the metaclass 214 ¦ Temporary MOP modifications
using category classes 219 * Writing extension modules 222
Using the @Category annotation 223 ¦ Merging classes
with Mixins 224
8.5 Real-world dynamic programming in action 227
Calculating with metrics 227 ¦ Replacing constructors with
factory methods 228 ¦ Fooling IDEs for fun and profit 228
Undoing metaclass modifications 230 ¦ The Intercept/Cache/
Invoke pattern 231
8.6 Summary 232
Compile-time metaprogramming and
AST transformations 233
9.1 A brief history 234
Generating bytecode, not source code 234 ¦ Putting the power
of code generation in the hands of developers 235
9.2 Making Groovy cleaner and leaner 235
Code-generation transformations 236 * Class design and design
pattern annotations 245 * Logging improvements 252
Declarative concurrency 254 ¦ Easier cloning and
externalizing 258 * Scripting support 263
More transformations 267
CONTENTS
9.3 Exploring AST 268
Tools of the trade 270 Other tools 271
9.4 AST by example: creating ASTs 272
Creating by hand 272 AstBuilder.buildFromSpec 273
AstBuilder.buildFromString 274
AstBuilder.buildFromCode 273
9.5 AST by example: local transformations 276
9.6 AST by example: global transformations 282
9.7 Testing AST transformations 286
9.8 Limitations 290
It s early binding 290 ¦ It s fragile 290
It adds complexity 290 » Its syntax is fixed 291
It s not typed 291 ¦ It s unhygienic 291
9.9 Next steps 292
9.10 Summary 292
Groovy as a static language 294
10.1 Motivation for optional static typing 295
The role of types in Groovy 296 * Type checking
a dynamic language? 296
10.2 Using @TypeChecked 298
Finding typos 299 ¦ Resolving method calls 300
Checking assignments 301 * Type inference 303
Type-checked Grooviness 306 ¦ Type checking closures 310
Revisiting dynamic features in light of type checking 316
Mixing type-checked code with dynamic code 319
10.3 Flow typing 320
Least upper bound 323 ¦ Smart instanceof inference 325
Closure-shared variables 326
10.4 Static compilation 327
©CompileStatic 328 ¦ Method dispatch 329
10.5 Static type checking extensions 332
@DelegatesTo revisited 334 ¦ Type checking
extension scripts 335 ¦ Limits 339
10.6 Summary 340
CONTENTS
xiii
341
t ~f Working with builders 343
JL JL 11.1 Learning by example: Using a builder 345
11.2 Building object trees with NodeBuilder 347
NodeBuilder in action: a closer look at builder code 348
Understanding the builder concept 350 ¦ Smart building
with logic 350
Working with MarkupBuilder 352
Building XML 352 ¦ Building HTML 354
Working with StreamingMarkupBuilder 355
Task automation with AntBuilder 356
From Ant scripts to Groovy scripts 357 ¦ How AntBuilder
works 358 ¦ Smart automation scripts with logic 359
11.6 Easy GUIs with SwingBuilder 360
Reading a password with SwingBuilder 361 ¦ Creating Swing
widgets 363 ¦ Arranging your widgets 366 ¦ Referring to
widgets 370 * Using Swing actions 372 ¦ Using models 374
Binding made easy 377 ¦ Putting it all together 380
11.7 Modern UIs with GroovyFX SceneGraphBuilder 386
Application design with FXML 388 ¦ Properties and
binding 389 ¦ Groovy desktop applications 389
11.8 Creating your own builder 390
Subclassing BuilderSupport 391 ¦ Subclassing
FactoryBuilderSupport 395 * Rolling your own 398
11.9 Summary 399
Part 2 Around the Groovy library
11.3
11.4
11.5
12
Working with the GDK 401
12.1 Working with objects 402
Interactive objects 402 ¦ Convenient Object methods 405
Iterative Object methods 408
12.2 Working with files and I/O 411
Traversing thejilesystem 412 Reading from input
sources 417 ¦ Writing to output destinations 418
Filters and conversions 420 ¦ Streaming serialized objects 422
Temporary data and file copying 422
CONTENTS
12.3 Working with threads and processes 423
Groovy multithreading 424 * Integrating external processes
12.4 Working with templates 429
Understanding the template format 430 * Templates in
action 431 * Advanced template issues 433
12.5 Working with Groovlets 434
Starting with Hello world 435 * Groovlet binding 437
Templating Groovlets 441
12.6 Summary 443
Database programming with Groovy 445
13.1 Groovy SQL: a better JDBC 446
Setting up for database access 447* Executing SQL 452
13.2 Advanced Groovy SQL 463
Performing transactional updates 463 * Working with
batches 464 * Working with pagination 466
Fetching metadata 466 Working with named and named-
ordinal parameters 469 * Using stored procedures 471
13.3 DataSets for SQL without SQL 474
UsingDataSet operations 475 * DataSets on
database views 479
13.4 Organizing database work 481
Architectural overview 481 * Specifying the application
behavior 483 * Implementing the infrastructure 484
Using a transparent domain model 488 ¦ Implementing the
application layer 489
13.5 Groovy and NoSQL 492
MongoDB: A document-style database 492
Neo4J: A graph database 495
13.6 Other approaches 503
13.7 Summary 504
Working with XML and JSON 506
14.1 Reading XML documents 507
Working with a DOM parser 508 * Reading with
a Groovy parser 513 * Reading with a SAX parser 518
Reading with a StAX parser 519
CONTENTS
xv
14.2 Processing XML 521
In-place processing 522 * Streaming processing 524
Updating XML 529 * Combining with XPath 531
14.3 Parsing and buildingJSON 538
ParsingJSON 538 * BuildingJSON 540
14.4 Summary 542
Interacting with Web Services 543
15.1 An overview of Web Services 544
15.2 Reading RSS and ATOM 545
15.3 Using a REST-based API 547
15.4 Using XML-RPC 553
15.5 Applying SOAP 555
Doing SOAP with plain Groovy 556 * Simplifying SOAP
access using HTTPBuilder 558 * Simplifying SOAP access
using groovy-wslite 559
15.6 Summary 560
Integrating Groovy 561
16.1 Prelude to integration 562
Integrating appropriately 563 * Setting up dependencies 564
16.2 Evaluating expressions and scripts with GroovyShell 565
Starting simply 565 * Passing parameters within a binding 567
Generating dynamic classes at runtime 569 * Parsing
scripts 569 * Running scripts or classes 571
Further parameterization of GroovyShell 571
16.3 Using the Groovy script engine 575
Setting up the engine 575 * Running scripts 576
Defining a different resource connector 5 76
16.4 Working with the GroovyClassLoader 577
Parsing and loading Groovy classes 577* The chicken
and egg dependency problem 579 * Providing a custom
resource loader 580 * Playing it safe in a secured sandbox 581
16.5 Spring integration 584
Wiring GroovyBeans 585 * Refreshable beans 587
Inline scripts 587
CONTENTS
16.6 Riding Mustang and JSR-223 588
Introducing JSR-223 588 * The script engine manager
and its script engines 589 * Compilable and invocable
script engines 590 ¦ Polyglot programming 592
16.7 Mastering CompilerGonfiguration 592
The import customize 594 * The source-aware customizer 595
Writing your own customizer 597 * The configscript
compilation option 598
16.8 Choosing an integration mechanism 600
16.9 Summary 601
603
7 ^7 Unit testing with Groovy 605
17.1 Getting started 606
Writing tests is easy 607 * GroovyTestCase: an
introduction 608 * Working with GroovyTestCase 610
17.2 Unit testing Groovy code 611
17.3 Unit testingjava code 614
17.4 Organizing your tests 617
Test suites 617 * Parameterized or data-driven testing 618
Property-based testing 619
17.5 Advanced testing techniques 621
Testing made groovy 622 * Stubbing and mocking 623
Using GroovyLogTestCase 628 * Unit testing performance 629
Code coverage with Groovy 631
17.6 IDE integration 634
Using GroovyTestSuite 635 * Using AUTestSuite 637
17.7 Testing with the Spock framework 638
Testing with mocks 639 * Data-driven Spock tests 642
17.8 Build automation 644
Build integration with Gradle 644 * Build integration
withMaven 647
Part 3 Applied Groovy
17.9 Summary 649
CONTENTS
xvii
Concurrent Groovy with GPars 650
18.1 Concurrency for the rest of us 651
Concurrent != parallel 651 ¦ Introducing new concepts 653
18.2 Concurrent collection processing 654
Transparently concurrent collections 655
Available fork/join methods 65 7
18.3 Becoming more efficient with map/filter/reduce 659
18.4 Dataflow for implicit task coordination 662
Testing for deadlocks 662 Dataflow on sequential
datatypes 663 ¦ Final thoughts on dataflow 665
18.5 Actors for explicit task coordination 665
Using the strengths of Groovy 669
18.6 Agents for delegated task coordination 671
18.7 Concurrency in action 671
18.8 Summary 675
Domain-specific languages 676
19.1 Groovy s flexible nature 677
Back to omitting parentheses 677
19.2 Variables, constants, and method injection 681
Injecting constants through the binding 682
Injecting methods into a script 684 ¦ Adding imports
and static imports automatically 685 * Injecting methods
(revisited) 687 * Adding closures to the binding
19.3 Adding properties to numbers 690
19.4 Leveraging named arguments 693
19.5 Command chains 696
19.6 Defining your own control structures 699
19.7 Context switching with closures 710
19.8 Another technique for builders 715
19.9 Securing your DSLs 718
Introducing SecureASTCustomizer 718
The ArithmeticShell 719 ¦ Stopping the execution
of your programs 721 ¦ Preventing cheating with
metaprogramming 723
xviii
CONTENTS
19.10 Testing and error reporting 725
19.11 Summary 731
The Groovy ecosystem 732
20.1 Groovy Grapes for self-contained scripts 733
20.2 Scriptom for Windows automation 735
20.3 GroovyServ for quick startup 737
20.4 Gradle for project automation 738
20.5 CodeNarc for static code analysis 741
20.6 GContracts for improved design 743
20.7 Grails for web development 745
20.8 Griffon for desktop applications 749
20.9 Gaelyk for Groovy in the cloud 752
20.10 Summary 754
appendix A Installation and documentation 756
appendix B Groovy language information 759
appendix C GDK API quick reference 762
appendix D Cheatsheets 819
appendix E Annotation parameters 825
appendix F Compiler phases 842
appendix G AST visitors 844
appendix H Type checking extensions 850
appendix I Android support 861
index 863
|
any_adam_object | 1 |
author | König, Dierk King, Paul |
author_facet | König, Dierk King, Paul |
author_role | aut aut |
author_sort | König, Dierk |
author_variant | d k dk p k pk |
building | Verbundindex |
bvnumber | BV042712074 |
classification_rvk | ST 240 ST 250 |
ctrlnum | (OCoLC)992508875 (DE-599)BSZ433996536 |
dewey-full | 005.133 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.133 |
dewey-search | 005.133 |
dewey-sort | 15.133 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 2. ed. |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>01442nam a2200397 c 4500</leader><controlfield tag="001">BV042712074</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20150804 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">150723s2015 ad|| |||| 00||| eng d</controlfield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">016478917</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9781935182443</subfield><subfield code="9">978-1-935182-44-3</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)992508875</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)BSZ433996536</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-11</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.133</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 240</subfield><subfield code="0">(DE-625)143625:</subfield><subfield code="2">rvk</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">König, Dierk</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Groovy in action</subfield><subfield code="b">[covers Groovy 2.4]</subfield><subfield code="c">Dierk Koenig ; Paul King</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">2. ed.</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Shelter Island</subfield><subfield code="b">Manning</subfield><subfield code="c">2015</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">XXXII, 880 S.</subfield><subfield code="b">Ill., graph. Darst.</subfield><subfield code="c">24 cm</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="500" ind1=" " ind2=" "><subfield code="a">Previous edition: 2007</subfield></datafield><datafield tag="650" ind1=" " ind2="4"><subfield code="a">Groovy (Computer program language)</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Groovy</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)7575961-5</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Groovy</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)7575961-5</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">King, Paul</subfield><subfield code="e">Verfasser</subfield><subfield code="4">aut</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=028143394&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-028143394</subfield></datafield></record></collection> |
id | DE-604.BV042712074 |
illustrated | Illustrated |
indexdate | 2024-07-10T07:07:59Z |
institution | BVB |
isbn | 9781935182443 |
language | English |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-028143394 |
oclc_num | 992508875 |
open_access_boolean | |
owner | DE-11 |
owner_facet | DE-11 |
physical | XXXII, 880 S. Ill., graph. Darst. 24 cm |
publishDate | 2015 |
publishDateSearch | 2015 |
publishDateSort | 2015 |
publisher | Manning |
record_format | marc |
spelling | König, Dierk Verfasser aut Groovy in action [covers Groovy 2.4] Dierk Koenig ; Paul King 2. ed. Shelter Island Manning 2015 XXXII, 880 S. Ill., graph. Darst. 24 cm txt rdacontent n rdamedia nc rdacarrier Previous edition: 2007 Groovy (Computer program language) Groovy Programmiersprache (DE-588)7575961-5 gnd rswk-swf Groovy Programmiersprache (DE-588)7575961-5 s DE-604 King, Paul Verfasser aut HBZ Datenaustausch application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028143394&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | König, Dierk King, Paul Groovy in action [covers Groovy 2.4] Groovy (Computer program language) Groovy Programmiersprache (DE-588)7575961-5 gnd |
subject_GND | (DE-588)7575961-5 |
title | Groovy in action [covers Groovy 2.4] |
title_auth | Groovy in action [covers Groovy 2.4] |
title_exact_search | Groovy in action [covers Groovy 2.4] |
title_full | Groovy in action [covers Groovy 2.4] Dierk Koenig ; Paul King |
title_fullStr | Groovy in action [covers Groovy 2.4] Dierk Koenig ; Paul King |
title_full_unstemmed | Groovy in action [covers Groovy 2.4] Dierk Koenig ; Paul King |
title_short | Groovy in action |
title_sort | groovy in action covers groovy 2 4 |
title_sub | [covers Groovy 2.4] |
topic | Groovy (Computer program language) Groovy Programmiersprache (DE-588)7575961-5 gnd |
topic_facet | Groovy (Computer program language) Groovy Programmiersprache |
url | http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=028143394&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT konigdierk groovyinactioncoversgroovy24 AT kingpaul groovyinactioncoversgroovy24 |