Symbols

:clojure.spec.alpha/invalid: keyword 484

:shrunk key 491

:smallest [(0)] key 491

./gradlew command 377

./gradlew tasks meta-task 377

.gradle.kts extension 378

(.) macro 332

(agent) function 569

(alter) form 568

(apply) form 319

(cast) name 108

(concat) form 534

(conj <coll> <elt>) function 328

(conj) operation 557

(cons <elt> <coll>) function 328

(cons) operation 557

(constantly) function 330

(def <symbol> <value?>) special form 310

(def) form 310

(defmacro) special form 338

(defn) macro 305

(deref) form 311

(do <expr>*) special form 310

(do) form 309

(dosync) form 568

(every? <pred-fn> <coll>) function 328

(filter) call 535

(filter) form 323

(first <coll>) function 328

(fn <name>? [<arg>*] <expr>*) special form 310

(for) form 531

(future-done?) nonblocking call 564

(if <test> <then> <else>) special form 310

(if) special form 338

(import) form 332

(lazy-seq) form 534

(lazy-seq) macro 534

(let [<binding>*] <expr>*) special form 310

(let) form 317

(loop) form 320

(macroexpand-1) form 339

(macroexpand) form 339

(map) function 314

(new) form 332

(nth) function 313

(partial) form 535

(pcalls) function 564

(println) function 308

(proxy) form 334

(proxy) macro 333

(quote <form>) special form 310

(quote) form 311

(recur) form 320

(reduce) form 324

(ref) form 311, 565, 568

(rest <coll>) function 328

(send) call 570

(seq <coll>) function 328

(seq? <o>) function 328

(sort-by) new form 319

(take) form 534

(unless) form 336

(unless) function 337

(unless) macro 339

(var <symbol>) special form 310

(var) special form 311

(vec) form 313

(vector) form 313

(wait-and-log) call 570

@Container annotation 470

@file:JvmName(“AlternateClassName”) annotation 295

@FunctionalInterface annotation 146, 202

@JvmOverloads annotation 296

@Mojo annotation 373

@NotNull annotation 288

@Nullable annotation 288

@Test annotation 460

@Testcontainers annotation 469

&env special varaible 339

&form special variable 339

#() form 323324

#define preprocessor directive 336

#include preprocessor directive 336

A

AbstractQueuedSynchronizer class 173

access control 3334, 588

accessor methods 236

Account class 601

Account interface 601

AccountManager class 190

accuracy 221222

aconst_init opcode 631

add opcode 108

- -add-exports switch 41, 43

- -add-host flag 418

- -add-modules switch 42

- -add-opens command-line option 45

Add-Opens JAR manifest attribute 45

- -add-opens switch 42

- -add-reads switch 41

add() method 186

additional static arguments 590

agents 569570

aggregator modules 39

algebraic data types 73

Algorithm Design Manual, The (Skiena) 128

all function 279

allocator object 617

aload_0 opcode 102

alternative JVM languages

how to choose 262265

developers using language 264265

difficulty of learning language 264

language interoperating well with Java 263264

project area low-risk 262263

tooling and test support for language 264

JVM supporting 265268

compiler fictions 267268

performance 266

runtime environments for non-Java languages 266267

language zoology 252256

dynamic vs. static typing 253254

imperative vs. functional languages 254255

interpreted vs. compiled languages 252253

reimplementation vs. original 255256

polyglot programming on JVM 256262

contenders 260262

non-Java language, reasons for using 257259

up-and-coming languages 259260

Amdahl's law 121122

andThen() method 513

anonymous classes 607

any function 279

AOT (ahead-of-time) compiled languages 234

APIs

Foreign Function and Memory API 612618

handling native memory in Panama 617618

LibSPNG example 614617

replacing Unsafe with supported 604608

hidden classes 607608

VarHandles 605607

using BlockingQueue APIs 194195

APM (application performance monitoring) 432

AppClassLoader class loader 86

application modules 3839

application plugin 381

applications

developing Java applications with Docker 411424

building image with Gradle 412414

debugging in Docker 421423

local development with Docker Compose 418421

logging with Docker 423424

ports and hosts 416418

running build in Docker 414416

selecting base image 411412

Gradle making 380381

apply() method 513

architecting for modules 4652

Java 8 Compact Profiles 4749

multirelease JARs 4952

split packages 47

arithmetic

Clojure 315316

opcodes 107

arity of functions 329330

AS Docker command 414

assemble task 388

asSequence() function 529

assertj library 362

associateBy function 279

associateWith function 279

AST (abstract syntax tree) 308

astore opcode 107

async function 556

async/await approach 624

atomic classes 170172

AtomicBoolean class 170

AtomicInteger class 170

AtomicLong class 170

AtomicReference class 170

Attach API 42

automatic instrumentation 213214

automatic modules 3940

automating

operations 346

static analysis 389390

await() method 174

B

back pressure 189

backward compatibility 640641

BadInit class 90

bare metal machines 402

barriers 174

base plugin 378

bean style 145

Beck, Kent 441, 443

BiFunction interface 513

binding 301

Bjarnason, Rúnar 516

block-structured concurrency (pre-Java 5) 128147

deadlocks 132135

fully synchronized objects 131132

immunitibility 144147

state model for threads 130131

synchronization

locks and 128130

reasons for 135137

thread states and methods 137143

deprecated thread methods 143

interrupting threads 140142

working with exceptions and threads 142143

volatile keyword 137

BLOCKED state 131

BlockingQueue interface 188, 194

BlockingQueue pattern 188197

using BlockingQueue APIs 194195

using WorkUnit 196197

boolean parameter 159

BootstrapClassLoader class loader 86

brackets, in Clojure 308309

build life cycle 350

<build><plugins> section 359

build tools

Gradle 376400

adding Kotlin 387388

automating static analysis 389390

building 379381

customizing 397400

dependencies in 382387

installing 376377

moving beyond Java 8 390

scripts 378

tasks 377378

testing 388389

using plugins 378379

using with modules 391397

work avoidance 381 – 382

importance of for developers 345350

automating tedious operations 346

ensuring consistency between developers 349350

managing dependencies 346349

Maven 350376

adding another language 355357

authoring Maven plugins 372376

build lifecycle 350351

building 353354

controlling manifest 354

dependency management 360364

installling/POM 351353

modules and 369372

moving beyond Java 8 365366

multirelease JARs in 366369

reviewing 364365

testing 357360

- -build-cache command-line flag 382

Builder class 145

building modular apps 4046

command-line switches 4143

executing 4345

reflection and 4546

buildscript 378

by keyword 282, 526

by memoized call 479

bytecode 101113

concurrency through 149168

deadlock resolved, revisited 162166

deadlock revisited 160162

Lost Update 151153

synchronization in bytecode 153157

