Categories
Bibliography Java Kotlin Software Engineering

Modern Java Recipes: Simple Solutions to Difficult Problems in Java 8 and 9, 1st Edition – B074R6B13N ISBN-13: 978-1491973172

See: Modern Java Recipes: Simple Solutions to Difficult Problems in Java 8 and 9, 1st Edition, Publisher ‏ : ‎ O’Reilly Media; 1st edition (August 11, 2017)

Fair Use Source:

The introduction of functional programming concepts in Java SE 8 was a drastic change for this venerable object-oriented language. Lambda expressions, method references, and streams fundamentally changed the idioms of the language, and many developers have been trying to catch up ever since. This cookbook will help. With more than 70 detailed recipes, author Ken Kousen shows you how to use the newest features of Java to solve a wide range of problems.

For developers comfortable with previous Java versions, this guide covers nearly all of Java SE 8, and includes a chapter focused on changes coming in Java 9. Need to understand how functional idioms will change the way you write code? This cookbook—chock full of use cases—is for you.

Recipes cover:

  • The basics of lambda expressions and method references
  • Interfaces in the java.util.function package
  • Stream operations for transforming and filtering data
  • Comparators and Collectors for sorting and converting streaming data
  • Combining lambdas, method references, and streams
  • Creating instances and extract values from Java’s Optional type
  • New I/O capabilities that support functional streams
  • The Date-Time API that replaces the legacy Date and Calendar classes
  • Mechanisms for experimenting with concurrency and parallelism

About the Author

Ken Kousen is an independent consultant and trainer specializing in Spring, Hibernate, Groovy, and Grails. He holds numerous technical certifications, along with degrees in Mathematics, Mechanical and Aerospace Engineering, and Computer Science.



Resources

Errata Page: http://oreilly.com/catalog/0636920056669/errata

Categories
Bibliography DevOps DevSecOps-Security-Privacy Java Kubernetes Software Engineering Spring Framework

DevOps Tools for Java Developers: Best Practices from Source Code to Production Containers, 1st Edition – ISBN-13: 978-1492084020, 2022

See: DevOps Tools for Java Developers: Best Practices from Source Code to Production Containers, 1st Edition, Publisher ‏ : ‎ O’Reilly Media; 1st edition (January 18, 2022)

Fair Use Source:

With the rise of DevOps, low-cost cloud computing, and container technologies, the way Java developers approach development today has changed dramatically. This practical guide helps you take advantage of microservices, serverless, and cloud native technologies using the latest DevOps techniques to simplify your build process and create hyperproductive teams.

Stephen Chin, Melissa McKay, Ixchel Ruiz, and Baruch Sadogursky help you evaluate an array of options. The list includes source control with Git, build declaration with Maven and Gradle, CI/CD with CircleCI, package management with Artifactory, containerization with Docker and Kubernetes, and much more. Whether you’re building applications with Jakarta EE, Spring Boot, Dropwizard, MicroProfile, Micronaut, or Quarkus, this comprehensive guide has you covered.

  • Explore software lifecycle best practices
  • Use DevSecOps methodologies to facilitate software development and delivery
  • Understand the business value of DevSecOps best practices
  • Manage and secure software dependencies
  • Develop and deploy applications using containers and cloud native technologies
  • Manage and administrate source control repositories and development processes
  • Use automation to set up and administer build pipelines
  • Identify common deployment patterns and antipatterns
  • Maintain and monitor software after deployment

About the Author

Stephen Chin is Head of Developer Relations at JFrog and author of The Definitive Guide to Modern Client Development, Raspberry Pi with Java, and Pro JavaFX Platform. He has keynoted numerous Java conferences around the world including Devoxx, JNation, JavaOne, Joker, and Open Source India. Stephen is an avid motorcyclist who has done evangelism tours in Europe, Japan, and Brazil, interviewing hackers in their natural habitat. When he is not traveling, he enjoys teaching kids how to do embedded and robot programming together with his teenage daughter. You can follow his hacking adventures at: http://steveonjava.com/.

Melissa McKay is currently a Developer Advocate with the JFrog Developer Relations team. She has been active in the software industry 20 years and her background and experience spans a slew of technologies and tools used in the development and operation of enterprise products and services. Melissa is a mom, software developer, Java geek, huge promoter of Java UNconferences, and is always on the lookout for ways to grow, learn, and improve development processes. She is active in the developer community, has spoken at CodeOne, Java Dev Day Mexico and assists with organizing the JCrete and JAlba Unconferences as well as Devoxx4Kids events.

Ixchel Ruiz has developed software applications and tools since 2000. Her research interests include Java, dynamic languages, client-side technologies, and testing. She is a Java Champion, Groundbreaker Ambassador, Hackergarten enthusiast, open source advocate, JUG leader, public speaker, and mentor.

Baruch Sadogursky (a.k.a JBaruch) is the Chief Sticker Officer @JFrog (also, Head of DevOps Advocacy) at JFrog. His passion is speaking about technology. Well, speaking in general, but doing it about technology makes him look smart, and 19 years of hi-tech experience sure helps. When he’s not on stage (or on a plane to get there), he learns about technology, people and how they work, or more precisely, don’t work together.

He is a co-author of the Liquid Software book, a CNCF ambassador and a passionate conference speaker on DevOps, DevSecOps, digital transformation, containers and cloud-native, artifact management and other topics, and is a regular at the industry’s most prestigious events including DockerCon, Devoxx, DevOps Days, OSCON, Qcon, JavaOne and many others. You can see some of his talks at jfrog.com/shownotes

Categories
Bibliography DevOps Java Software Engineering

B07KFQ99CT ISBN-13: 978-1491986028

See: Continuous Delivery in Java: Essential Tools and Best Practices for Deploying Code to Production, 1st Edition, Publisher ‏ : ‎ O’Reilly Media; 1st edition (November 29, 2018)

Fair Use Source:

Categories
Bibliography Java

B00J8W0OTI

See: Functional Programming in Java: Harnessing the Power Of Java 8 Lambda Expressions 1st Edition

Fair Use Source:

Categories
Bibliography Java

B075FZK9DC

See: Java 9 Modularity: Patterns and Practices for Developing Maintainable Applications 1st Edition

Fair Use Source:

Categories
Bibliography Java Software Engineering

Java Cookbook – Problems and Solutions for Java Developers

See also Java Programming Language, Java Glossary, Java Bibliography, Java Reference materials

Java Cookbook – Problems and Solutions for Java Developers, 4th Edition, by Ian F. Darwin, 2020, B08651PDL6 (JvCkbk)

Fair Use Source: B08651PDL6 (JvCkbk)

About This Book:

Java continues to grow and evolve, and this cookbook continues to evolve in tandem. With this guide, you’ll get up to speed right away with hundreds of hands-on recipes across a broad range of Java topics. You’ll learn useful techniques for everything from string handling and functional programming to network communication.

Each recipe includes self-contained code solutions that you can freely use, along with a discussion of how and why they work. If you’re familiar with Java basics, this cookbook will bolster your knowledge of the language and its many recent changes, including how to apply them in your day-to-day development. This updated edition covers changes through Java 12 and parts of 13 and 14.

Recipes include:

  • Methods for compiling, running, and debugging
  • Packaging Java classes and building applications
  • Manipulating, comparing, and rearranging text
  • Regular expressions for string and pattern matching
  • Handling numbers, dates, and times
  • Structuring data with collections, arrays, and other types
  • Object-oriented and functional programming techniques
  • Input/output, directory, and filesystem operations
  • Network programming on both client and server
  • Processing JSON for data interchange
  • Multithreading and concurrency
  • Using Java in big data applications
  • Interfacing Java with other languages

About the Author:

Book Details:

  • ASIN : B08651PDL6
  • Publisher : O’Reilly Media; 4th edition (March 17, 2020)
  • Publication date : March 17, 2020
  • Print length : 949 pages

Publisher Resources

Table of Contents:

