Skip to content

Vol 9: Language Internals ​

Saying “this variable did not change” requires different evidence for immutable objects, shared references, and concurrent programs. This volume compares types, memory management, concurrency, functional abstractions, the JVM, and DSLs. Language rankings can wait while we work out what the program actually guarantees.

Prerequisites ​

  • Know functions, objects, generics, and exceptions. Review Programming Basics where needed.
  • Understand the basic models of stacks, heaps, threads, and synchronization. Use Computer Systems for the machine-level background.

Coverage ​

The first two chapters distinguish type rules, runtime storage, and inter-thread memory models. Chapters 3 and 4 compare concurrency and functional organization; Chapters 5 and 6 examine implementations through the JVM and metaprogramming.

Chapter 1 ​

Chapter 2 ​

Chapter 3 ​

Chapter 4 ​

Chapter 5 ​

Chapter 6 ​

Outcomes ​

  • Explain variance constraints from reading and writing requirements, and identify invalid substitutions.
  • Distinguish object lifetime, memory visibility, and program invariants, then choose the relevant management or synchronization mechanism.
  • Use bytecode, runtime observations, or a small DSL to explain an abstraction’s behavior, costs, and input boundaries.

How to use this map ​

For each language mechanism, write down its guarantees and try a minimal example plus a failure case. Read the JVM chapters in the order of class files, loading and calls, then JIT compilation. Other language snippets compare mechanisms; prepare the toolchain named in each lesson before running them.

Built with VitePress | Software Systems Atlas