Java核心技术卷II:高级特性(第9版·英文版 上、下册)

Java核心技术卷II:高级特性(第9版·英文版 上、下册)
作 者: Cay Horstmann Gary Cornell
出版社: 人民邮电出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: Java Java Script J2EE 程序设计 计算机/网络
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Cay S. Horstmann 是Scala for the Impatient的作者,还与人合著了Core JavaServer Faces。他是圣何塞州立大学计算机科学专业的教授,还是一名Java Champion,并经常在很多开发者大会上演讲。Gary Cornell 在编程方面拥有20多年的写作和教育经验。他是Apress的创始人之一,编写了很多与开发相关的畅销书,是Jolt大奖的获奖者之一,还荣获过Visual Basic Magazine的读者选择奖。

内容简介

《Java核心技术 卷II:高级特性(第9版?英文版)(上、下册)》是经典的《Java核心技术 卷II:高级特性》的最新版,针对Java SE 7平台进行了全面更新,涵盖了Java语言的高级特性,并兼顾Java SE 7平台的高级用户界面程序设计和企业特性。《Java核心技术 卷II:高级特性(第9版?英文版)(上、下册)》是Java技术权威指南,全面覆盖Java技术的高级主题,包括输入输出流、XML、网络API、数据库编程、高级Swing、Java 2D API、JavaBean组件、安全、脚本、编译和注解处理、分布式对象等,同时涉及本地化、国际化以及Java SE 7的内容。《Java核心技术 卷II:高级特性(第9版?英文版)(上、下册)》对Java技术的阐述精确到位,叙述方式深入浅出,并包含大量程序示例,从而帮助读者充分理解Java语言以及Java类库的相关高级特性。《Java核心技术 卷II:高级特性(第9版?英文版)(上、下册)》适合想将Java应用于实际项目的软件开发人员、高等院校教师和学生参考阅读。

图书目录

Contents

Preface v

Acknowledgments ix

Chapter 1: Streams and Files 1

1.1 Streams 2

1.1.1 Reading and Writing Bytes 2

1.1.2 The Complete Stream Zoo 4

1.1.3 Combining Stream Filters 9

1.2 Text Input and Output 13

1.2.1 How to Write Text Output 13

1.2.2 How to Read Text Input 16

1.2.3 Saving Objects in Text Format 16

1.2.4 Character Sets 20

1.3 Reading and Writing Binary Data 25

1.3.1 Random-Access Files 28

1.4 ZIP Archives 33

1.5 Object Streams and Serialization 36

1.5.1 Understanding the Object Serialization File Format 42

1.5.2 Modifying the Default Serialization Mechanism 48

1.5.3 Serializing Singletons and Typesafe Enumerations 50

1.5.4 Versioning 52

1.5.5 Using Serialization for Cloning 54

1.6 Working with Files 57

1.6.1 Paths 57

1.6.2 Reading and Writing Files 60

1.6.3 Copying, Moving, and Deleting Files 61

1.6.4 Creating Files and Directories 62

1.6.5 Getting File Information 63

1.6.6 Iterating over the Files in a Directory 64

1.6.7 ZIP File Systems 67

1.7 Memory-Mapped Files 68

1.7.1 The Buffer Data Structure 77

1.7.2 File Locking 79

1.8 Regular Expressions 81

Chapter 2: XML 93

2.1 Introducing XML 94

2.1.1 The Structure of an XML Document 96

2.2 Parsing an XML Document 99

2.3 Validating XML Documents 113

2.3.1 Document Type Definitions 114

2.3.2 XML Schema 122

2.3.3 A Practical Example 125

2.4 Locating Information with XPath 140

2.5 Using Namespaces 147

2.6 Streaming Parsers 150

2.6.1 Using the SAX Parser 150

2.6.2 Using the StAX Parser 156

2.7 Generating XML Documents 159

2.7.1 Documents without Namespaces 159

2.7.2 Documents with Namespaces 160

2.7.3 Writing Documents 161