Table of Contents

  1. Preface
    1. Who This Book Is For
    2. What’s in This Book?
    3. Java Books
    4. Conventions Used in This Book
    5. O’Reilly Online Learning
    6. Comments and Questions
    7. Acknowledgments
  2. 1. Getting Started: Compiling and Running Java
    1. 1.0. Introduction
    2. 1.1. Compiling and Running Java: Standard JDK
    3. 1.2. Compiling and Running Java: GraalVM for Better Performance
    4. 1.3. Compiling, Running, and Testing with an IDE
    5. 1.4. Exploring Java with JShell
    6. 1.5. Using CLASSPATH Effectively
    7. 1.6. Downloading and Using the Code Examples
    8. 1.7. Automating Dependencies, Compilation, Testing, and Deployment with Apache Maven
    9. 1.8. Automating Dependencies, Compilation, Testing, and Deployment with Gradle
    10. 1.9. Dealing with Deprecation Warnings
    11. 1.10. Maintaining Code Correctness with Unit Testing: JUnit
    12. 1.11. Maintaining Your Code with Continuous Integration
    13. 1.12. Getting Readable Stack Traces
    14. 1.13. Finding More Java Source Code
    15. 1.14. Finding Runnable Java Libraries
  3. 2. Interacting with the Environment
    1. 2.0. Introduction
    2. 2.1. Getting Environment Variables
    3. 2.2. Getting Information from System Properties
    4. 2.3. Dealing with Code That Depends on the Java Version or the Operating System
    5. 2.4. Using Extensions or Other Packaged APIs
    6. 2.5. Using the Java Modules System
  4. 3. Strings and Things
    1. 3.0. Introduction
    2. 3.1. Taking Strings Apart with Substrings or Tokenizing
    3. 3.2. Putting Strings Together with StringBuilder
    4. 3.3. Processing a String One Character at a Time
    5. 3.4. Aligning, Indenting, and Unindenting Strings
    6. 3.5. Converting Between Unicode Characters and Strings
    7. 3.6. Reversing a String by Word or by Character
    8. 3.7. Expanding and Compressing Tabs
    9. 3.8. Controlling Case
    10. 3.9. Entering Nonprintable Characters
    11. 3.10. Trimming Blanks from the End of a String
    12. 3.11. Creating a Message with I18N Resources
    13. 3.12. Using a Particular Locale
    14. 3.13. Creating a Resource Bundle
    15. 3.14. Program: A Simple Text Formatter
    16. 3.15. Program: Soundex Name Comparisons
  5. 4. Pattern Matching with Regular Expressions
    1. 4.0. Introduction
    2. 4.1. Regular Expression Syntax
    3. 4.2. Using Regexes in Java: Test for a Pattern
    4. 4.3. Finding the Matching Text
    5. 4.4. Replacing the Matched Text
    6. 4.5. Printing All Occurrences of a Pattern
    7. 4.6. Printing Lines Containing a Pattern
    8. 4.7. Controlling Case in Regular Expressions
    9. 4.8. Matching Accented, or Composite, Characters
    10. 4.9. Matching Newlines in Text
    11. 4.10. Program: Apache Logfile Parsing
    12. 4.11. Program: Full Grep
  6. 5. Numbers
    1. 5.0. Introduction
    2. 5.1. Checking Whether a String Is a Valid Number
    3. 5.2. Converting Numbers to Objects and Vice Versa
    4. 5.3. Taking a Fraction of an Integer Without Using Floating Point
    5. 5.4. Working with Floating-Point Numbers
    6. 5.5. Formatting Numbers
    7. 5.6. Converting Among Binary, Octal, Decimal, and Hexadecimal
    8. 5.7. Operating on a Series of Integers
    9. 5.8. Formatting with Correct Plurals
    10. 5.9. Generating Random Numbers
    11. 5.10. Multiplying Matrices
    12. 5.11. Using Complex Numbers
    13. 5.12. Handling Very Large Numbers
    14. 5.13. Program: TempConverter
    15. 5.14. Program: Number Palindromes
  7. 6. Dates and Times
    1. 6.0. Introduction
    2. 6.1. Finding Today’s Date
    3. 6.2. Formatting Dates and Times
    4. 6.3. Converting Among Dates/Times, YMDHMS, and Epoch Seconds
    5. 6.4. Parsing Strings into Dates
    6. 6.5. Difference Between Two Dates
    7. 6.6. Adding to or Subtracting from a Date
    8. 6.7. Handling Recurring Events
    9. 6.8. Computing Dates Involving Time Zones
    10. 6.9. Interfacing with Legacy Date and Calendar Classes
  8. 7. Structuring Data with Java
    1. 7.0. Introduction
    2. 7.1. Using Arrays for Data Structuring
    3. 7.2. Resizing an Array
    4. 7.3. The Collections Framework
    5. 7.4. Like an Array, but More Dynamic
    6. 7.5. Using Generic Types in Your Own Class
    7. 7.6. How Shall I Iterate Thee? Let Me Enumerate the Ways
    8. 7.7. Eschewing Duplicates with a Set
    9. 7.8. Structuring Data in a Linked List
    10. 7.9. Mapping with Hashtable and HashMap
    11. 7.10. Storing Strings in Properties and Preferences
    12. 7.11. Sorting a Collection
    13. 7.12. Avoiding the Urge to Sort
    14. 7.13. Finding an Object in a Collection
    15. 7.14. Converting a Collection to an Array
    16. 7.15. Making Your Data Iterable
    17. 7.16. Using a Stack of Objects
    18. 7.17. Multidimensional Structures
    19. 7.18. Simplifying Data Objects with Lombok or Record
    20. 7.19. Program: Timing Comparisons
  9. 8. Object-Oriented Techniques
    1. 8.0. Introduction
    2. 8.1. Object Methods: Formatting Objects with toString(), Comparing with Equals
    3. 8.2. Using Inner Classes
    4. 8.3. Providing Callbacks via Interfaces
    5. 8.4. Polymorphism/Abstract Methods
    6. 8.5. Using Typesafe Enumerations
    7. 8.6. Avoiding NPEs with Optional
    8. 8.7. Enforcing the Singleton Pattern
    9. 8.8. Roll Your Own Exceptions
    10. 8.9. Using Dependency Injection
    11. 8.10. Program: Plotter
  10. 9. Functional Programming Techniques: Functional Interfaces, Streams, and Parallel Collections
    1. 9.0. Introduction
    2. 9.1. Using Lambdas/Closures Instead of Inner Classes
    3. 9.2. Using Lambda Predefined Interfaces Instead of Your Own
    4. 9.3. Simplifying Processing with Streams
    5. 9.4. Simplifying Streams with Collectors
    6. 9.5. Improving Throughput with Parallel Streams and Collections
    7. 9.6. Using Existing Code as Functional with Method References
    8. 9.7. Java Mixins: Mixing in Methods
  11. 10. Input and Output: Reading, Writing, and Directory Tricks
    1. 10.0. Introduction
    2. 10.1. About InputStreams/OutputStreams and Readers/Writers
    3. 10.2. Reading a Text File
    4. 10.3. Reading from the Standard Input or from the Console/Controlling Terminal
    5. 10.4. Printing with Formatter and printf
    6. 10.5. Scanning Input with StreamTokenizer
    7. 10.6. Scanning Input with the Scanner Class
    8. 10.7. Scanning Input with Grammatical Structure
    9. 10.8. Copying a File
    10. 10.9. Reassigning the Standard Streams
    11. 10.10. Duplicating a Stream as It Is Written; Reassigning Standard Streams
    12. 10.11. Reading/Writing a Different Character Set
    13. 10.12. Those Pesky End-of-Line Characters
    14. 10.13. Beware Platform-Dependent File Code
    15. 10.14. Reading/Writing Binary Data
    16. 10.15. Reading and Writing JAR or ZIP Archives
    17. 10.16. Finding Files in a Filesystem-Neutral Way with getResource() and getResourceAsStream()
    18. 10.17. Getting File Information: Files and Path
    19. 10.18. Creating a New File or Directory
    20. 10.19. Changing a File’s Name or Other Attributes
    21. 10.20. Deleting a File
    22. 10.21. Creating a Transient/Temporary File
    23. 10.22. Listing a Directory
    24. 10.23. Getting the Directory Roots
    25. 10.24. Using the FileWatcher Service to Get Notified About File Changes
    26. 10.25. Program: Save User Data to Disk
    27. 10.26. Program: Find—Walking a File Tree
  12. 11. Data Science and R
    1. 11.1. Machine Learning with Java
    2. 11.2. Using Data In Apache Spark
    3. 11.3. Using R Interactively
    4. 11.4. Comparing/Choosing an R Implementation
    5. 11.5. Using R from Within a Java App: Renjin
    6. 11.6. Using Java from Within an R Session
    7. 11.7. Using FastR, the GraalVM Implementation of R
    8. 11.8. Using R in a Web App
  13. 12. Network Clients
    1. 12.0. Introduction
    2. 12.1. HTTP/REST Web Client
    3. 12.2. Contacting a Socket Server
    4. 12.3. Finding and Reporting Network Addresses
    5. 12.4. Handling Network Errors
    6. 12.5. Reading and Writing Textual Data
    7. 12.6. Reading and Writing Binary or Serialized Data
    8. 12.7. UDP Datagrams
    9. 12.8. URI, URL, or URN?
    10. 12.9. Program: TFTP UDP Client
    11. 12.10. Program: Sockets-Based Chat Client
    12. 12.11. Program: Simple HTTP Link Checker
  14. 13. Server-Side Java
    1. 13.0. Introduction
    2. 13.1. Opening a Server Socket for Business
    3. 13.2. Finding Network Interfaces
    4. 13.3. Returning a Response (String or Binary)
    5. 13.4. Returning Object Information Across a Network Connection
    6. 13.5. Handling Multiple Clients
    7. 13.6. Serving the HTTP Protocol
    8. 13.7. Securing a Web Server with SSL and JSSE
    9. 13.8. Creating a REST Service with JAX-RS
    10. 13.9. Network Logging
    11. 13.10. Setting Up SLF4J
    12. 13.11. Network Logging with Log4j
    13. 13.12. Network Logging with java.util.logging
  15. 14. Processing JSON Data
    1. 14.0. Introduction
    2. 14.1. Generating JSON Directly
    3. 14.2. Parsing and Writing JSON with Jackson
    4. 14.3. Parsing and Writing JSON with org.json
    5. 14.4. Parsing and Writing JSON with JSON-B
    6. 14.5. Finding JSON Elements with JSON Pointer
  16. 15. Packages and Packaging
    1. 15.0. Introduction
    2. 15.1. Creating a Package
    3. 15.2. Documenting Classes with Javadoc
    4. 15.3. Beyond Javadoc: Annotations/Metadata
    5. 15.4. Preparing a Class as a JavaBean
    6. 15.5. Archiving with JAR
    7. 15.6. Running a Program from a JAR
    8. 15.7. Packaging Web Tier Components into a WAR File
    9. 15.8. Creating a Smaller Distribution with jlink
    10. 15.9. Using JPMS to Create a Module
  17. 16. Threaded Java
    1. 16.0. Introduction
    2. 16.1. Running Code in a Different Thread
    3. 16.2. Displaying a Moving Image with Animation
    4. 16.3. Stopping a Thread
    5. 16.4. Rendezvous and Timeouts
    6. 16.5. Synchronizing Threads with the synchronized Keyword
    7. 16.6. Simplifying Synchronization with Locks
    8. 16.7. Simplifying Producer/Consumer with the Queue Interface
    9. 16.8. Optimizing Parallel Processing with Fork/Join
    10. 16.9. Scheduling Tasks: Future Times, Background Saving in an Editor
  18. 17. Reflection, or “A Class Named Class”
    1. 17.0. Introduction
    2. 17.1. Getting a Class Descriptor
    3. 17.2. Finding and Using Methods and Fields
    4. 17.3. Accessing Private Methods and Fields via Reflection
    5. 17.4. Loading and Instantiating a Class Dynamically
    6. 17.5. Constructing a Class from Scratch with a ClassLoader
    7. 17.6. Constructing a Class from Scratch with JavaCompiler
    8. 17.7. Performance Timing
    9. 17.8. Printing Class Information
    10. 17.9. Listing Classes in a Package
    11. 17.10. Using and Defining Annotations
    12. 17.11. Finding Plug-In-Like Classes via Annotations
    13. 17.12. Program: CrossRef
  19. 18. Using Java with Other Languages
    1. 18.0. Introduction
    2. 18.1. Running an External Program from Java
    3. 18.2. Running a Program and Capturing Its Output
    4. 18.3. Calling Other Languages via javax.script
    5. 18.4. Mixing Languages with GraalVM
    6. 18.5. Marrying Java and Perl
    7. 18.6. Calling Other Languages via Native Code
    8. 18.7. Calling Java from Native Code
  20. Afterword
  21. Java Then and Now
    1. Introduction: Always in Motion the Java Is
    2. What Was New in Java 8
    3. What Was New in Java 9
    4. What Was New in Java 10 (March 2018)
    5. What Was New in Java 11 (September 2018)
    6. What Was New in Java 12 (March 2019)
    7. What Is New in Java 13 (September 2019)
    8. Looking Ahead
  22. Index

