TIENE EN SU CESTA DE LA COMPRA
en total 0,00 €
The release of Java SE 8 introduced significant enhancements that impact the Core Java technologies and APIs at the heart of the Java platform. Many old Java idioms are no longer required and new features like lambda expressions will increase programmer productivity, but navigating these changes can be challenging.
Core Java® for the Impatient is a complete but concise guide to Java SE 8. Written by Cay Horstmann-the author of Java SE 8 for the Really Impatient and Core JavaT, the classic, two-volume introduction to the Java language-this indispensable new tutorial offers a faster, easier pathway for learning the language and libraries. Given the size of the language and the scope of the new features introduced in Java SE 8, there's plenty of material to cover, but it's presented in small chunks organized for quick access and easy understanding.
If you're an experienced programmer, Horstmann's practical insights and sample code will help you quickly take advantage of lambda expressions (closures), streams, and other Java language and platform improvements. Horstmann covers everything developers need to know about modern Java, including
Crisp and effective coverage of lambda expressions, enabling you to express actions with a concise syntax
A thorough introduction to the new streams API, which makes working with data far more flexible and efficient
A treatment of concurrent programming that encourages you to design your programs in terms of cooperating tasks instead of low-level threads and locks
Up-to-date coverage of new libraries like Date and Time
Other new features that will be especially valuable for server-side or mobile programmers
Whether you are just getting started with modern Java or are an experienced developer, this guide will be invaluable for anyone who wants to write tomorrow's most robust, efficient, and secure Java code.
Preface xxi
Acknowledgments xxiii
About the Author xxv
Chapter 1: Fundamental Programming Structures 1
1.1 Our First Program 2
1.2 Primitive Types 7
1.3 Variables 10
1.4 Arithmetic Operations 13
1.5 Strings 20
1.6 Input and Output 26
1.7 Control Flow 30
1.8 Arrays and Array Lists 37
1.9 Functional Decomposition 46
Exercises 49
Chapter 2: Object-Oriented Programming 53
2.1 Working with Objects 54
2.2 Implementing Classes 58
2.3 Object Construction 63
2.4 Static Variables and Methods 68
2.5 Packages 72
2.6 Nested Classes 79
2.7 Documentation Comments 84
Exercises 89
Chapter 3: Interfaces and Lambda Expressions 93
3.1 Interfaces 94
3.2 Static and Default Methods 99
3.3 Examples of Interfaces 102
3.4 Lambda Expressions 107
3.5 Method and Constructor References 110
3.6 Processing Lambda Expressions 112
3.7 Lambda Expressions and Variable Scope 116
3.8 Higher-Order Functions 120
3.9 Local Inner Classes 122
Exercises 124
Chapter 4: Inheritance and Reflection 127
4.1 Extending a Class 128
4.2 Object: The Cosmic Superclass 137
4.3 Enumerations 147
4.4 Runtime Type Information and Resources 151
4.5 Reflection 160
Exercises 169
Chapter 5: Exceptions, Assertions, and Logging 173
5.1 Exception Handling 174
5.2 Assertions 185
5.3 Logging 187
Exercises 194
Chapter 6: Generic Programming 199
6.1 Generic Classes 200
6.2 Generic Methods 201
6.3 Type Bounds 202
6.4 Type Variance and Wildcards 203
6.5 Generics in the Java Virtual Machine 208
6.6 Restrictions on Generics 211
6.7 Reflection and Generics 218
Exercises 221
Chapter 7: Collections 227
7.1 An Overview of the Collections Framework 228
7.2 Iterators 232
7.3 Sets 233
7.4 Maps 235
7.5 Other Collections 238
7.6 Views 244
Chapter 8: Streams 249
8.1 From Iterating to Stream Operations 250
8.2 Stream Creation 251
8.3 The filter, map, and flatMap Methods 252
8.4 Extracting Substreams and Combining Streams 254
8.5 Other Stream Transformations 254
8.6 Simple Reductions 255
8.7 The Optional Type 256
8.8 Collecting Results 259
8.9 Collecting into Maps 260
8.10 Grouping and Partitioning 262
8.11 Downstream Collectors 262
8.12 Reduction Operations 264
8.13 Primitive Type Streams 266
8.14 Parallel Streams 267
Exercises 269
Chapter 9: Processing Input and Output 273
9.1 Input/Output Streams, Readers, and Writers 274
9.2 Paths, Files, and Directories 284
9.3 URL Connections 292
9.4 Regular Expressions 293
9.5 Serialization 301
Exercises 307
Chapter 10: Concurrent Programming 311
10.1 Concurrent Tasks 312
10.2 Thread Safety 317
10.3 Parallel Algorithms 323
10.4 Threadsafe Data Structures 324
10.5 Atomic Values 329
10.6 Locks 331
10.7 Threads 337
10.8 Asynchronous Computations 341
10.9 Processes 345
Exercises 348
Chapter 11: Annotations 355
11.1 Using Annotations 356
11.2 Defining Annotations 361
11.3 Standard Annotations 364
11.4 Processing Annotations at Runtime 368
11.5 Source-Level Annotation Processing 371
Exercises 376
Chapter 12: The Date and Time API 379
12.1 The Time Line 380
12.2 Local Dates 382
12.3 Date Adjusters 385
12.4 Local Time 386
12.5 Zoned Time 387
12.6 Formatting and Parsing 390
12.7 Interoperating with Legacy Code 393
Exercises 394
Chapter 13: Internationalization 397
13.1 Locales 398
13.2 Number Formats 403
13.3 Currencies 403
13.4 Date and Time Formatting 404
13.5 Collation and Normalization 406
13.6 Message Formatting 408
13.7 Resource Bundles 410
13.8 Character Encodings 413
13.9 Preferences 413
Exercises 415
Chapter 14: Compiling and Scripting 419
14.1 The Compiler API 420
14.2 The Scripting API 424
14.3 The Nashorn Scripting Engine 428
14.4 Shell Scripting with Nashorn 437
Exercises 440
Index 443