2.7.4 An Example: Generating an SVG File 161

2.7.5 Writing an XML Document with StAX 164

2.8 XSL Transformations 173

Chapter 3: Networking 185

3.1 Connecting to a Server 185

3.1.1 Socket Timeouts 190

3.1.2 Internet Addresses 192

3.2 Implementing Servers 194

3.2.1 Serving Multiple Clients 197

3.2.2 Half-Close 201

3.3 Interruptible Sockets 202

3.4 Getting Web Data 210

3.4.1 URLs and URIs 210

3.4.2 Using a URLConnection to Retrieve Information 212

3.4.3 Posting Form Data 222

3.5 Sending E-Mail 230

Chapter 4: Database Programming 235

4.1 The Design of JDBC 236

4.1.1 JDBC Driver Types 236

4.1.2 Typical Uses of JDBC 238

4.2 The Structured Query Language 239

4.3 JDBC Configuration 245

4.3.1 Database URLs 246

4.3.2 Driver JAR Files 246

4.3.3 Starting the Database 247

4.3.4 Registering the Driver Class 248

4.3.5 Connecting to the Database 249

4.4 Executing SQL Statements 252

4.4.1 Managing Connections, Statements, and Result Sets 255

4.4.2 Analyzing SQL Exceptions 256

4.4.3 Populating a Database 258

4.5 Query Execution 262

4.5.1 Prepared Statements 263

4.5.2 Reading and Writing LOBs 269

4.5.3 SQL Escapes 271

4.5.4 Multiple Results 272

4.5.5 Retrieving Autogenerated Keys 273

4.6 Scrollable and Updatable Result Sets 274

4.6.1 Scrollable Result Sets 274

4.6.2 Updatable Result Sets 277

4.7 Row Sets 281

4.7.1 Constructing Row Sets 282

4.7.2 Cached Row Sets 282

4.8 Metadata 286

4.9 Transactions 296

4.9.1 Save Points 297

4.9.2 Batch Updates 298

4.9.3 Advanced SQL Types 300

4.10 Connection Management in Web and Enterprise Applications 302

Chapter 5: Internationalization 305

5.1 Locales 306

5.2 Number Formats 311

5.2.1 Currencies 318

5.3 Date and Time 319

5.4 Collation 328

5.4.1 Collation Strength 329

5.4.2 Decomposition 329

5.5 Message Formatting 336

5.5.1 Choice Formats 338

5.6 Text Files and Character Sets 340

5.6.1 Character Encoding of Source Files 340

5.7 Resource Bundles 341

5.7.1 Locating Resource Bundles 342

5.7.2 Property Files 343

5.7.3 Bundle Classes 344

5.8 A Complete Example 346

Chapter 6: Advanced Swing 363

6.1 Lists 364

6.1.1 The JList Component 364

6.1.2 List Models 370

6.1.3 Inserting and Removing Values 375

6.1.4 Rendering Values 377

6.2 Tables 381

6.2.1 A Simple Table 382

6.2.2 Table Models 386

6.2.3 Working with Rows and Columns 390

6.2.3.1 Column Classes 390

6.2.3.2 Accessing Table Columns 392

6.2.3.3 Resizing Columns 392

6.2.3.4 Resizing Rows 393

6.2.3.5 Selecting Rows, Columns, and Cells 394

6.2.3.6 Sorting Rows 395

6.2.3.7 Filtering Rows 396

6.2.3.8 Hiding and Displaying Columns 398

6.2.4 Cell Rendering and Editing 408

6.2.4.1 Rendering the Header 409

6.2.4.2 Cell Editing 410

6.2.4.3 Custom Editors 411

6.3 Trees 420

6.3.1 Simple Trees 421

6.3.1.1 Editing Trees and Tree Paths 431

6.3.2 Node Enumeration 440

6.3.3 Rendering Nodes 442

6.3.4 Listening to Tree Events 445

6.3.5 Custom Tree Models 453

6.4 Text Components 462

