HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This PDF will be accessible from your Account page after purchase and requires PDF reading software, such as Acrobat® Reader®.
The eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
This is the eBook version of the printed book. If the print book includes a CD-ROM, this content is not included within the eBook version.
Groovy and Beyond: Leverage the Full Power of Scripting on the JavaTM Platform!
Using the JavaTM platform’s new scripting support, you can improve efficiency, streamline your development processes, and solve problems ranging from prototyping to Web application programming. In Scripting in Java, Dejan Bosanac covers key aspects of scripting with Java, from the exciting new Groovy scripting language to Java’s new Scripting and Web Scripting APIs.
Bosanac begins by reviewing the role and value of scripting languages, and then systematically introduces today’s best scripting solutions for the Java platform. He introduces Java scripting frameworks, identifies proven patterns for integrating scripting into Java applications, and presents practical techniques for everything from unit testing to project builds. He supports key concepts with extensive code examples that demonstrate scripting at work in real-world Java projects. Coverage includes
· Why scripting languages offer surprising value to Java programmers
· Scripting languages that run inside the JVM: BeanShell, JavaScript, and Python
· Groovy in depth: installation, configuration, Java-like syntax, Java integration, security, and more
· Groovy extensions: accessing databases, working with XML, and building simple Web applications and Swing-based UIs
· Bean Scripting Framework: implementation, basic abstractions, and usage examples
· Traditional and new patterns for Java-based scripting
· JSR 223 Scripting API: language bindings, discovery mechanisms, threading, pluggable namespaces, and more
· JSR 223 Web Scripting Framework: scripting the generation of Web content within servlet containers
About the Web Site
All code examples are available for download at this book’s companion Web site.
PREFACE XVII
PART I 1
CHAPTER 1 INTRODUCTION TO SCRIPTING 3
BACKGROUND 4
DEFINITION OF A SCRIPTING LANGUAGE 8
COMPILERS VERSUS INTERPRETERS 8
SOURCE CODE IN PRODUCTION 12
TYPING STRATEGIES 13
DATA STRUCTURES 17
CODE AS DATA 19
SUMMARY 23
SCRIPTING LANGUAGES AND VIRTUAL MACHINES 24
A COMPARISON OF SCRIPTING AND SYSTEM PROGRAMMING 26
RUNTIME PERFORMANCE 26
DEVELOPMENT SPEED 28
ROBUSTNESS 29
MAINTENANCE 32
EXTREME PROGRAMMING 33
THE HYBRID APPROACH 35
A CASE FOR SCRIPTING 37
CONCLUSION 38
CHAPTER 2 APPROPRIATE APPLICATIONS FOR SCRIPTING LANGUAGES 39
WIRING 40
UNIX SHELL LANGUAGES 41
PERL 43
TCL 43
PROTOTYPING 44
PYTHON 47
CUSTOMIZATION 49
VISUAL BASIC FOR APPLICATIONS (VBA) 50
SOFTWARE DEVELOPMENT SUPPORT 51
PROJECT BUILDING 51
TESTING 53
ADMINISTRATION AND MANAGEMENT 55
USER INTERFACE PROGRAMMING 58
TK 58
USE CASES 59
WEB APPLICATIONS 59
SCRIPTING AND UNIX 68
SCRIPTING IN GAMES 68
ADDITIONAL CHARACTERISTICS 69
EMBEDDABLE 70
EXTENSIBLE 70
EASY TO LEARN AND USE 71
CONCLUSION 72
PART II 75
CHAPTER 3 SCRIPTING LANGUAGES INSIDE THE JVM 77
UNDER THE HOOD 80
SCRIPTING LANGUAGE CONCEPTS 82
BEANSHELL 83
GETTING STARTED 83
BASIC SYNTAX 86
LOOSELY TYPED SYNTAX 87
SYNTAX FLAVORS 88
COMMANDS 91
METHODS 91
OBJECTS 92
IMPLEMENTING INTERFACES 93
EMBEDDING WITH JAVA 94
JYTHON 98
GETTING STARTED 98
BASIC SYNTAX 101
WORKING WITH JAVA 103
IMPLEMENTING INTERFACES 105
EXCEPTION HANDLING 107
EMBEDDING WITH JAVA 108
CONCLUSION 109
RHINO 110
GETTING STARTED 110
WORKING WITH JAVA 111
IMPLEMENTING INTERFACES 112
JAVAADAPTER 114
EMBEDDING WITH JAVA 114
HOST OBJECTS 117
CONCLUSION 120
GROOVY 120
OTHER SCRIPTING LANGUAGES 122
JRUBY 122
TCL/JAVA 122
JUDOSCRIPT 122
OBJECTSCRIPT 123
CONCLUSION 123
CHAPTER 4 GROOVY 125
WHY GROOVY? 126
INSTALLATION 127
RUNNING GROOVY SCRIPTS 127
USING THE INTERACTIVE SHELL 127
USING THE INTERACTIVE CONSOLE 128
EVALUATING THE SCRIPT FILE 129
COMPILING GROOVY SCRIPTS 130
DEPENDENCIES 131
CLASSPATH 131
ANT TASK 132
SCRIPT STRUCTURE 133
COMMAND-LINE ARGUMENTS 136
LANGUAGE SYNTAX 137
JAVA COMPATIBILITY 137
STATEMENTS 138
LOOSE TYPING 138
TYPE JUGGLING 140
STRINGS 143
GSTRINGS 145
REGULAR EXPRESSIONS 146
COLLECTIONS 148
LOGICAL BRANCHING 154
LOOPING 156
CLASSES 159
OPERATOR OVERLOADING 162
GROOVYBEANS 165
CLOSURES 168
SYSTEM OPERATIONS 178
FILES 178
PROCESSES 182
EMBEDDING WITH JAVA 184
SECURITY 190
CONCLUSION 194
CHAPTER 5 ADVANCED GROOVY PROGRAMMING 195
GROOVYSQL 196
groovy.sql.Sql 198
groovy.sql.DataSet 209
GROOVLETS 212
GROOVY TEMPLATES 220
GROOVYMARKUP 223
groovy.xml.MarkupBuilder 224
groovy.util.NodeBuilder 227
groovy.xml.SaxBuilder 230
groovy.xml.DomBuilder 232
groovy.xml.Namespace 234
groovy.util.BuilderSupport 235
GROOVY AND SWING 236
TableLayout 239
TableModel 241
CONCLUSION 243
CHAPTER 6 BEAN SCRIPTING FRAMEWORK 245
INTRODUCTION TO THE BEAN SCRIPTING FRAMEWORK 246
GETTING STARTED 247
BASIC CONCEPTS 248
ARCHITECTURE 248
REGISTRATION OF SCRIPTING LANGUAGES 249
MANAGER AND ENGINE INITIALIZATION 252
WORKING WITH SCRIPTS 253
WORKING WITH SCRIPT FILES 257
METHODS AND FUNCTIONS 259
call() 259
apply() 263
DATA BINDING 264
REGISTERING BEANS 265
DECLARING BEANS 268
COMPILATION 270
APPLICATIONS 275
JSP 275
XALAN-J (XSLT) 280
CONCLUSION 288
PART III 289
CHAPTER 7 PRACTICAL SCRIPTING IN JAVA 291
UNIT TESTING 292JUNIT BASICS 293
THE GroovyTestCase CLASS 296
ASSERTION METHODS 297
TEST SUITES 300
SCRIPTS AS UNIT TEST CASES 303
SUMMARY 304
INTERACTIVE DEBUGGING 304
BUILD TOOLS (ANT SCRIPTING) 309
BSF SUPPORT 313
GROOVYMARKUP (ANTBUILDER) 316
SUMMARY 322
SHELL SCRIPTING 323
CLASSPATH 324
EXAMPLE 325
ADMINISTRATION AND MANAGEMENT 328
CONCLUSION 334
CHAPTER 8 SCRIPTING PATTERNS 335
SCRIPTED COMPONENTS PATTERN 337
PROBLEM 337
SOLUTION 338
CONSEQUENCES 339
SAMPLE CODE 340
RELATED PATTERNS 341
MEDIATOR PATTERN (GLUE CODE PATTERN) 341
PROBLEM 341
SOLUTION 342
CONSEQUENCES 345
SAMPLE CODE 345
RELATED PATTERNS 354
SCRIPT OBJECT FACTORY PATTERN 354
PROBLEM 355
SOLUTION 355
CONSEQUENCES 356
SAMPLE CODE 356
RELATED PATTERNS 359
OBSERVER (BROADCASTERS) PATTERN 359
PROBLEM 359
SOLUTION 360
CONSEQUENCES 362
SAMPLE CODE 362
RELATED PATTERNS 369
EXTENSION POINT PATTERN 369
PROBLEM 369
SOLUTION 370
CONSEQUENCES 370
SAMPLE CODE 371
RELATED PATTERNS 374
ACTIVE FILE PATTERN 375
PROBLEM 375
SOLUTION 375
CONSEQUENCES 375
SAMPLE CODE 376
CONCLUSION 380
PART IV 383
CHAPTER 9 SCRIPTING API 385
MOTIVATION AND HISTORY 386
INTRODUCTION 388
GETTING STARTED 390
ARCHITECTURE 391
DISCOVERY MECHANISM 391
ENGINE METADATA 393
CREATING AND REGISTERING SCRIPTING ENGINES 395
CREATION METHODS 396
REGISTRATION METHODS 399
EVALUATION 400
ScriptException 403
BINDING 404
ENGINE SCOPE 405
GLOBAL SCOPE 411
SCRIPT CONTEXT 416
CODE GENERATION 428
OUTPUT STATEMENT 429
METHOD CALL SYNTAX 429
PROGRAM 431
ADDITIONAL ENGINE INTERFACES 432
INVOCABLE 432
COMPILABLE 437
THREADING 440
DYNAMIC BINDINGS 442
CONCLUSION 445
CHAPTER 10 WEB SCRIPTING FRAMEWORK 447
ARCHITECTURE 448
CONTEXT 448
SERVLET 449
INTERACTION 451
GETTING STARTED 453
CONFIGURATION 456
DISABLE SCRIPTING 456
SCRIPT DIRECTORY 457
SCRIPT METHODS 458
ALLOW LANGUAGES 459
DISPLAY RESULT 460
BINDINGS 462
APPLICATION 462
REQUEST 464
RESPONSE 468
SERVLET 468
INCLUDE METHOD 469
FORWARD METHOD 471
SESSION SHARING 473
LANGUAGE TAGS 478
THREADING ISSUES 481
ARCHITECTURAL CHALLENGES 482
INTEGRATION OF JAVA AND PHP APPLICATIONS 482
JAVA BUSINESS LOGIC IN PHP WEB APPLICATIONS 484
PHP VIEWS IN JAVA WEB APPLICATIONS 487
CONCLUSION 488
PART V 489
APPENDIX A GROOVY INSTALLATION 491
DOWNLOAD INSTRUCTIONS 491
INSTALLING GROOVY 492
CONFIGURING GROOVY 492
TESTING GROOVY 492
APPENDIX B GROOVY IDE SUPPORT 495
INSTALLATION 495
USAGE 497
APPENDIX C INSTALLING JSR 223 499
REQUIREMENTS 500
INSTALLATION 500
INDEX 503