Product Cover Image

Scripting in Java: Languages, Frameworks, and Patterns

By Dejan Bosanac

Published by Addison-Wesley Professional

Published Date: Aug 9, 2007

Description

This is the eBook version of the printed book.

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.

Table of Contents

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

Purchase Info

ISBN-10: 0-13-279995-2

ISBN-13: 978-0-13-279995-9

Format: eBook (Watermarked)?

This eBook includes the following formats, accessible from your Account page after purchase:

ePubEPUBThe open industry format known for its reflowable content and usability on supported mobile devices.

MOBIMOBIThe eBook format compatible with the Amazon Kindle and Amazon Kindle applications.

Adobe ReaderPDFThe popular standard, used most often with the free Adobe® Reader® software.

This eBook requires no passwords or activation to read. We customize your eBook by discretely watermarking it with your name, making it uniquely yours.

Includes EPUB, MOBI, and PDF

$47.99 $38.39

Add to Cart