Language & Runtime
Underneath any language's syntax sits a runtime that decides how your code is actually executed. Knowing the difference between a compiler, an interpreter, and a JIT (just-in-time) compiler helps you understand why some code runs faster or slower than you'd expect. The same goes for memory: the distinction between stack and heap memory, and the role of a garbage collector in reclaiming memory you no longer use, explains a whole class of performance and memory-leak issues before you ever have to debug one.
This knowledge also helps you read an unfamiliar codebase: recognising modules or layers (a "user module", an "order module", a "database layer") is easier once you understand how the language and runtime organise code at a lower level.
Starting Points
- Programming foundations (knowledge)
- Schildt, H., & Coward, D. (2024). Java: The Complete Reference (13th ed.), chapter 1. McGraw-Hill.
Key Points
- You identify modules or components in an existing codebase (e.g. "user module", "order module", "database layer", "UI layer").
- You explain the differences and similarities between a JIT compiler, a compiler, and an interpreter.
- You distinguish conceptually between heap and stack memory.
- You explain why memory management matters and what a garbage collector does, in simple terms.