synchronized methods 157158

unsynchronized reads 158160

volatile access 166168

disassembling classes 101103

Kotlin and 551553

opcodes (operation codes)

arithmetic 107

execution flow control 108109

invocation 109112

load and store 106107

overview 105106

platform operation 112

shortcut forms of 112113

recursion and 507509, 522, 524

runtime environment 103105

C

C class 632

-c switch 101

C1 (client compiler) 235

C2 (server compiler) 235

cache misses 222224

cached thread pool 205

call stack 104

call target 589

call() method 201, 268

Callable interface 201, 255, 584

CallSite object 589

cancel function 293

cancel() method 197

canonical constructor 63

capacity 211

CAS (Compare-and-Swap) operation 171

Chiusano, Paul 516

class files 8286

bytecode 101113

disassembling classes 101103

opcodes (operation codes) 105113

runtime environment 103105

class loading and linking 8385

initialization 85

preparation 85

resolution 85

verification 8485

class objects 8586

Classloader class 8695

custom class loading 8895

modules and class loading 95

examining 95100

constant pool 98100

internal form for method signatures 9698

javap 96

reflection 113118

combining class loading and 116117

overview 114116

problems with 117118

class keyword 281

class loading 82

Class object 83, 8586, 129, 573

Class type 99

Class<?> object 573

Class<Integer> type 117

classes, Kotlin 281287

ClassFileParser::parseClassFile() method 92

ClassLoader class 8695

custom class loading 8895

dependency injection framework example 9394

exceptions, class loading 8991

first custom class loader 9193

instrumenting class loader example 9495

modules and class loading 95

clean lifecycle 351

-client switch 235

clj command 302

Clojure 260, 302

brackets 308309

concurrent Clojure 557570

agents 569570

futures and pcalls 563565

persistent data structures 557563

software transactional memory 565569

functional programming and closures 323325

getting started with REPL 303305

Gradle 376377

Hello World in 302303

interoperating between Java and 330335

calling Java from Clojure 331332

exploratory programming with REPL 334335

Java type of Clojure values 332333

nature of Clojure calls 332

using Clojure from Java 335

using Clojure proxies 333334

Kotlin 271

macros 335341

making mistakes 305308

Maven 351353

overview 300302

property-based testing with 481493

clojure.spec 483486

clojure.spec and test.check 492493

clojure.test 481483

test.check 487492

sequences 325330

syntax and semantics 309323

arithmetic, equality, and other operations 315316

functions 316319

lists, vectors, maps, and sets 312315

loops 319320

reader macros and dispatch 321323

special forms 309311

Testcontainers 467

Clojure FP 301, 325, 531535

comprehensions 531532

currying in Clojure 535

Kotlin FP 519522

lazy sequences 532534

overview 498499

Clojure in Action (Rathore) 299

clojure.lang package 305

clojure.lang.ISeq interface 325

clojure.lang.Ref type 568

clojure.lang.Var type 333

clojure.spec 483486, 492493

clojure.test 481483

clojure.test standard library 481

closures 325

Clojure 323325

Java limitations as FP language 509511

Kotlin FP 517518

overview 500501

Cluster object type 425

CMD Docker command 408410, 413414

CMT (chip multithreading) 220

CNCF (Cloud Native Compute Foundation) 433

Cognitect Labs test-runner test runner 483

Cohn, Mike 438

collect() method 511, 643, 646

collection literals 17

collections

Java limitations as FP language 514515

Kotlin 277279

limits of 645646

Collections class 181

collections factories (JEP 213) 1718

Collections helper class 642

Collectors.toList() static method 644

com.company.project convention 37

com.oracle.graal.graal_enterprise module 38

command-line switches 4143

communication overhead 122

compact constructors 67

Compact Profiles (Java 8) 4749

compact record constructors 6769

compact strings 596597

compacting 228

compareAndSwapInt() method 606

compareAndSwapLong() method 606

compareAndSwapObject() method 606

compareTo() method 539, 585

compilation error 288

compilation logs 237238

compile goal 355

compile phase 350

compileClasspath Gradle dependency configuration 383384

compiled languages 252253

compileOnly Gradle dependency configuration 384

compiler fictions 267268

CompletableFuture class 198200, 499, 544547

CompletableFuture.supplyAsync() method 200

CompletableFuture<T> type 199

compose function 516

comprehensions, Clojure FP 531532

Computer Architecture: A Quantitative Approach (Hennessey et al.) 220

concurrency

block-structured concurrency (pre-Java 5) 128147

deadlocks 132135

fully synchronized objects 131132

immunitibility 144147

state model for threads 130131

synchronization and locks 128130

synchronization, reasons for 135137

thread states and methods 137143

volatile keyword 137

design forces 124128

forces conflicting, reasons for 127

live system 126

performance 126

reusability 126127

safety and concurrent type safety 125126

sources of overhead 127128

Java Memory Model (JMM) 147149

Kotlin 291294

theory primer 120124

Amdahl's law 121122

hardware 121

Java threading model 123124

lessons learned 124

Thread acquaintance assumption 120121

through bytecode 149168

deadlock resolved, revisited 162166

deadlock revisited 160162

Lost Update 151153

synchronization in bytecode 153157

synchronized methods 157158

unsynchronized reads 158160

volatile access 166168

concurrency primitive 170

concurrent programming

concurrent Clojure 557570

agents 569570

futures and pcalls 563565

persistent data structures 557563

software transactional memory 565569

F/J (Fork/Join) framework 538544

example of 539542

parallelizing problems for 542

work-stealing algorithms 543544

FP (functional programming) and 544549

CompletableFuture class 544547

parallel streams 547549

Kotlin coroutines 549556

coroutine scoping and dispatching 554556

how coroutines work 549554

ConcurrentHashMap class 176185

approaches to concurrent Dictionary 180182

limitations of Dictionary class 179180

simplified HashMap 176179

using 182185

concurrently typesafe 125

ConcurrentMap interface 184

condition objects 173174

configuration parameters, garbage collection 232233

conj method 557

cons method 557

consensus barrier 174

consistency 349350

constant pool 98100

CONSTANT_ prefix 99

constructor keyword 283

Consumer<> interface 471

container engines 403

container registry 409

containers

Docker 406411

building Docker images 406409

developing Java applications with 411424

running Docker containers 409411

gathering container logs 471

importance of for developers 402406

bare metal machines 402

benefits of containers 404405

container engines 403

containers 403404

drawbacks of containers 405406

host operating system or Type 1 hypervisor 402

Type 2 Hypervisors 402403

VM (virtual machines) 403

Kubernetes 424432

observability 432435

performance in 434435

controllers 424

convenience and conciseness, Kotlin 271281

collections 277279

equality 273

functions 273277

if expressions 279281

starting with less 271272

variables 272273

cooperative multitasking 293

copy method 519, 550

copy-on-write semantics 185

CopyOnWriteArrayList class 185188

coroutines 291, 549

overview 549554

scoping and dispatching 554556

CoroutineScope instance 555

cost, achieving higher performance 215216

count method 455, 557

countDown() method 174

CountDownLatch 174175

COWIterator object 186

create() factory method 335

critical section 129

curried function 502

currying

in Clojure 535

Java limitations as FP language 513

Kotlin FP 518

overview 502

custom class loading 8895

dependency injection framework example 9394

exceptions, class loading 8991

first custom class loader 9193

instrumenting class loader example 9495

D

DAG (directed acyclic graph) 31

DAO (data access objects) 473

data class construct 519

data classes, Kotlin 286287

data parallelism 547

Data Science Bookcamp (Apeltsin) 212

datatypes 341

DaySupplier type 512

deadlocks 132135, 160166

debugging in Docker 421423

deconstruction patterns 610

def special form 301

default clause 60

default implementation 641

default implementation clash 642

default lifecycle 350

default line 59

default methods 641642

defineAnonymousClass() method 607

defineClass() method 92

defineClass1() native method 92

defspec function 491

deftest function 482

degradation 211

delay function 550

delegated properties 479, 526

delegation 180

deoptimization, JIT (just-in-time) compilation 238

dependencies 346349

dependency conflict 348349

in Gradle 382387

Maven 360364

dependency configurations 382

dependency conflict 348

dependency injection framework example 9394

dependency resolution 361

deploy phase 351

Deployment object type 425

deprecated thread methods 143

describe method 480

design forces, concurrency 124128

conflicting, reasons for 127

live system 126

performance 126

reusability 126127

safety and concurrent type safety 125126

sources of overhead 127128

destroy() method 143

destructuring 610

developers

build tools 345350

automating tedious operations 346

ensuring consistency between developers 349350

managing dependencies 346349

containers, importance of 402406

bare metal machines 402

benefits of containers 404405

container engines 403

containers 403404

drawbacks of containers 405406

host operating system or Type 1 hypervisor 402

Type 2 Hypervisors 402403

VM (virtual machines) 403

using language 264265

DI (dependency injection) 81

Dictionary class 176

approaches to concurrent 180182

limitations of 179180

direct measurement 213214

disjoint union types 73

dispatch reader macros, Clojure 321323

dispatch, methods in JVM 572

dispatching, coroutines 554556

distinguishability 222

Distributed traced observability pillar 433

div opcode 108

divide and conquer pattern 538

dload opcode 106

do-while loop 603

doc function 485

Docker 406411

building Docker images 406409

developing Java applications with 411424

building image with Gradle 412414

debugging in Docker 421423

local development with Docker Compose 418421

logging with Docker 423424

ports and hosts 416418

running build in Docker 414416

selecting base image 411412

running Docker containers 409411

docker build command 406

docker commands 423

Docker Compose 418421

docker cp command 422

docker pull command 409

docker push command 409

docker run command 409

- -dry-run flag 378

DSL (domain-specific language) 376, 378

duck typing 13

duck variable 13

dummy object 449451

dup opcode 103, 106

dynamic compilation

monomorphic calls and 236237

reasons for 234

dynamic typing 253254

E

-e flag 410

eager evaluation 501, 646

Easy Cases Are Easy antipattern 542

echoserver container 426

effectively final variables 510

efficiency 211

EJBs (Enterprise Java Beans) 619

else case 281

else condition 337

else position 320

emergent property 208

end-to-end testing 440, 474476

enterprise modules (JEP 320) 1819

entry() method 18

entrySet() method 179

enum keyword 73

environment 410, 510

ephemeral port 417

equality

Clojure 315316

Kotlin 273

equals() method 64

ergonomically 435

escape analysis 628

evaluation stack 104

EvilOrder class 70

exceptions 142143

execute() method 543

executing, modular apps 4345

execution control opcodes 108109

<execution> steps 367

<executions> element 374

Executor argument 546

Executor interface 202

Executors class 202

Executors.newVirtualThreadPerTaskExecutor() factory method 625

ExecutorService interface 202

ExecutorService.invokeAll() helper method 564

exhaustiveness 70

ExpectedException rule 464

explain function 485

exploratory programming 303, 334335

exporting keyword 3637

exports keyword 33

EXPOSE ports Docker command 417

expressions 59

extends keyword 285

Extension objects 399

extensions property 399

ExternalResource class 461

F

F/J (Fork/Join) framework 538544

example of 539542

parallelizing problems for 542

work-stealing algorithms 543544

factory method 144

failing tests, writing 443445

failsafe plugin 459

fake object 449, 454456

false values, Clojure 316

Feather, Michael 442

feed() method 115

Field object 85

Fieldref 100

files function 392

filter collection 516

filter functional technique 531

filter() method 511, 641644

filter() pipeline 511

final keyword 146, 171, 498

final methods 578

final reference 504

final var combination 519

findClass() method 88

findConstructor() method 584

findVirtual() method 584

finite resources 402

fire-and-forget virtual threads 622

first-class functions 254, 268, 275

first() method 335

fixed-thread pool 204205

fixtures 478

flatMap() method 546, 643

Flight Recorder 239240

Float 100

for loop 278, 319, 604

forEach() method 643

forEach() operation 645

Foreign Function API 612618

handling native memory in Panama 617618

LibSPNG example 614617

ForkJoinPool executor service 538

ForkJoinTask type 543

form 300

format() method 12

FP (functional programming)

Clojure 323325

Clojure FP 531535

comprehensions 531532

currying in Clojure 535

lazy sequences 532534

concepts of 498502

closures 500501

currying and partial application 502

higher-order functions 499500

immutability 498499

laziness 501

pure functions 498

recursion 500

concurrent programming and 544549

CompletableFuture class 544547

parallel streams 547549

Java limitations as FP language 502515

closures 509511

currying and partial application 513

higher-order functions 505506

Java type system and collections 514515

laziness 511512

mutability 503505

pure functions 503

recursion 506509

Kotlin FP 515530

closures 517518

currying and partial application 518

immutability 519522

lazy evaluation 525526

pure and higher-order functions 516517

sequences 526530

tail recursion 522525

FROM Docker command 409, 414

full collections 228

fully synchronized objects 131132

Function interface 644

Function objects 513

Function type 506

functional interface type 644

functional languages 254255

Functional Programming in Kotlin (Vermeulen, Bjarnason, and Chiusano) 516

functionally orientated methods 642

functions 498

Clojure 316319

Kotlin 273277

Fusco, Mario 640

Future interface 197200

futures, in Clojure 563565

FutureTask class 200201

fuzzing 489

FX (foreign exchange currency trading) 56

G

G1 collection 229231

GA (general availability) 434

garbage collection 224233

areas of memory 227

basics 225

configuration parameters 232233

full collections 228

G1 229231

mark and sweep 225227

Parallel collector 231232

safepoints 228

young collections 228

GAV (group, artifact, version) coordinates 352

gen function 493

generate function 488

generational GC 226

generators package 488

generic specialization 633

GenericContainer object 470

generics 633

get() method 145, 178, 197, 199, 313, 512

getAndAddInt() method 602

getAndAddLong() method 606

getAndIncrement() method 171

getAndSetInt() method 606

getAndSetLong() method 606

getAndSetObject() method 606

getCallerClass() 607

getClass() method 334

getDeclaredMethod() method 117

getfield opcode 106, 168

getInstance() method 237

getMethod() method 117

getstatic opcode 106

getSuperclass() method 85

goals 351

Goetz, Brian 168

Golden Hammer technique 117

goto opcode 108109

Gough, James 246

GraalVM 261

Gradle 376400

adding Kotlin 387388

automating static analysis 389390

building 379381

building images with 412414

customizing 397400

creating custom plugins 399400

custom tasks 397399

dependencies in 382387

installing 376377

moving beyond Java 8 390

scripts 378

tasks 377378

testing 388389

using plugins 378379

using with modules 391397

JLink 393397

modular applications 392393

modular library 391392

work avoidance 381382

gradlew wrappers 377

gradlew.bat command 377

granularity 222

green threads 619

groom() method 575

Groovy

Kotlin vs. 378

overview 260

group constructs 478

group function 478

group lambdas 479

group method 480

guarded patterns 77

H

Happens-Before 147

hardware 121

hash() helper method 178

hashCode() method 60, 64

HashMap 111, 176179

head-of-line blocking 1920

headers, HTTP 21

heap 225

heap flattening 628

Hello World, in Clojure 302303

hi symbol 310

hi var 310

hidden classes 607608

higher-order functions

Java limitations as FP language 505506

Kotlin FP 516517

overview 499500

homoiconic languages 336

host operating systems 402

hosts, Docker 416418

HotSpot 235236

C1 (client compiler) 235

C2 (server compiler) 235

real-time Java 235236

HTTP/2 1924

head-of-line blocking 1920

HTTP header performance 21

in Java 11 2224

other considerations 22

restricted connections 2021

TLS 2122

HttpClient type 22

HttpRequest type 22

HttpResponse.BodyHandler<T> interface 23

humongous region 230

I

IaaS (Infrastructure as a Service) 405

Idc opcode 106

identity-free references 631

if condition 508

if expressions 279281

if opcodes 108

if statement 279, 448

IFn interface 307, 584

IFoo interface 641

- -illegal-access command-line switch 42, 45

ILP (instruction-level parallelism) 220

images

building Docker 406409

building with Gradle 412414

selecting base 411412

imperative languages 254255

implementation configuration 383

import statement 50

in keyword 280

incubating features 1516

indexFor() helper method 178

infinite streams 646

init blocks, Kotlin 283

<init> method 103

initialization phase 85

inline types 628

inlining methods 234, 236

insert method 455

inst variable 100

Install phase 351

instanceof keyword 7475, 630

instrumenting class loader example 9495

Int type 288

Integer type 73, 100, 563, 626

integration testing 466476

end-to-end testing with Selenium example 474476

gathering container logs 471

installing testcontainers 467

Postgres, example with 472473

Redis, example with 467471

interface methods 575576

InterfaceMethodref 100

internals

encapsulating 30

invokedynamic 589593

method handles 583589

looking up 585586

MethodHandle 583584

MethodType 584585

reflection vs. proxies vs. 586589

method invocation 571578

final methods 578

interface methods 575576

special methods 576577

virtual methods 572575

protecting 3233

reflection internals 578583

small internal changes 593600

compact strings 596597

nestmates 597600

string concatenation 593595

Unsafe

overview 600604

replacing with supported APIs 604608

interoperatability with Java

Kotlin 294297

languages 263264

with Clojure 330335

calling Java from Clojure 331332

exploratory programming with REPL 334335

Java type of Clojure values 332333

nature of Clojure calls 332

using Clojure from Java 335

using Clojure proxies 333334

interpreted languages 252253

interrupting threads 140142

Introduction to Algorithms (Cormen et al.) 128

invocation opcodes 109112

invoke function 275

invoke methods 584

invoke opcodes 102, 105, 110, 158

invoke() method 115, 307, 543, 578

InvokeDynamic 100

invokedynamic 64, 589593

invokedynamic opcode 109, 267, 588

invokeExact() method 586

invokeinterface opcode 109, 111

invokespecial opcode 102103, 109, 578

invokestatic opcode 109, 507

invokeSuspend method 552

invokevirtual opcode 103, 109, 572, 574

invoking methods 571578

final methods 578

interface methods 575576

special methods 576577

virtual methods 572575

is operator 290

isDone() method 197, 199

ISeq interface 328

isInterrupted() method 141

isthmus 612

it method 480

iterator() method 186, 334

J

jar tool 51

JARs, multirelease 4952

building, example of 4952

in Maven 366369

Java

changes in Java 11 1725

collections factories (JEP 213) 1718

HTTP/2 (Java 11) 1924

removal of enterprise modules (JEP 320) 1819

single-file source-code programs (JEP 330) 2425

Clojure interoperatability with 330335

calling Java from Clojure 331332

exploratory programming with REPL 334335

Java type of Clojure values 332333

nature of Clojure calls 332

using Clojure from Java 335

using Clojure proxies 333334

Docker, developing applications with 411424

building image with Gradle 412414

debugging in Docker 421423

local development with Docker Compose 418421

logging with Docker 423424

ports and hosts 416418

running build in Docker 414416

selecting base image 411412

enhanced type inference (var keyword) 913

for free 637638

language and platform features 1316

changing language 1415

defined 46

incubating and preview features 1516

JSRs and JEPs 15

syntactic sugar 14

limitations as FP language 502515

closures 509511

currying and partial application 513

higher-order functions 505506

Java type system and collections 514515

laziness 511512

mutability 503505

pure functions 503

recursion 506509

new Java release model 69

paid support options 639

Project Amber 610612

Project Loom 618625

programming with virtual threads 623625

release of 625

Thread builder class 622623

virtual threads 621622

Project Panama 612618

Project Valhalla 626633

changing language model 630

consequences of value objects 630633

generics 633

rigid syntax of 258259

threading model 123124

Java 8

backward compatibility 640641

Compact Profiles 4749

default methods 641642

Gradle and 390

handling primitives 646647

infinite streams 646

limits of collections 645646

Maven and 365366

parallel operations 648

streams 642645

Java 11 1725

collections factories (JEP 213) 1718

HTTP/2 (Java 11) 1924

removal of enterprise modules (JEP 320) 1819

single-file source-code programs (JEP 330) 2425

Java 17

instanceof operator 7475

Pattern Matching and preview features 7577

Records 6069

compact record constructors 6769

nominal typing 6667

sealed types 6974

Switch Expressions 5760

Text Blocks 5557

Java 18 633634

java agent 94

java command 354, 396

Java Concurrency in Practice (Goetz) 168

Java EE (Java Enterprise Edition) 18

Java language 4

Java Module System, The (Parlog) 116

Java modules

architecting for modules 4652

Java 8 Compact Profiles 4749

multirelease JARs 4952

split packages 47

basic syntax 3437

exporting and requiring 3637

transitivity 37

building first modular app 4046

command-line switches 4143

executing 4345

reflection and 4546

loading 3740

application modules 39

automatic modules 3940

platform modules 3839

unnamed module 40

overview 2734

module graph 3132

new access control semantics 3334

Project Jigsaw 2831

protecting internals 3233

Java performance tuning 220224

cache misses 222224

role of time in 221222

accuracy 221222

granularity 222

measurements 222

network-distributed timing 222

precision 221

java process 410

Java SE (Java Standard Edition) 18, 637638

Java SE 8 638

Java SE 11 638

Java SE 17 (LTS) 638639

Java Streams address 646

java-library plugin 380

java.base module 31, 581

java.io package 39

java.lang package 39

java.lang: IdentityObject interface 630

java.lang.Enum library type 70

java.lang.management package 49

java.lang.Record class 64

java.lang.reflect package 115

java.lang.reflect.Method class 115, 578

java.lang.String object 310

java.lang.Thread class 137, 200

java.lang.Thread subclass 622

java.lang.Void type 117

java.library.path system property 614

java.net.http module 16, 41

java.se module 39

java.time API 499

java.util collection interfaces 277

java.util package 39, 334

java.util.concurrent package 169

java.util.concurrent.atomic package 170

java.util.concurrent.Flow publisher 23

java.util.function interfaces 511

javac compiler 506

javac source code compiler 11

javap 9596

jcmd 240

JCP (Java Community Process) 15

JDK concurrency libraries

atomic classes 170172

BlockingQueue pattern 188197

using BlockingQueue APIs 194195

using WorkUnit 196197

building blocks for modern concurrent applications 169170

ConcurrentHashMap class 176185

approaches to concurrent Dictionary 180182

limitations of Dictionary class 179180

simplified HashMap 176179

using 182185

CopyOnWriteArrayList class 185188

CountDownLatch 174175

Future type 197200

lock classes 172174

tasks and execution 200206

cached thread pool 205

Executor interface 202

fixed-thread pool 204205

modeling tasks 200201

single-threaded executor 203

STPE (ScheduledThreadPoolExecutor) 205206

JDK Flight Recorder 238246

Flight Recorder 239240

Mission Control 240246

jdk.attach module 43

jdk.incubator namespace 16

jdk.incubator.foreign module 613

jdk.internal.jvmstat module 43

jdk.unsupported module 600

JEPs (JDK Enhancement Proposal) 15

jextract tool 613

JIMAGE format 28

jimage tool 29

JIT (just-in-time) compilation 233238

deoptimization 238

dynamic compilation

monomorphic calls and 236237

reasons for 234

HotSpot 235236

C1 (client compiler) 235

C2 (server compiler) 235

real-time Java 235236

inlining methods 236

reading compilation logs 237238

jlink tool 29, 52, 393397

JLS (Java Language Specification) 4, 147

JMC (JDK Mission Control) 240, 423

JMM (Java Memory Model) 120, 147149, 601

jmod command 36

JMOD format 28

JNI (Java Native Interface) 15, 612

join() call 139

Joy of Clojure, The (Fogus and Houser) 299

JPMS (Java Platform Modules) 26

JRE (Java runtime library) 348

JRuby language 255

jshell interactive environment 12, 623

jsr opcode (deprecated) 108

JSRs (Java Specification Request) 15

JUnit 4 and 5 459464

JUnit in Action (Tudose) 443

junit-vintage-engine dependency 460

JVM (Java’s virtual machine) 3031, 571

JVM_DefineClass() native method 83

JVM_DefineClassWithSource() C function 92

JVMTI (JVM Tool Interface) 213, 607

Jython language 255

K

K8s (Kubernetes) 424

key-fn function 318

keying function 318

keys function 485

keySet() method 179

klass 573

Knuth, Donald E. 216

Kotlin 259260

concurrency 291294

convenience and conciseness 271281

collections 277279

equality 273

functions 273277

if expressions 279281

starting with less 271272

variables 272273

coroutines 549556

coroutine scoping and dispatching 554556

how coroutines work 549554

different view of classes and objects 281287

Gradle adding 387388

Groovy vs. 378

installing 271

Java interoperability 294297

reasons for using 271

safety 287291

Null safety 288289

Smart casting 289291

specification-style testing with 476481

Kotlin FP 515530

closures 517518

currying and partial application 518

immutability 519522

lazy evaluation 525526

pure and higher-order functions 516517

sequences 526530

tail recursion 522525

kotlin interactive shell 271

kotlin-coroutine-core library 291

kotlin-stdlib library 297, 388

kotlin.collections interfaces 277

kotlin.collections package 277

kotlin.collections.List interface 520

kotlin.collections.Map interface 520

kotlinc command-line compiler 271

kotlinx.collections.immutable library 521

Kt class 294

kubectl command 425427

Kubernetes 424432

L

L-type descriptors 632

lambda expressions 275, 591593

LambdaMetafactory.metafactory() method 592

language features, Java 1316

changing language 1415

defined 46

incubating and preview features 1516

instanceof operator 7475

JSRs and JEPs 15

Pattern Matching and preview features 7577

Records 6069

compact record constructors 6769

nominal typing 6667

sealed types 6974

Switch Expressions 5760

syntactic sugar 14

Text Blocks 5557

latches 174

lateinit pattern 479

latency 210

launch method 292, 552

layers 408

laziness

Clojure FP 532534

Java limitations as FP language 511512

Kotlin FP 525526

overview 501

lazy evaluation 501, 646

lazy() function 525

Lazy<T> interface 525526

LazySeq lazy implementation 333

LazyThreadSafetyMode enumeration 526

ldc (load constant) opcode 594

learning languages 264

library module 39

LibSPNG 614617

lifecycle methods 202

LIMIT instance 70

LinkageError class 91

Lisp (Lots of Irritating Silly Parentheses) 308

list comprehensions 531

List interface 313, 641, 643

List object 641

- -list-modules flag 38

list-modules switch 41

listOf read-only helpers 520

lists, Clojure 312315

live system, concurrency 126

load opcode 106107

loadClass() method 88

loading and linking, class 8385

automatic instrumentation via 214

combining with reflection 116117

initialization 85

preparation 85

resolution 85

verification 8485

loading Java modules 3740

application modules 39

automatic modules 3940

platform modules 3839

unnamed module 40

local development, with Docker Compose 418421

LocalDate class 512

lock classes 172174

Lock objects 172173

lock striping 183

log4j2 library 424

loggability guard 216

logging with Docker 423424

Logs pillar 433

Long 100

lookupClass() expression 588

lookupswitch opcode 108

loops, Clojure 319320

Lost Update 151153

low-pause collector 229

low-risk project area 262263

lreturn opcode 522

LVTI (Local Variable Type Inference) 10

M

M:1 threads 619

macro expansion time 336

macros, Clojure 304, 335341

main method 87, 296, 354, 593

mainline development model 6

manifest, Maven 354

manual instrumentation 213

map collection 516

Map interface 111, 184

Map.Entry interface 177

map() method 314, 511, 528, 641643, 647

maps, Clojure 312315

mark and sweep 225227

Maven 350376

adding another language 355357

authoring Maven plugins 372376

build lifecycle 350351

building 353354

controlling manifest 354

dependency management 360364

installing and POM (Project Object Model) 351353

modules and 369372

modular application 370372

modular library 369370

moving beyond Java 8 365366

multirelease JARs in 366369

reviewing 364365

testing 357360

Maven goal 373

maven-comiler-plugin 367

maven-failsafe-plugin 359

maven-publish plugin 392

maven-surefire-plugin 359

measurements, performance analysis 212217

cost of achieving higher performance 215216

dangers of premature optimization 216217

how to take 213214

automatic instrumentation via class loading 214

direct measurement 213214

performance goals 214215

time and 222

what to measure 212213

when to stop 215

megamorphic 582

memoized 479

memory

areas of 227

handling native memory in Panama 617618

latency hierarchy 219220

software transactional memory 565569

Memory API 612618

handling native memory in Panama 617618

LibSPNG example 614617

MemoryAddress class 613

MemorySegment interface 613, 617

MergeSort algorithm 539

Meszaros, Gerard 449

metafactories 592

Method class 579

method handles 583589

looking up 585586

MethodHandle 583584

MethodType 584585

reflection vs. proxies vs. 586589

Method Handles API 583

method invocation 571578

final methods 578

interface methods 575576

special methods 576577

virtual methods 572575

Method object 85, 115, 579

method signatures 9698

MethodAccessor object 580

MethodHandle 100, 592

MethodHandles.Lookup type 589

MethodHandles.lookup() method 584

Methodref 100

methods 498

MethodType 100, 584585, 589

Metrics pillar 433

minikube command 425

Mission Control 240246

mistakes, in Clojure 305308

mixed collection 230

mock object 449, 456457

mock() method 457

mocking 457458

modeling tasks 200201

Callable interface 201

FutureTask class 201

Modern Java in Action, 2nd ed. (Urma, Fusco, Mycroft) 640

modular applications

Gradle 392393

Maven and 370372

modular Java runtime 2829

modular library

Gradle 391392

Maven and 369370

module graph 3132

module keyword 35

module name 36

module path 38

module resolution 95

module-info.java declarations 394

module-info.java module descriptor 614

- -module-path switch 41

ModuleDeclaration production 35

ModuleDescriptor type 116

ModuleDirective production 35

modules 27

class loading and 95

Gradle

JLink 393397

modular applications 392393

modular library 391392

Gradle and 391397

Maven and 369372

modular application 370372

modular library 369370

monitorenter opcode 112, 154, 157

monitorexit opcode 112, 154, 157

monomorphic calls 235237

Moore's law 217219

mul opcode 108

multimethods 341

multirelease JARs 4952

building, example of 4952

in Maven 366369

multistage builds 414

mutability 503505

mutable by default 301

mutable state 304

mvn dependency:tree command 362

Mycroft, Alan 640

N

- -name container-name parameter 421

NameAndType 100

named tuples 66

native methods 612

natural numbers 531

negative caching 90

nestmates 597, 600

network-distributed timing 222

new keyword 281

new name 112

new opcode 103

NEW thread state 130

newCondition() method 174

newFixedThreadPoolContext function 555

Newland, Chris 246

newWithPlatformReleaseN() method 641

next() method 335

nodes 558

nominal typing 6667

Non-JVM languages 261262

nondenotable types 12

nondeterministic pause 226227

none function 279

nonrepeatable read 160

NOP (no-operation) 219

NoSuchMethodError exception 349

notify() method 630

NullPointerException (NPE) 288, 631

O

Object class 114, 630

object header 573

objectFieldOffset() method 602

objects

Kotlin 281287

Kubernetes 424

observability, containers 432435

ofEntries() method 18

offer() method 194

ofPlatform() method 622

ofVirtual() method 622

OO (object-oriented) languages 254

opcodes (operation codes)

arithmetic 107

execution flow control 108109

invocation 109112

load and store 106107

overview 105106

platform operation 112

shortcut forms of 112113

open keyword 35, 285

open modules 45

OpenJDK 637638

opens keyword 35

OpenTelemetry 433434

operations

automating 346

Clojure 315316

Optimizing Java (Evans, Gough, Newland) 246

Optional type 288

or function 484

Oracle JDK 637638

Oracle OpenJDK Builds 637638

orchestrators 424

orderly shutdown 203

OrderPartition type 68

org.apache.catalina.Executor class 206

org.beryx.jlink plugin 395

org.graalvm.js.scriptengine module 38

org.graalvm.sdk module 38

org.junit.jupiter.junit-jupiter-api dependency 459

org.junit.jupiter.junit-jupiter-engine dependency 459

org.testcontainers:testcontainers library 472

original languages, reimplementation vs. 255256

OS (operating system) 619

OSR (on-stack replacement) 238

overhead, concurrency 127128

P

-P switch 417

-p switch 577

Package phase 350

package-protected default 282

paid support options 639

Parallel collector 231232

parallel operations 648

parallel streams 547549

parallel() method 648

parent class loader 88

Parlog, Nicolai 116

partial application

Java limitations as FP language 513

Kotlin FP 518

overview 502

partial order 147

pass-by-value language 510

passing tests, writing 445

pattern matching 7477, 290

pattern variables 75

pause goal 229

pcalls function 563565

pending queue 193

performance

alternative JVM languages 266

concurrency 126

goals for 214215

in containers 434435

performance analysis

garbage collection 224233

areas of memory 227

basics 225

configuration parameters 232233

full collections 228

G1 229231

mark and sweep 225227

Parallel collector 231232

safepoints 228

young collections 228

Java performance tuning 220224

cache misses 222224

role of time in 221222

JDK Flight Recorder 238246

Flight Recorder 239240

Mission Control 240246

JIT (just-in-time) compilation 233238

deoptimization 238

dynamic compilation 234, 236237

HotSpot 235236

inlining methods 236

reading compilation logs 237238

pragmatic approach to 212217

cost of achieving higher performance 215216

dangers of premature optimization 216217

how to take measurements 213214

performance goals 214215

what to measure 212213

when to stop 215

terminology 209211

capacity 211

degradation 211

efficiency 211

latency 210

scalability 211

throughput 210

utilization 210

why to care about 217220

memory latency hierarchy 219220

Moore's law 217219

PermGen (Permanent Generation) 231

permgen Java heap 572

permit | warn | deny setting 45

permits keyword 72

persistent data structures 521, 557563

PersistentVector.Node inner class 559

phases 350

platform features, Java 1316

changing language 1415

defined 46

incubating and preview features 1516

JSRs and JEPs 15

syntactic sugar 14

platform modules 3839

platform operation opcodes 112

PlatformClassLoader 86

<plugin> element 354

plugins 351

authoring Maven 372376

Gradle

creating custom plugins 399400

overview 378379

plus function 555

Pod object type 425

Polish notation 308

poll() method 194

polyglot programming on JVM 256262

contenders 260262

GraalVM 261

Groovy 260

Non-JVM languages 261262

Scala 260261

non-Java language, reasons for using 257259

up-and-coming languages 259260

Clojure 260

Kotlin 259260

POM (Project Object Model) 351353

ports, Docker 416418

Postgres 472473

Postgres Testcontainer object 473

precision 221

Predicate interface 644

predicates 278

preemptive threads 624

premature optimization 216217

preparation phase 85

preprocessor directives 336

preview features 1516, 7577

Price interface 451, 467

primitive classes 628

primitive specialization 647

primitive value types 632

primitives 646647

ProcessHandle class 50

Project Amber 609612

<project> element 354, 358

Project Jigsaw 2831

encapsulating internals 30

JVM is modular now 3031

modular Java runtime 2829

Project Lambda 640

Project Loom 618625

programming with virtual threads 623625

release of 625

Thread builder class 622623

virtual threads 621622

Project Panama

Foreign Function and Memory API 612618

handling native memory in Panama 617618

LibSPNG example 614617

overview 612

Project Valhalla 626633

changing language model 630

consequences of value objects 630633

generics 633

properties 487

<properties> element 354

property testing 263

property-based testing 263, 481493

clojure.spec 483486

clojure.spec and test.check 492493

clojure.test 481483

test.check 487492

protocols 341

provides keyword 35

proxies

Clojure 333334

reflection vs. 586589

public static final variables 70

public visibility 284

pure functions

Java limitations as FP language 503

Kotlin FP 516517

overview 498

put() method 111, 178

putAll() method 179

putfield opcode 106, 152, 159, 168, 630

putIfAbsent() method 184

putstatic opcode 102, 106

pwd command 410

Q

Q-type descriptor 632

qualified exporting 39

query variable 56

Queue interface 188

quick-check function 490

R

RAII (Resource Acquisition Is Initialization) pattern 617

ranges 529

reader macros 321323

real-time Java 235236

rebinding 304

receiver object 115

Records 6069

compact record constructors 6769

nominal typing 6667

record class 63

record components 63

record naming style 145

recurrence relation 534

recursion

Java limitations as FP language 506509

Kotlin 522526

overview 500

Redis 419, 467471

redis key 419

redis object 471

reduce() method 643, 645

ReentrantLock implementation 172

ReentrantReadWriteLock implementation 172

refactoring tests 445446

referential transparency 498

reflection 4546, 113118

combining class loading and 116117

internals 578583

overview 114116

problems with 117118

proxies vs. 586589

reimplementation languages 255256

- -release flag 51

remove (int index) list mutation method 514

remove() method 184

REPL (read-evaluate-print loop) 302

exploratory programming with 334335

getting started with 303305

replace() method 184

requires keyword 3537

resolution phase 85

ResourceScope class 617

response object 23

restricted connections 2021

restricted keywords 35

ret opcode (deprecated) 108

reusability 126127

Rhino language 255

root module 40

RUN Docker command 407

run-tests function 482

run() method 102, 138, 200

Runnable interface 255

RUNNABLE thread state 130, 138

runtime environments for non-Java languages 266267

runtime wiring 93

runtime-managed concurrency 121

runtimeClasspath Gradle dependency configuration 383384

runtimeOnly Gradle dependency configuration 384

rust-bindgen tool 618

S

safepoints 228

safety

concurrent type safety 125126

Kotlin 287291

Null safety 288289

Smart casting 289291

SAM (single abstract method) 146

Scala 260261

scalability 211

scalarization 628

scheduleAtFixedRate() method 205

ScheduledThreadPoolExecutor (STPE) 205206

scheduleWithFixedDelay() method 205

Schwartzian transform 318

<scope> element 382

scopes 550

scoping, coroutines 554556

scripts, Gradle 378

sealed interface 72

sealed keyword 73

sealed types 69, 7174

secondary constructors 284

SEDA (Staged Event Driven Architecture) approach 621

SegmentAllocator interface 613, 617

Selenium 474476

semantic versioning 349

semantics. See syntax and semantics

send method 23

sendAsync method 23

seq (sequence) 325

seq method 557

sequence lambda 530

Sequence<T> interface 526

sequenceOf() function 528

sequences 527

Clojure 325330

Kotlin FP 526530

Server JRE 28

-server switch 235

service abstraction 430

service bean 94

Service Kubernetes object type 425

Set interface 179, 643

setAccessible() method 45, 117

sets, Clojure 312315

shallow immutability 147

shared mutable state 544

shortcut forms 112113

shrinking 491

shutdown flag 167

shutdown() method 195

side-effect free 498, 644

single-file source-code programs (JEP 330) 2425

single-threaded executor 203

site lifecycle 351

size() method 644

Skiena, Steven 128

small internal changes 593600

compact strings 596597

nestmates 597600

string concatenation 593595

smart casting 289

software transactional memory 565569

sort() method 641

- -source flag 24

special forms, Clojure 309311

special methods 576577

specification-style testing 476481

specifications 476

Spek 476481

split packages 47

SREs (software reliability engineers) 433

SSD (solid-state drive) 219

stack 225

start() method 138, 622

startVirtualThread() static method 622

state machine 550

state-dependent update 137

static analysis 389390

static methods 287

static synchronized method 129

static typing 253254

STDERR output stream 424

STDOUT output stream 424

Steele, Guy L. 226

stop() method 166, 293

store opcode 106

Stream abstraction 640, 642

Stream interface 511, 642643

Stream object 643

stream() method 511, 643

streams 642646

String constructors 595

String representations 597

String type 73, 273, 288, 589, 593

StringBuilder object 216, 594

StringConcatFactory class 595

strings

compact 596597

concatenation 593595

StringSeq class 335

struct array 629

structural sharing 557

structural typing 13, 66

stub object 449, 451453

STW (Stop-the-World) 226

sub opcode 108

submit() method 543

Succeeding with Agile (Cohn) 438

sudo ip addr show command 418

sum type 73

sun.misc.Unsafe class 170, 600

sun.net package 33

supplyAsync() factory method 546

surefire plugin 459

suspend functions 293, 530, 550

suspend keyword 293, 550

suspend() method 143

Sutter, Herb 218

switch expressions 5760

switch statements 57

Symbol class 305

synchronization

in bytecode 153157

locks and 128130

reasons for 135137

synchronization-based concurrency 119

synchronized keyword 120, 157

synchronized methods 150, 157158

synchronizedMap() method 181

Synchronizes-With relationship 147

syntactic sugar 14

syntax and semantics

Clojure 309323

arithmetic, equality, and other operations 315316

functions 316319

lists, vectors, maps, and sets 312315

loops 319320

reader macros and dispatch 321323

special forms 309311

Java modules 3437

exporting and requiring 3637

transitivity 37

synthetic access method 599

System.currentTimeMillis() method 110

System.getenv() method 411

T

tableswitch opcode 108

tail position 508

tail recursion 507, 522525

tailrec keyword 524

tailrec non-tail-recursive function 525

take() method 194, 529

TaskManager object 167

tasks and execution 200206

cached thread pool 205

Executor interface 202

fixed-thread pool 204205

Gradle 377378

modeling tasks 200201

Callable interface 201

FutureTask class 201

single-threaded executor 203

STPE (ScheduledThreadPoolExecutor) 205206

tasks.jar configuration 381

TDD (test-driven development) 441448

multiple use cases example 446448

overview 442443

single use case example 443448

refactoring test 445446

writing failing test (red) 443445

writing passing test (green) 445

terminal method 511

TERMINATED thread state 131

test calls 478

test doubles 449458

dummy object 449451

fake object 454456

mock object 456457

problems with mocking 457458

stub object 451453

test function 478

test lambdas 479

test method 480

Test phase 350

test support, alternative JVM languages 264

test task 477

test-compile phase 353

Test-Driven Development: By Example (Beck) 441, 443

test.check 487493

test.check-compatible generators 492

testCompileClasspath Gradle dependency configuration 384

testCompileOnly Gradle dependency configuration 384

Testcontainers 466476

end-to-end testing with Selenium example 474476

gathering container logs 471

installing 467

Postgres, example with 472473

Redis, example with 467471

testImplementation Gradle dependency configuration 384, 389

testing

from JUnit 4 to 5 459464

Gradle 388389

how to 438441

integration testing with Testcontainers 466476

end-to-end testing with Selenium example 474476

gathering container logs 471

installing testcontainers 467

Postgres, example with 472473

Redis, example with 467471

Maven 357360

property-based testing with Clojure 481493

clojure.spec 483486

clojure.spec and test.check 492493

clojure.test 481483

test.check 487492

reasons for 438

specification-style testing with Spek and Kotlin 476481

TDD (test-driven development) 441448

multiple use cases example 446448

overview 442443

single use case example 443448

test doubles 449458

dummy object 449451

fake object 454456

mock object 456457

problems with mocking 457458

stub object 451453

testRuntimeClasspath Gradle dependency configuration 384

testRuntimeOnly Gradle dependency configuration 384

Text Blocks 5557

then form 338

thenApply() method 546

theory primer, concurrency 120124

Amdahl's law 121122

hardware 121

Java threading model 123124

lessons learned 124

Thread acquaintance assumption 120121

Thread

acquaintance assumption 120121

Thread builder class 622623

Thread.Builder class 622

Thread.interrupted() method 141

Thread.State enum 130

Thread.stop() method 143

ThreadDeath exception 143

ThreadFactory instances 623

threading model 123124

ThreadPoolExecutor class 203

threads

state model for 130131

states and methods 137143

deprecated thread methods 143

interrupting threads 140142

working with exceptions and threads 142143

throughput 210

tiered compilation 236

time and performance tuning 221222

accuracy 221222

granularity 222

measurements 222

network-distributed timing 222

precision 221

time variable 110

TIMED_WAITING thread state 131

timeslice 624

TLS, HTTP/2 (Java 11) 2122

to keyword 35

ToIntFunction special function type 647

tooling, alternative JVM languages 264

toString() method 64, 585

touchEveryItem() function 223

transitive closure 85

transitive dependencies 347

transitive keyword 35

transitivity 37

transport-level update 19

true values, Clojure 316

try-with-resources 617

Tudose, Cătălin 443

Turing completeness 500

Type 1 Hypervisors 402

Type 2 Hypervisors 402403

type descriptors 96

type erasure 154

type hint 272

type inference (var keyword) 913

type pattern 75

type system 514515

U

unbounded executor 625

union type 73

unit tests 439

unnamed module 40

Unsafe

overview 600604

replacing with supported APIs 604608

hidden classes 607608

VarHandles 605607

UnsupportedClassVersionError error 90

unsynchronized reads 158160

URLCanonicalizer class 3233

Urma, Raoul-Gabriel 640

user namespace 310, 483

userid integer 9

uses keyword 35

Utf8 99100

utilization 210

V

val declaration 519

valid? function 483

Validate phase 350

value classes 628, 630633

value record 629

ValueObject interface 630

values 510

values() method 179

Var class, Clojure 305

var keyword 253, 272

var object, Clojure 302

var properties, Kotlin 290

VarHandles 605607

variables, Kotlin 272273

variadic functions 329330

variant code 49

vectors, Clojure 312315

verification phase 8485

Verify phase 351

verifying behavior 457

Vermeulen, Marco 516

virtual methods 572575

virtual threads

overview 621622

programming with 623625

VirtualMachineDescriptor class 43

VMs (virtual machines) 403

VMSpec (JVM Specification) 4

void methods 117, 332

volatile keyword 120, 137

Volatile Shutdown pattern 166168

W

wait-seq lazy sequence 565

wait() method 630

when keyword 280

when() method 457

while loop 140, 193, 319

with keyword 35

withers 499

withfield opcode 631

work avoidance, Gradle 381382

work-stealing algorithms 543544

Working Effectively with Legacy Code (Feather) 442

WorkUnit 196197

wrappers 377

X

xUnit Test Patterns (Meszaros) 449

-XX:+UnlockCommercialFeatures option 240

Y

yield keyword 58, 554

young collections 228

Z

zombie, compilation logs and 238

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.21.100.193