Sources:

Fair Use Sources:

Categories
Bibliography Java Software Engineering

The Well-Grounded Java Developer

See also Java Programming Language, Java Glossary, Java Bibliography, Java Reference materials

See: The Well-Grounded Java Developer, Second Edition, by Benjamin Evans, Jason Clark, and Martijn Verburg, 2021, 1617298875 (WelGrJvDv)

Fair Use Source: 1617298875 (WelGrJvDv)

Previous version from 2012, New version available Summer 2021

About This Book:

Understanding Java from the JVM up gives you a solid foundation to grow your expertise and take on advanced techniques for performance, concurrency, containerization, and more.

In The Well-Grounded Java Developer, Second Edition you will learn:

  • The new Java module system and why you should use it
  • Bytecode for the JVM, including operations and classloading
  • Performance tuning the JVM
  • Working with Java’s built-in concurrency and expanded options
  • Programming in Kotlin and Clojure on the JVM
  • Maximizing the benefits from your build/CI tooling with Maven and Gradle
  • Running the JVM in containers
  • Planning for future JVM releases

The Well-Grounded Java Developer, Second Edition introduces both the modern innovations and timeless fundamentals you need to know to become a Java master. Authors Ben Evans, Martijn Verburg, and Jason Clark distil their decades of experience as Java Champions, veteran developers, and key contributors to the Java ecosystem into this clear and practical guide.

about the technology

Java’s history of innovation, its huge collection of libraries and frameworks, and the flexibility of the JVM have cemented its place as one of the world’s most popular programming languages. Although it’s easy to get started with Java, understanding how the language intersects with the JVM is the key to unlocking the power of this awesome language and its deep ecosystem of frameworks, tools, and alternative JVM-based languages.

about the book

The Well-Grounded Java Developer, Second Edition is a complete revision of the classic original with the latest innovations of the Java platform. It upgrades your existing Java skills with both JVM fundamentals like bytecode, and powerful new features such as modules and concurrency models.

You’ll broaden your understanding of what’s possible by exploring Kotlin and other JVM languages, and learn how functional programming can offer a powerful new perspective. Each concept is illustrated with hands-on examples, including a fully modularized application/library, build setups for Maven and Gradle, and creating your own multithreaded application.

about the reader

For intermediate Java developers. No experience with the latest Java version or JVM languages required.

About the Authors:

Martijn Verburg is the principal SWE group manager for the Java Engineering Group at Microsoft. He is the co-leader of the London Java User Group (LJC) where he co-founded AdoptOpenJDK, the world’s leading (non-Oracle) OpenJDK distribution. He has been made a Java Champion in recognition for his contribution to the Java ecosystem.

Jason Clark is a principal engineer and architect at New Relic, and was previously an architect at WebMD. A regular conference speaker, Jason contributes to the open-source project Shoes, aiming to make GUI programming easy and fun for beginners.

Book Details:

  • Publisher : Manning Publications; 1st edition (July 21, 2012), 2nd edition (August 2021)
  • Paperback : 496 pages
  • ISBN-10 : 1st edition 1617290068, 2nd edition 1617298875
  • ISBN-13 : 1st edition 978-1617290060, 2nd edition 978-1617298875

Table of Contents:

Sources:

Fair Use Sources:

Categories
Bibliography Java Software Engineering

Modern Java in Action

See also Java Programming Language, Java Glossary, Java Bibliography, Java Reference materials

See: Modern Java in Action – Lambdas, streams, functional and reactive programming, 2nd Edition, by Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft, 2018, 1617293563 (ModJavAc)