6.4.1 Change Tracking in Text Components 463

6.4.2 Formatted Input Fields 467

6.4.2.1 Integer Input 468

6.4.2.2 Behavior on Loss of Focus 468

6.4.2.3 Filters 470

6.4.2.4 Verifiers 471

6.4.2.5 Other Standard Formatters 472

6.4.2.6 Custom Formatters 474

6.4.3 The JSpinner Component 485

6.4.4 Displaying HTML with the JEditorPane 494

6.5 Progress Indicators 501

6.5.1 Progress Bars 501

6.5.2 Progress Monitors 505

6.5.3 Monitoring the Progress of Input Streams 509

6.6 Component Organizers and Decorators 514

6.6.1 Split Panes 514

6.6.2 Tabbed Panes 518

6.6.3 Desktop Panes and Internal Frames 524

6.6.4 Cascading and Tiling 527

6.6.5 Vetoing Property Settings 531

6.6.5.1 Dialogs in Internal Frames 533

6.6.5.2 Outline Dragging 534

6.6.6.3 Layers 543

Chapter 7: Advanced AWT 549

7.1 The Rendering Pipeline 550

7.2 Shapes 553

7.2.1 Using the Shape Classes 555

7.3 Areas 570

7.4 Strokes 572

7.5 Paint 581

7.6 Coordinate Transformations 583

7.7 Clipping 589

7.8 Transparency and Composition 592

7.9 Rendering Hints 601

7.10 Readers and Writers for Images 608

7.10.1 Obtaining Readers and Writers for Image File Types 608

7.10.2 Reading and Writing Files with Multiple Images 610

7.11 Image Manipulation 619

7.11.1 Constructing Raster Images 619

7.11.2 Filtering Images 626

7.12 Printing 636

7.12.1 Graphics Printing 637

7.12.2 Multiple-Page Printing 647

7.12.3 Print Preview 649

7.12.4 Print Services 659

7.12.5 Stream Print Services 664

7.12.6 Printing Attributes 664

7.13 The Clipboard 672

7.13.1 Classes and Interfaces for Data Transfer 674

7.13.2 Transferring Text 674

7.13.3 The Transferable Interface and Data Flavors 678

7.13.4 Building an Image Transferable 680

7.13.5 Transferring Java Objects via the System Clipboard 685

7.13.6 Using a Local Clipboard to Transfer Object References 689

7.14 Drag and Drop 689

7.14.1 Data Transfer Support in Swing 691

7.14.2 Drag Sources 696

7.14.3 Drop Targets 699

7.15 Platform Integration 707

7.15.1 Splash Screens 708

7.15.2 Launching Desktop Applications 713

7.15.3 The System Tray 719

Chapter 8: JavaBeans Components 725

8.1 Why Beans? 726

8.2 The Bean-Writing Process 728

8.3 Using Beans to Build an Application 731

8.3.1 Packaging Beans in JAR Files 731

8.3.2 Composing Beans in a Builder Environment 733

8.4 Naming Patterns for Bean Properties and Events 740

8.5 Bean Property Types 743

8.5.1 Simple Properties 744

8.5.2 Indexed Properties 744

8.5.3 Bound Properties 745

8.5.4 Constrained Properties 746

8.6 BeanInfo Classes 754

8.7 Property Editors 758

8.7.1 Writing Property Editors 762

8.7.1.1 String-Based Property Editors 762

8.7.1.2 GUI-Based Property Editors 765

8.8 Customizers 770

8.8.1 Writing a Customizer Class 772

8.9 JavaBeans Persistence 779

8.9.1 Using JavaBeans Persistence for Arbitrary Data 784

8.9.1.1 Writing a Persistence Delegate to Construct an Object 784

8.9.1.2 Constructing an Object from Properties 786

8.9.1.3 Constructing an Object with a Factory Method 787

8.9.1.4 Postconstruction Work 787

8.9.1.5 Transient Properties 788

8.9.2 A Complete Example for JavaBeans Persistence 791

Chapter 9: Security 803

9.1 Class Loaders 804

9.1.1 The Class Loader Hierarchy 806

9.1.2 Using Class Loaders as Namespaces 808

9.1.3 Writing Your Own Class Loader 808

9.2 Bytecode Verification 816

9.3 Security Managers and Permissions 821

9.3.1 Java Platform Security 822

9.3.2 Security Policy Files 826

9.3.3 Custom Permissions 834

9.3.4 Implementation of a Permission Class 835

9.4 User Authentication 842

9.4.1 JAAS Login Modules 849

9.5 Digital Signatures 858

9.5.1 Message Digests 859

9.5.2 Message Signing 862

9.5.3 Verifying a Signature 865

9.5.4 The Authentication Problem 868

9.5.5 Certificate Signing 870

9.5.6 Certificate Requests 872

9.6 Code Signing 873

9.6.1 JAR File Signing 873

9.6.2 Software Developer Certificates 878

9.7 Encryption 880

9.7.1 Symmetric Ciphers 881

9.7.2 Key Generation 882

9.7.3 Cipher Streams 887

9.7.4 Public Key Ciphers 888

Chapter 10: Scripting, Compiling, and Annotation Processing 893

10.1 Scripting for the Java Platform 894

10.1.1 Getting a Scripting Engine 894

10.1.2 Script Evaluation and Bindings 895

10.1.3 Redirecting Input and Output 898

10.1.4 Calling Scripting Functions and Methods 899

10.1.5 Compiling a Script 901

10.1.6 An Example: Scripting GUI Events 901

10.2 The Compiler API 907

10.2.1 Compiling the Easy Way 907

10.2.2 Using Compilation Tasks 907

10.2.3 An Example: Dynamic Java Code Generation 913

10.3 Using Annotations 919

10.3.1 An Example: Annotating Event Handlers 920

10.4 Annotation Syntax 926

10.5 Standard Annotations 931

10.5.1 Annotations for Compilation 932

10.5.2 Annotations for Managing Resources 932

10.5.3 Meta-Annotations 933

10.6 Source-Level Annotation Processing 935

10.7 Bytecode Engineering 943

10.7.1 Modifying Bytecodes at Load Time 949

Chapter 11: Distributed Objects 953

11.1 The Roles of Client and Server 954

11.2 Remote Method Calls 957

11.2.1 Stubs and Parameter Marshalling 957

11.3 The RMI Programming Model 959

11.3.1 Interfaces and Implementations 959

11.3.2 The RMI Registry 961

11.3.3 Deploying the Program 965

11.3.4 Logging RMI Activity 968

11.4 Parameters and Return Values in Remote Methods 970

11.4.1 Transferring Remote Objects 971

11.4.2 Transferring Nonremote Objects 971

11.4.3 Dynamic Class Loading 974

11.4.4 Remote References with Multiple Interfaces 979

11.4.5 Remote Objects and the equals, hashCode, and clone Methods 980

11.5 Remote Object Activation 980

Chapter 12: Native Methods 989

12.1 Calling a C Function from a Java Program 990

12.2 Numeric Parameters and Return Values 997

12.2.1 Using printf for Formatting Numbers 997

12.3 String Parameters 999

12.4 Accessing Fields 1005

12.4.1 Accessing Instance Fields 1005

12.4.2 Accessing Static Fields 1009

12.5 Encoding Signatures 1010

12.6 Calling Java Methods 1012

12.6.1 Instance Methods 1012

12.6.2 Static Methods 1016

12.6.3 Constructors 1017

12.6.4 Alternative Method Invocations 1018

12.7 Accessing Array Elements 1019

12.8 Handling Errors 1023

12.9 Using the Invocation API 1028

12.10 A Complete Example: Accessing the Windows Registry 1034

12.10.1 Overview of the Windows Registry 1034

12.10.2 A Java Platform Interface for Accessing the Registry 1036

12.10.3 Implementation of Registry Access Functions as Native Methods 1036

Index 1051