Fair Use Source: 1617293563 (ModJavAc)

About This Book:

Manning’s bestselling Java 8 book has been revised for Java 9 and 10! In Modern Java in Action, you’ll build on your existing Java language skills with the newest features and techniques.

about the technology

Modern applications take advantage of innovative designs, including microservices, reactive architectures, and streaming data. Modern Java features like lambdas, streams, and the long-awaited Java Module System make implementing these designs significantly easier. It’s time to upgrade your skills and meet these challenges head on!

about the book

Modern Java in Action connects new features of the Java language with their practical applications. Using crystal-clear examples and careful attention to detail, this book respects your time. It will help you expand your existing knowledge of core Java as you master modern additions like the Streams API and the Java Module System, explore new approaches to concurrency, and learn how functional concepts can help you write code that’s easier to read and maintain.

what’s inside

  • Thoroughly revised edition of Manning’s bestselling Java 8 in Action
  • New features in Java 8, Java 9, and beyond
  • Streaming data and reactive programming
  • The Java Module System

about the reader

Written for developers familiar with core Java features.

Reviews

“My Java code improved significantly after reading this book. I was able to take the clear examples and immediately put them intopractice.”–Holly Cummins, IBM

“A comprehensive and practical introduction to the modern features of the latest Java releases with excellent examples!”–Oleksandr Mandryk, EPAM Systems

“Hands-on Java 8 and 9, simply and elegantly explained.”–Deepak Bhaskaran, Salesforce

“A lot of great examples and use cases for streams, concurrency, andreactive programming.”–Rob Pacheco, Synopsys

About the Authors:

Raoul-Gabriel Urma is CEO and co-founder of Cambridge Spark, a leading learning community for data scientists and developers in UK. In addition, he is also Chairman and co-founder of Cambridge Coding Academy, a growing community of young coders and pre-university students. Raoul is author of the bestselling programming book “Java 8 in Action” which sold over 20,000 copies globally. Raoul completed a PhD in Computer Science at the University of Cambridge. In addition, he holds a MEng in Computer Science from Imperial College London and graduated with first class honours having won several prizes for technical innovation. Raoul has delivered over 100 technical talks at international conferences. He has worked for Google, eBay, Oracle, and Goldman Sachs. He is also a Fellow of the Royal Society of Arts.

Mario Fusco is a senior software engineer at Red Hat working on Drools, the JBoss rule engine. He created the open source library lambdaj, an internal Java DSL for manipulating collections in a functional way.

Alan Mycroft is Professor of Computer Science at the University of Cambridge, where he researches programming languages, their semantics, optimization and implementation. He is a co-founder and Trustee of the Raspberry Pi Foundation.

Book Details:

  • Publisher : Manning Publications; 2nd edition (November 15, 2018)
  • Language : English
  • Paperback : 592 pages
  • ISBN-10 : 1617293563
  • ISBN-13 : 978-1617293566

Table of Contents:

Copyright
Brief Table of Contents
Table of Contents
Praise for the previous edition, Java 8 in Action, by Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft.
Preface
Acknowledgments
About this book
About the authors
About the cover illustration
Part 1. Fundamentals

Chapter 1. Java 8, 9, 10, and 11: what’s happening?
Chapter 2. Passing code with behavior parameterization
Chapter 3. Lambda expressions

Part 2. Functional-style data processing with streams

Chapter 4. Introducing streams
Chapter 5. Working with streams
Chapter 6. Collecting data with streams
Chapter 7. Parallel data processing and performance

Part 3. Effective programming with streams and lambdas

Chapter 8. Collection API enhancements
Chapter 9. Refactoring, testing, and debugging
Chapter 10. Domain-specific languages using lambdas

Part 4. Everyday Java

Chapter 11. Using Optional as a better alternative to null
Chapter 12. New Date and Time API
Chapter 13. Default methods
Chapter 14. The Java Module System

Part 5. Enhanced Java concurrency

Chapter 15. Concepts behind CompletableFuture and reactive programming
Chapter 16. CompletableFuture: composable asynchronous programming
Chapter 17. Reactive programming

Part 6. Functional programming and future Java evolution

Chapter 18. Thinking functionally
Chapter 19. Functional programming techniques
Chapter 20. Blending OOP and FP: Comparing Java and Scala
Chapter 21. Conclusions and where next for Java

Appendix A. Miscellaneous language updates
Appendix B. Miscellaneous library updates
Appendix C. Performing multiple operations in parallel on a stream
Appendix D. Lambdas and JVM bytecode
Index
List of Figures
List of Tables
List of Listings

Sources:

Fair Use Sources:

Categories
Bibliography Java Software Engineering

Java – The Complete Reference, by Herbert Schildt

See also: Java – A Beginner’s Guide, Java Programming Language, Java Glossary, Java Bibliography, Java Reference materials

Java: The Complete Reference, 11th Edition, by Herbert Schildt, 2018, B07KSQ9RKF (JvCmRf)

Fair Use Source: B07KSQ9RKF (JvCmRf)

About This Book:

The Definitive Java Programming Guide – Fully updated for Java SE 11, Java: The Complete Reference, Eleventh Edition explains how to develop, compile, debug, and run Java programs. Best-selling programming author Herb Schildt covers the entire Java language, including its syntax, keywords, and fundamental programming principles. You’ll also find information on key portions of the Java API library, such as I/O, the Collections Framework, the stream library, and the concurrency utilities. Swing, JavaBeans, and servlets are examined and numerous examples demonstrate Java in action. Of course, the very important module system is discussed in detail. This Oracle Press resource also offers an introduction to JShell, Java’s interactive programming tool. Best of all, the book is written in the clear, crisp, uncompromising style that has made Schildt the choice of millions worldwide.
Coverage includes:

  • Data types, variables, arrays, and operators
  • Control statements
  • Classes, objects, and methods
  • Method overloading and overriding
  • Inheritance
  • Local variable type inference
  • Interfaces and packages
  • Exception handling
  • Multithreaded programming
  • Enumerations, autoboxing, and annotations
  • The I/O classes
  • Generics
  • Lambda expressions
  • Modules
  • String handling
  • The Collections Framework
  • Networking
  • Event handling
  • AWT
  • Swing
  • The Concurrent API
  • The Stream API
  • Regular expressions
  • JavaBeans
  • Servlets
  • Much, much more

Code examples in the book are available for download at www.OraclePressBooks.com.

About the Author:

Herbert Schildt is one of the world’s leading programming authors and has written extensively on Java, C, C++, and C#. His books have sold millions of copies worldwide. Herb’s acclaimed books include Java: The Complete Reference, Java: A Beginner’s Guide, C: The Complete Reference, C++: The Complete Reference and C#: The Complete Reference.  

Book Details:

  • ASIN : B07KSQ9RKF
  • Publisher : McGraw-Hill Education; 11th edition (December 14, 2018)
  • Publication date : December 14, 2018
  • Print length : 1248 pages
  • Page numbers source ISBN : 9390491622

Table of Contents:

Table of Contents

Part I The Java Language

  1. Chapter 1 The History and Evolution of Java
    1. Java’s Lineage
      1. The Birth of Modern Programming: C
      2. C++: The Next Step
      3. The Stage Is Set for Java
    2. The Creation of Java
      1. The C# Connection
    3. How Java Impacted the Internet
      1. Java Applets
      2. Security
      3. Portability
    4. Java’s Magic: The Bytecode
    5. Moving Beyond Applets
    6. A Faster Release Schedule
    7. Servlets: Java on the Server Side
    8. The Java Buzzwords
      1. Simple
      2. Object-Oriented
      3. Robust
      4. Multithreaded
      5. Architecture-Neutral
      6. Interpreted and High Performance
      7. Distributed
      8. Dynamic
    9. The Evolution of Java
    10. A Culture of Innovation
  2. Chapter 2 An Overview of Java
    1. Object-Oriented Programming
      1. Two Paradigms
      2. Abstraction
      3. The Three OOP Principles
    2. A First Simple Program
      1. Entering the Program
      2. Compiling the Program
      3. A Closer Look at the First Sample Program
    3. A Second Short Program
    4. Two Control Statements
      1. The if Statement
      2. The for Loop
    5. Using Blocks of Code
    6. Lexical Issues
      1. Whitespace
      2. Identifiers
      3. Literals
      4. Comments
      5. Separators
      6. The Java Keywords
    7. The Java Class Libraries
  3. Chapter 3 Data Types, Variables, and Arrays
    1. Java Is a Strongly Typed Language
    2. The Primitive Types
    3. Integers
      1. byte
      2. short
      3. int
      4. long
    4. Floating-Point Types
      1. float
      2. double
    5. Characters
    6. Booleans
    7. A Closer Look at Literals
      1. Integer Literals
      2. Floating-Point Literals
      3. Boolean Literals
      4. Character Literals
      5. String Literals
    8. Variables
      1. Declaring a Variable
      2. Dynamic Initialization
      3. The Scope and Lifetime of Variables
    9. Type Conversion and Casting
      1. Java’s Automatic Conversions
      2. Casting Incompatible Types
    10. Automatic Type Promotion in Expressions
      1. The Type Promotion Rules
    11. Arrays
      1. One-Dimensional Arrays
      2. Multidimensional Arrays
      3. Alternative Array Declaration Syntax
    12. Introducing Type Inference with Local Variables
      1. Some var Restrictions
    13. A Few Words About Strings
  4. Chapter 4 Operators
    1. Arithmetic Operators
      1. The Basic Arithmetic Operators
      2. The Modulus Operator
      3. Arithmetic Compound Assignment Operators
      4. Increment and Decrement
    2. The Bitwise Operators
      1. The Bitwise Logical Operators
      2. The Left Shift
      3. The Right Shift
      4. The Unsigned Right Shift
      5. Bitwise Operator Compound Assignments
    3. Relational Operators
    4. Boolean Logical Operators
      1. Short-Circuit Logical Operators
    5. The Assignment Operator
    6. The ? Operator
    7. Operator Precedence
    8. Using Parentheses
  5. Chapter 5 Control Statements
    1. Java’s Selection Statements
      1. if
      2. switch
    2. Iteration Statements
      1. while
      2. do-while
      3. for
      4. The For-Each Version of the for Loop
      5. Local Variable Type Inference in a for Loop
      6. Nested Loops
    3. Jump Statements
      1. Using break
      2. Using continue
  6. Chapter 6 Introducing Classes
    1. Class Fundamentals
      1. The General Form of a Class
      2. A Simple Class
    2. Declaring Objects
      1. A Closer Look at new
    3. Assigning Object Reference Variables
    4. Introducing Methods
      1. Adding a Method to the Box Class
      2. Returning a Value
      3. Adding a Method That Takes Parameters
    5. Constructors
      1. Parameterized Constructors
    6. The this Keyword
      1. Instance Variable Hiding
    7. Garbage Collection
    8. A Stack Class
  7. Chapter 7 A Closer Look at Methods and Classes
    1. Overloading Methods
      1. Overloading Constructors
    2. Using Objects as Parameters
    3. A Closer Look at Argument Passing
    4. Returning Objects
    5. Recursion
    6. Introducing Access Control
    7. Understanding static
    8. Introducing final
    9. Arrays Revisited
    10. Introducing Nested and Inner Classes
    11. Exploring the String Class
    12. Using Command-Line Arguments
    13. Varargs: Variable-Length Arguments
      1. Overloading Vararg Methods
      2. Varargs and Ambiguity
    14. Local Variable Type Inference with Reference Types
  8. Chapter 8 Inheritance
    1. Inheritance Basics
      1. Member Access and Inheritance
      2. A More Practical Example
      3. A Superclass Variable Can Reference a Subclass Object
    2. Using super
      1. Using super to Call Superclass Constructors
      2. A Second Use for super
    3. Creating a Multilevel Hierarchy
    4. When Constructors Are Executed
    5. Method Overriding
    6. Dynamic Method Dispatch
      1. Why Overridden Methods?
      2. Applying Method Overriding
    7. Using Abstract Classes
    8. Using final with Inheritance
      1. Using final to Prevent Overriding
      2. Using final to Prevent Inheritance
    9. Local Variable Type Inference and Inheritance
    10. The Object Class
  9. Chapter 9 Packages and Interfaces
    1. Packages
      1. Defining a Package
      2. Finding Packages and CLASSPATH
      3. A Short Package Example
    2. Packages and Member Access
      1. An Access Example
    3. Importing Packages
    4. Interfaces
      1. Defining an Interface
      2. Implementing Interfaces
      3. Nested Interfaces
      4. Applying Interfaces
      5. Variables in Interfaces
      6. Interfaces Can Be Extended
    5. Default Interface Methods
      1. Default Method Fundamentals
      2. A More Practical Example
      3. Multiple Inheritance Issues
    6. Use static Methods in an Interface
    7. Private Interface Methods
    8. Final Thoughts on Packages and Interfaces
  10. Chapter 10 Exception Handling
    1. Exception-Handling Fundamentals
    2. Exception Types
    3. Uncaught Exceptions
    4. Using try and catch
      1. Displaying a Description of an Exception
    5. Multiple catch Clauses
    6. Nested try Statements
    7. throw
    8. throws
    9. finally
    10. Java’s Built-in Exceptions
    11. Creating Your Own Exception Subclasses
    12. Chained Exceptions
    13. Three Additional Exception Features
    14. Using Exceptions
  11. Chapter 11 Multithreaded Programming
    1. The Java Thread Model
      1. Thread Priorities
      2. Synchronization
      3. Messaging
      4. The Thread Class and the Runnable Interface
    2. The Main Thread
    3. Creating a Thread
      1. Implementing Runnable
      2. Extending Thread
      3. Choosing an Approach
    4. Creating Multiple Threads
    5. Using isAlive( ) and join( )
    6. Thread Priorities
    7. Synchronization
      1. Using Synchronized Methods
      2. The synchronized Statement
    8. Interthread Communication
      1. Deadlock
    9. Suspending, Resuming, and Stopping Threads
    10. Obtaining a Thread’s State
    11. Using a Factory Method to Create and Start a Thread
    12. Using Multithreading
  12. Chapter 12 Enumerations, Autoboxing, and Annotations
    1. Enumerations
      1. Enumeration Fundamentals
      2. The values( ) and valueOf( ) Methods
      3. Java Enumerations Are Class Types
      4. Enumerations Inherit Enum
      5. Another Enumeration Example
    2. Type Wrappers
      1. Character
      2. Boolean
      3. The Numeric Type Wrappers
    3. Autoboxing
      1. Autoboxing and Methods
      2. Autoboxing/Unboxing Occurs in Expressions
      3. Autoboxing/Unboxing Boolean and Character Values
      4. Autoboxing/Unboxing Helps Prevent Errors
      5. A Word of Warning
    4. Annotations
      1. Annotation Basics
      2. Specifying a Retention Policy
      3. Obtaining Annotations at Run Time by Use of Reflection
      4. The AnnotatedElement Interface
      5. Using Default Values
      6. Marker Annotations
      7. Single-Member Annotations
      8. The Built-In Annotations
    5. Type Annotations
    6. Repeating Annotations
    7. Some Restrictions
  13. Chapter 13 I/O, Try-with-Resources, and Other Topics
    1. I/O Basics
      1. Streams
      2. Byte Streams and Character Streams
      3. The Predefined Streams
    2. Reading Console Input
      1. Reading Characters
      2. Reading Strings
    3. Writing Console Output
    4. The PrintWriter Class
    5. Reading and Writing Files
    6. Automatically Closing a File
    7. The transient and volatile Modifiers
    8. Using instanceof
    9. strictfp
    10. Native Methods
    11. Using assert
      1. Assertion Enabling and Disabling Options
    12. Static Import
    13. Invoking Overloaded Constructors Through this( )
    14. A Word About Compact API Profiles
  14. Chapter 14 Generics
    1. What Are Generics?
    2. A Simple Generics Example
      1. Generics Work Only with Reference Types
      2. Generic Types Differ Based on Their Type Arguments
      3. How Generics Improve Type Safety
    3. A Generic Class with Two Type Parameters
    4. The General Form of a Generic Class
    5. Bounded Types
    6. Using Wildcard Arguments
      1. Bounded Wildcards
    7. Creating a Generic Method
      1. Generic Constructors
    8. Generic Interfaces
    9. Raw Types and Legacy Code
    10. Generic Class Hierarchies
      1. Using a Generic Superclass
      2. A Generic Subclass
      3. Run-Time Type Comparisons Within a Generic Hierarchy
      4. Casting
      5. Overriding Methods in a Generic Class
    11. Type Inference with Generics
    12. Local Variable Type Inference and Generics
    13. Erasure
      1. Bridge Methods
    14. Ambiguity Errors
    15. Some Generic Restrictions
      1. Type Parameters Can’t Be Instantiated
      2. Restrictions on Static Members
      3. Generic Array Restrictions
      4. Generic Exception Restriction
  15. Chapter 15 Lambda Expressions
    1. Introducing Lambda Expressions
      1. Lambda Expression Fundamentals
      2. Functional Interfaces
      3. Some Lambda Expression Examples
    2. Block Lambda Expressions
    3. Generic Functional Interfaces
    4. Passing Lambda Expressions as Arguments
    5. Lambda Expressions and Exceptions
    6. Lambda Expressions and Variable Capture
    7. Method References
      1. Method References to static Methods
      2. Method References to Instance Methods
      3. Method References with Generics
    8. Constructor References
    9. Predefined Functional Interfaces
  16. Chapter 16 Modules
    1. Module Basics
      1. A Simple Module Example
      2. Compile and Run the First Module Example
      3. A Closer Look at requires and exports
    2. java.base and the Platform Modules
    3. Legacy Code and the Unnamed Module
    4. Exporting to a Specific Module
    5. Using requires transitive
    6. Use Services
      1. Service and Service Provider Basics
      2. The Service-Based Keywords
      3. A Module-Based Service Example
    7. Module Graphs
    8. Three Specialized Module Features
      1. Open Modules
      2. The opens Statement
      3. requires static
    9. Introducing jlink and Module JAR Files
      1. Linking Files in an Exploded Directory
      2. Linking Modular JAR Files
      3. JMOD Files
    10. A Brief Word About Layers and Automatic Modules
    11. Final Thoughts on Modules

Part II The Java Library

  1. Chapter 17 String Handling
    1. The String Constructors
    2. String Length
    3. Special String Operations
      1. String Literals
      2. String Concatenation
      3. String Concatenation with Other Data Types
      4. String Conversion and toString( )
    4. Character Extraction
      1. charAt( )
      2. getChars( )
      3. getBytes( )
      4. toCharArray( )
    5. String Comparison
      1. equals( ) and equalsIgnoreCase( )
      2. regionMatches( )
      3. startsWith( ) and endsWith( )
      4. equals( ) Versus ==
      5. compareTo( )
    6. Searching Strings
    7. Modifying a String
      1. substring( )
      2. concat( )
      3. replace( )
      4. trim( ) and strip( )
    8. Data Conversion Using valueOf( )
    9. Changing the Case of Characters Within a String
    10. Joining Strings
    11. Additional String Methods
    12. StringBuffer
      1. StringBuffer Constructors
      2. length( ) and capacity( )
      3. ensureCapacity( )
      4. setLength( )
      5. charAt( ) and setCharAt( )
      6. getChars( )
      7. append( )
      8. insert( )
      9. reverse( )
      10. delete( ) and deleteCharAt( )
      11. replace( )
      12. substring( )
      13. Additional StringBuffer Methods
    13. StringBuilder
  2. Chapter 18 Exploring java.lang
    1. Primitive Type Wrappers
      1. Number
      2. Double and Float
      3. Understanding isInfinite( ) and isNaN( )
      4. Byte, Short, Integer, and Long
      5. Character
      6. Additions to Character for Unicode Code Point Support
      7. Boolean
    2. Void
    3. Process
    4. Runtime
      1. Memory Management
      2. Executing Other Programs
    5. Runtime.Version
    6. ProcessBuilder
    7. System
      1. Using currentTimeMillis( ) to Time Program Execution
      2. Using arraycopy( )
      3. Environment Properties
    8. System.Logger and System.LoggerFinder
    9. Object
    10. Using clone( ) and the Cloneable Interface
    11. Class
    12. ClassLoader
    13. Math
      1. Trigonometric Functions
      2. Exponential Functions
      3. Rounding Functions
      4. Miscellaneous Math Methods
    14. StrictMath
    15. Compiler
    16. Thread, ThreadGroup, and Runnable
      1. The Runnable Interface
      2. Thread
      3. ThreadGroup
    17. ThreadLocal and InheritableThreadLocal
    18. Package
    19. Module
    20. ModuleLayer
    21. RuntimePermission
    22. Throwable
    23. SecurityManager
    24. StackTraceElement
    25. StackWalker and StackWalker.StackFrame
    26. Enum
    27. ClassValue
    28. The CharSequence Interface
    29. The Comparable Interface
    30. The Appendable Interface
    31. The Iterable Interface
    32. The Readable Interface
    33. The AutoCloseable Interface
    34. The Thread.UncaughtExceptionHandler Interface
    35. The java.lang Subpackages
      1. java.lang.annotation
      2. java.lang.instrument
      3. java.lang.invoke
      4. java.lang.management
      5. java.lang.module
      6. java.lang.ref
      7. java.lang.reflect
  3. Chapter 19 java.util Part 1: The Collections Framework
    1. Collections Overview
    2. The Collection Interfaces
      1. The Collection Interface
      2. The List Interface
      3. The Set Interface
      4. The SortedSet Interface
      5. The NavigableSet Interface
      6. The Queue Interface
      7. The Deque Interface
    3. The Collection Classes
      1. The ArrayList Class
      2. The LinkedList Class
      3. The HashSet Class
      4. The LinkedHashSet Class
      5. The TreeSet Class
      6. The PriorityQueue Class
      7. The ArrayDeque Class
      8. The EnumSet Class
    4. Accessing a Collection via an Iterator
      1. Using an Iterator
      2. The For-Each Alternative to Iterators
    5. Spliterators
    6. Storing User-Defined Classes in Collections
    7. The RandomAccess Interface
    8. Working with Maps
      1. The Map Interfaces
      2. The Map Classes
    9. Comparators
      1. Using a Comparator
    10. The Collection Algorithms
    11. Arrays
    12. The Legacy Classes and Interfaces
      1. The Enumeration Interface
      2. Vector
      3. Stack
      4. Dictionary
      5. Hashtable
      6. Properties
      7. Using store( ) and load( )
    13. Parting Thoughts on Collections
  4. Chapter 20 java.util Part 2: More Utility Classes
    1. StringTokenizer
    2. BitSet
    3. Optional, OptionalDouble, OptionalInt, and OptionalLong
    4. Date
    5. Calendar
    6. GregorianCalendar
    7. TimeZone
    8. SimpleTimeZone
    9. Locale
    10. Random
    11. Timer and TimerTask
    12. Currency
    13. Formatter
      1. The Formatter Constructors
      2. The Formatter Methods
      3. Formatting Basics
      4. Formatting Strings and Characters
      5. Formatting Numbers
      6. Formatting Time and Date
      7. The %n and %% Specifiers
      8. Specifying a Minimum Field Width
      9. Specifying Precision
      10. Using the Format Flags
      11. Justifying Output
      12. The Space, +, 0, and ( Flags
      13. The Comma Flag
      14. The # Flag
      15. The Uppercase Option
      16. Using an Argument Index
      17. Closing a Formatter
      18. The Java printf( ) Connection
    14. Scanner
      1. The Scanner Constructors
      2. Scanning Basics
      3. Some Scanner Examples
      4. Setting Delimiters
      5. Other Scanner Features
    15. The ResourceBundle, ListResourceBundle, and PropertyResourceBundle Classes
    16. Miscellaneous Utility Classes and Interfaces
    17. The java.util Subpackages
      1. java.util.concurrent, java.util.concurrent.atomic, and java.util.concurrent.locks
      2. java.util.function
      3. java.util.jar
      4. java.util.logging
      5. java.util.prefs
      6. java.util.regex
      7. java.util.spi
      8. java.util.stream
      9. java.util.zip
  5. Chapter 21 Input/Output: Exploring java.io
    1. The I/O Classes and Interfaces
    2. File
      1. Directories
      2. Using FilenameFilter
      3. The listFiles( ) Alternative
      4. Creating Directories
    3. The AutoCloseable, Closeable, and Flushable Interfaces
    4. I/O Exceptions
    5. Two Ways to Close a Stream
    6. The Stream Classes
    7. The Byte Streams
      1. InputStream
      2. OutputStream
      3. FileInputStream
      4. FileOutputStream
      5. ByteArrayInputStream
      6. ByteArrayOutputStream
      7. Filtered Byte Streams
      8. Buffered Byte Streams
      9. SequenceInputStream
      10. PrintStream
      11. DataOutputStream and DataInputStream
      12. RandomAccessFile
    8. The Character Streams
      1. Reader
      2. Writer
      3. FileReader
      4. FileWriter
      5. CharArrayReader
      6. CharArrayWriter
      7. BufferedReader
      8. BufferedWriter
      9. PushbackReader
      10. PrintWriter
    9. The Console Class
    10. Serialization
      1. Serializable
      2. Externalizable
      3. ObjectOutput
      4. ObjectOutputStream
      5. ObjectInput
      6. ObjectInputStream
      7. A Serialization Example
    11. Stream Benefits
  6. Chapter 22 Exploring NIO
    1. The NIO Classes
    2. NIO Fundamentals
      1. Buffers
      2. Channels
      3. Charsets and Selectors
    3. Enhancements Added by NIO.2
      1. The Path Interface
      2. The Files Class
      3. The Paths Class
      4. The File Attribute Interfaces
      5. The FileSystem, FileSystems, and FileStore Classes
    4. Using the NIO System
      1. Use NIO for Channel-Based I/O
      2. Use NIO for Stream-Based I/O
      3. Use NIO for Path and File System Operations
  7. Chapter 23 Networking
    1. Networking Basics
    2. The java.net Networking Classes and Interfaces
    3. InetAddress
      1. Factory Methods
      2. Instance Methods
    4. Inet4Address and Inet6Address
    5. TCP/IP Client Sockets
    6. URL
    7. URLConnection
    8. HttpURLConnection
    9. The URI Class
    10. Cookies
    11. TCP/IP Server Sockets
    12. Datagrams
      1. DatagramSocket
      2. DatagramPacket
      3. A Datagram Example
    13. Introducing java.net.http
      1. Three Key Elements
      2. A Simple HTTP Client Example
      3. Things to Explore in java.net.http
  8. Chapter 24 Event Handling
    1. Two Event Handling Mechanisms
    2. The Delegation Event Model
      1. Events
      2. Event Sources
      3. Event Listeners
    3. Event Classes
      1. The ActionEvent Class
      2. The AdjustmentEvent Class
      3. The ComponentEvent Class
      4. The ContainerEvent Class
      5. The FocusEvent Class
      6. The InputEvent Class
      7. The ItemEvent Class
    4. The KeyEvent Class
      1. The MouseEvent Class
      2. The MouseWheelEvent Class
      3. The TextEvent Class
      4. The WindowEvent Class
    5. Sources of Events
    6. Event Listener Interfaces
      1. The ActionListener Interface
      2. The AdjustmentListener Interface
      3. The ComponentListener Interface
      4. The ContainerListener Interface
      5. The FocusListener Interface
      6. The ItemListener Interface
      7. The KeyListener Interface
      8. The MouseListener Interface
      9. The MouseMotionListener Interface
      10. The MouseWheelListener Interface
      11. The TextListener Interface
      12. The WindowFocusListener Interface
      13. The WindowListener Interface
    7. Using the Delegation Event Model
      1. Some Key AWT GUI Concepts
      2. Handling Mouse Events
      3. Handling Keyboard Events
    8. Adapter Classes
    9. Inner Classes
      1. Anonymous Inner Classes
  9. Chapter 25 Introducing the AWT: Working with Windows, Graphics, and Text
    1. AWT Classes
    2. Window Fundamentals
      1. Component
      2. Container
      3. Panel
      4. Window
      5. Frame
      6. Canvas
    3. Working with Frame Windows
      1. Setting the Window’s Dimensions
      2. Hiding and Showing a Window
      3. Setting a Window’s Title
      4. Closing a Frame Window
      5. The paint( ) Method
      6. Displaying a String
      7. Setting the Foreground and Background Colors
      8. Requesting Repainting
      9. Creating a Frame-Based Application
    4. Introducing Graphics
      1. Drawing Lines
      2. Drawing Rectangles
      3. Drawing Ellipses and Circles
      4. Drawing Arcs
      5. Drawing Polygons
      6. Demonstrating the Drawing Methods
      7. Sizing Graphics
    5. Working with Color
      1. Color Methods
      2. Setting the Current Graphics Color
      3. A Color Demonstration Program
    6. Setting the Paint Mode
    7. Working with Fonts
      1. Determining the Available Fonts
      2. Creating and Selecting a Font
      3. Obtaining Font Information
    8. Managing Text Output Using FontMetrics
  10. Chapter 26 Using AWT Controls, Layout Managers, and Menus
    1. AWT Control Fundamentals
      1. Adding and Removing Controls
      2. Responding to Controls
      3. The HeadlessException
    2. Labels
    3. Using Buttons
      1. Handling Buttons
    4. Applying Check Boxes
      1. Handling Check Boxes
    5. CheckboxGroup
    6. Choice Controls
      1. Handling Choice Lists
    7. Using Lists
      1. Handling Lists
    8. Managing Scroll Bars
      1. Handling Scroll Bars
    9. Using a TextField
      1. Handling a TextField
    10. Using a TextArea
    11. Understanding Layout Managers
      1. FlowLayout
      2. BorderLayout
      3. Using Insets
      4. GridLayout
      5. CardLayout
      6. GridBagLayout
    12. Menu Bars and Menus
    13. Dialog Boxes
    14. A Word About Overriding paint( )
  11. Chapter 27 Images
    1. File Formats
    2. Image Fundamentals: Creating, Loading, and Displaying
      1. Creating an Image Object
      2. Loading an Image
      3. Displaying an Image
    3. Double Buffering
    4. ImageProducer
      1. MemoryImageSource
    5. ImageConsumer
      1. PixelGrabber
    6. ImageFilter
      1. CropImageFilter
      2. RGBImageFilter
    7. Additional Imaging Classes
  12. Chapter 28 The Concurrency Utilities
    1. The Concurrent API Packages
      1. java.util.concurrent
      2. java.util.concurrent.atomic
      3. java.util.concurrent.locks
    2. Using Synchronization Objects
      1. Semaphore
      2. CountDownLatch
      3. CyclicBarrier
      4. Exchanger
      5. Phaser
    3. Using an Executor
      1. A Simple Executor Example
      2. Using Callable and Future
    4. The TimeUnit Enumeration
    5. The Concurrent Collections
    6. Locks
    7. Atomic Operations
    8. Parallel Programming via the Fork/Join Framework
      1. The Main Fork/Join Classes
      2. The Divide-and-Conquer Strategy
      3. A Simple First Fork/Join Example
      4. Understanding the Impact of the Level of Parallelism
      5. An Example that Uses RecursiveTask<V>
      6. Executing a Task Asynchronously
      7. Cancelling a Task
      8. Determining a Task’s Completion Status
      9. Restarting a Task
      10. Things to Explore
      11. Some Fork/Join Tips
    9. The Concurrency Utilities Versus Java’s Traditional Approach
  13. Chapter 29 The Stream API
    1. Stream Basics
      1. Stream Interfaces
      2. How to Obtain a Stream
      3. A Simple Stream Example
    2. Reduction Operations
    3. Using Parallel Streams
    4. Mapping
    5. Collecting
    6. Iterators and Streams
      1. Use an Iterator with a Stream
      2. Use Spliterator
    7. More to Explore in the Stream API
  14. Chapter 30 Regular Expressions and Other Packages
    1. Regular Expression Processing
      1. Pattern
      2. Matcher
      3. Regular Expression Syntax
      4. Demonstrating Pattern Matching
      5. Two Pattern-Matching Options
      6. Exploring Regular Expressions
    2. Reflection
    3. Remote Method Invocation (RMI)
      1. A Simple Client/Server Application Using RMI
    4. Formatting Date and Time with java.text
      1. DateFormat Class
      2. SimpleDateFormat Class
    5. The java.time Time and Date API
      1. Time and Date Fundamentals
      2. Formatting Date and Time
      3. Parsing Date and Time Strings
      4. Other Things to Explore in java.time

Part III Introducing GUI Programming with Swing

  1. Chapter 31 Introducing Swing
    1. The Origins of Swing
    2. Swing Is Built on the AWT
    3. Two Key Swing Features
      1. Swing Components Are Lightweight
      2. Swing Supports a Pluggable Look and Feel
    4. The MVC Connection
    5. Components and Containers
      1. Components
      2. Containers
      3. The Top-Level Container Panes
    6. The Swing Packages
    7. A Simple Swing Application
    8. Event Handling
    9. Painting in Swing
      1. Painting Fundamentals
      2. Compute the Paintable Area
      3. A Paint Example
  2. Chapter 32 Exploring Swing
    1. JLabel and ImageIcon
    2. JTextField
    3. The Swing Buttons
      1. JButton
      2. JToggleButton
      3. Check Boxes
      4. Radio Buttons
    4. JTabbedPane
    5. JScrollPane
    6. JList
    7. JComboBox
    8. Trees
    9. JTable
  3. Chapter 33 Introducing Swing Menus
    1. Menu Basics
    2. An Overview of JMenuBar, JMenu, and JMenuItem
      1. JMenuBar
      2. JMenu
      3. JMenuItem
    3. Create a Main Menu
    4. Add Mnemonics and Accelerators to Menu Items
    5. Add Images and Tooltips to Menu Items
    6. Use JRadioButtonMenuItem and JCheckBoxMenuItem
    7. Create a Popup Menu
    8. Create a Toolbar
    9. Use Actions
    10. Put the Entire MenuDemo Program Together
    11. Continuing Your Exploration of Swing

Part IV Applying Java

  1. Chapter 34 Java Beans
    1. What Is a Java Bean?
    2. Advantages of Beans
    3. Introspection
      1. Design Patterns for Properties
      2. Design Patterns for Events
      3. Methods and Design Patterns
      4. Using the BeanInfo Interface
    4. Bound and Constrained Properties
    5. Persistence
    6. Customizers
    7. The JavaBeans API
      1. Introspector
      2. PropertyDescriptor
      3. EventSetDescriptor
      4. MethodDescriptor
    8. A Bean Example
  2. Chapter 35 Introducing Servlets
    1. Background
    2. The Life Cycle of a Servlet
    3. Servlet Development Options
    4. Using Tomcat
    5. A Simple Servlet
      1. Create and Compile the Servlet Source Code
      2. Start Tomcat
      3. Start a Web Browser and Request the Servlet
    6. The Servlet API
    7. The javax.servlet Package
      1. The Servlet Interface
      2. The ServletConfig Interface
      3. The ServletContext Interface
      4. The ServletRequest Interface
      5. The ServletResponse Interface
      6. The GenericServlet Class
      7. The ServletInputStream Class
      8. The ServletOutputStream Class
      9. The Servlet Exception Classes
    8. Reading Servlet Parameters
    9. The javax.servlet.http Package
      1. The HttpServletRequest Interface
      2. The HttpServletResponse Interface
      3. The HttpSession Interface
      4. The Cookie Class
      5. The HttpServlet Class
    10. Handling HTTP Requests and Responses
      1. Handling HTTP GET Requests
      2. Handling HTTP POST Requests
    11. Using Cookies
    12. Session Tracking

Part V Appendixes

  1. Appendix A Using Java’s Documentation Comments
    1. The javadoc Tags
      1. @author
      2. {@code}
      3. @deprecated
      4. {@docRoot}
      5. @exception
      6. @hidden
      7. {@index}
      8. {@inheritDoc}
      9. {@link}
      10. {@linkplain}
      11. {@literal}
      12. @param
      13. @provides
      14. @return
      15. @see
      16. @serial
      17. @serialData
      18. @serialField
      19. @since
      20. {@summary}
      21. @throws
      22. @uses
      23. {@value}
      24. @version
    2. The General Form of a Documentation Comment
    3. What javadoc Outputs
    4. An Example that Uses Documentation Comments
  2. Appendix B Introducing JShell
    1. JShell Basics
    2. List, Edit, and Rerun Code
    3. Add a Method
    4. Create a Class
    5. Use an Interface
    6. Evaluate Expressions and Use Built-in Variables
    7. Importing Packages
    8. Exceptions
    9. Some More JShell Commands
    10. Exploring JShell Further
  3. Appendix C Compile and Run Simple Single-File Programs in One Step

Index

Sources:

Fair Use Sources:

Categories
Java Software Engineering

Java Reference Materials

See also Java Bibliography, Java Programming Language or Java Glossary

Best Java programming reference books: Full list at Java Bibliography

Best reference sites for Java programming:

Sources:

Fair Use Sources:

Categories
Java Software Engineering

Java Bibliography

See also: Java Reference Materials, Java Programming Language or Java Glossary

  1. Java official documentation: https://docs.oracle.com/en/java (JavDoc)
  2. Learning Java, Fifth Edition, by Marc Loy, Patrick Niemeyer, and Daniel Leuck, 2020, 978-1-492-05627-0, B086L2NYWR (LerJav)
  3. Java: The Complete Reference, 11th Edition, by Herbert Schildt, 2018, B07KSQ9RKF (JvCmRf)
  4. Java in a Nutshell – A Desktop Quick Reference, 7th Edition, by Ben Evans and David Flanagan, 2018, B07L3BFG49 (JvNutSh)
  5. Java Pocket Guide – Instant Help for Java Programmers, 4th Edition, by Robert Liguori, 2017, B0756P3CZD (JvPktGd)
  6. Head First Java, 3rd Edition, by Kathy Sierra and Bert Bates, 2021, 1491910771 (HFJav)
  7. Java – A Beginner’s Guide, 8th Edition, by Herbert Schildt, 2018, B07J2ZZ29H (JvBgnGd)
  8. Effective Java, 3rd Edition, by Joshua Bloch, 2017, B078H61SCH (EftJav)
  9. Modern Java in Action – Lambdas, streams, functional and reactive programming, 2nd Edition, by Raoul-Gabriel Urma, Mario Fusco, Alan Mycroft, 2018, 1617293563 (ModJavAc)
  10. Java Cookbook – Problems and Solutions for Java Developers, 4th Edition, by Ian F. Darwin, 2020, B08651PDL6 (JvCkbk)
  11. Java for Absolute Beginners – Learn to Program the Fundamentals the Java 9+ Way, by Iuliana Cosmina, 2018, B07L5C7GHH (JvAbBgn)
  12. Think Java – How to Think Like a Computer Scientist, 2nd Edition, by Allen B. Downey and Chris Mayfield, 2019, B08234FFCX (TnkJav)
  13. OCA Java SE 11 Programmer I Certification Guide, Exam 1Z0-815, by Mala Gupta, 2021, 9781617297465 (OCA11Gup)
  14. OCA Java SE 8 Programmer I Certification Guide, by Mala Gupta, 2016, 1617293253 (OCA8Gup)
  15. The Well-Grounded Java Developer, Second Edition, by Benjamin Evans, Jason Clark, and Martijn Verburg, 2021, 1617298875 (WelGrJvDv)
  16. Core Java – Volume I – Fundamentals, 11th Edition, by Cay S. Horstmann, 2020, B07G8DHTSZ (CorJav1)
  17. Core Java – Volume II – Advanced Features, 11th Edition, by Cay S. Horstmann, 2019, B07NCXJR1M (CorJav2)
  18. Java Quick Syntax Reference, 2nd Edition, by Mikael Olsson, 2018, B079BKJ6CB (JvQSynRf)
  19. Gosling, James; Joy, Bill; Steele, Guy; Bracha, Gilad; Buckley, Alex, 2014. The Java® Language Specification (PDF) (Java SE 8 ed.).
  20. Gosling, James; Joy, BillSteele, Guy L., Jr.Bracha, Gilad, 2005. The Java Language Specification (3rd ed.). Addison-Wesley. ISBN 0-321-24678-0.
  21. Lindholm, Tim; Yellin, Frank, 1999. The Java Virtual Machine Specification (2nd ed.). Addison-Wesley. ISBN 0-201-43294-3.

Sources:

Fair Use Sources: