Java SE 11 Developer key terms
Java SE 11 Developer · Get comfortable with the vocabulary.
- primitive widening conversion
- Related: narrowing cast, autoboxing
An automatic, lossless promotion of a smaller primitive to a larger compatible type, such as int to long or float to double, applied by the compiler without a cast.
- narrowing cast
- Related: primitive widening conversion, autoboxing
An explicit conversion that may lose information or magnitude, such as long to int or double to float, requiring a cast operator and permitted between compatible primitive types.
- autoboxing
- Related: narrowing cast, wrapper class
The compiler's automatic wrapping of a primitive into its wrapper class, and unwrapping back, when a reference type is required; cached values apply for small integral and boolean ranges.
- wrapper class
- Related: autoboxing, var
One of the immutable reference types such as Integer, Double, or Character that encapsulate a primitive value and provide parsing, conversion, and utility methods.
- var
- Related: wrapper class
A reserved type name allowing local variable declarations whose type is inferred from the initializer; it cannot be used for fields, method parameters, or without an initializer.
- switch expression
- Related: fall-through, labeled break
A switch form that produces a value using arrow labels and yield, supports exhaustiveness for enums and strings, and avoids fall-through by default.
- fall-through
- Related: switch expression, labeled break
Execution continuing into subsequent case labels when a matched case lacks a break or return, a classic source of logic errors in colon-style switch statements.
- labeled break
- Related: fall-through, switch expression
A break statement followed by a label that exits the named enclosing loop or block, useful for escaping nested iteration in one step.
- polymorphism
- Related: virtual method dispatch, method overloading
The ability of a supertype reference to invoke subclass-specific behavior through overridden methods, resolved at runtime by dynamic dispatch.
- virtual method dispatch
- Related: polymorphism, covariant return type
Runtime selection of the most specific overriding implementation based on the actual object type, not the declared reference type.
- method overloading
- Related: polymorphism, covariant return type
Declaring multiple methods with the same name but different parameter lists in one class; selection happens at compile time based on static argument types.
- covariant return type
- Related: method overloading, virtual method dispatch
An override whose return type is a subtype of the overridden method's return type, permitted since Java 5 while parameter types must match exactly.
- abstract class
- Related: interface default method, polymorphism
A class declared abstract that cannot be instantiated and may contain abstract methods that concrete subclasses must implement, plus shared state and behavior.
- interface default method
- Related: abstract class, functional interface
A method in an interface with a body marked default, allowing interfaces to evolve without breaking implementers; it is inherited but can be overridden.
- checked exception
- Related: unchecked exception, try-with-resources
A Throwable subtype other than RuntimeException and Error that the compiler requires to be caught or declared with throws.
- unchecked exception
- Related: checked exception, try-with-resources
A RuntimeException or Error subtype not enforced by the compiler; typically signals programming defects or unrecoverable conditions.
- try-with-resources
- Related: checked exception, unchecked exception
A try statement declaring resources that implement AutoCloseable and are closed automatically in reverse order, with suppressed exceptions attached when closing fails.
- assertion
- Related: unchecked exception
A statement using assert that tests an invariant and throws AssertionError when false; disabled by default and enabled with the -ea JVM option.
- array covariance
- Related: ArrayStoreException, generic type erasure
The rule that a String[] is assignable to Object[], which compiles but can throw ArrayStoreException at runtime when an incompatible element is stored.
- ArrayStoreException
- Related: array covariance
A runtime exception thrown when an attempt is made to store an element of the wrong type into a covariant array reference.
- generic type erasure
- Related: array covariance, wildcard
The compiler's removal of generic type information so that parameterized types become raw types or bounds at runtime, preventing instanceof and array creation with type parameters.
- wildcard
- Related: generic type erasure, Comparable
A generic type argument written as ?, optionally bounded with extends or super, expressing unknown or restricted type families for flexible method signatures.
- Comparable
- Related: Comparator, wildcard
A generic interface defining compareTo for natural ordering, used by sorted collections and by Collections.sort and Arrays.sort.
- Comparator
- Related: Comparable, stream pipeline
A functional interface defining compare for external, customizable ordering, composable with thenComparing and reversed and usable with sorted stream operations.
- stream pipeline
- Related: Optional, method reference
A sequence consisting of a source, zero or more lazy intermediate operations, and one terminal operation that triggers traversal and produces a result.
- Optional
- Related: stream pipeline, functional interface
A container that may hold a value or be empty, encouraging explicit handling of absence through methods such as map, flatMap, orElse, and ifPresent.
- method reference
- Related: functional interface, stream pipeline
A compact lambda form written with double colons, such as String::length or System.out::println, referring to a static, instance, or constructor method.
- functional interface
- Related: method reference, interface default method
An interface with exactly one abstract method, eligible for lambda expressions and method references, optionally annotated with @FunctionalInterface for compile-time checking.
- module descriptor
- Related: exports directive, transitive dependency
The module-info.java file declaring a module's name, its required dependencies, exported packages, opened packages, and services it uses or provides.
- exports directive
- Related: module descriptor, transitive dependency
A module declaration clause making a package's public types accessible to other modules; without it, types remain inaccessible even if public.
- transitive dependency
- Related: module descriptor, exports directive
A requires clause marked transitive that re-exposes a dependency's exported packages to modules that read the declaring module.
- thread synchronization
- Related: volatile, ExecutorService
Coordination of concurrent access using synchronized blocks or methods, locks, or atomic classes to guarantee visibility and mutual exclusion of shared mutable state.
- volatile
- Related: thread synchronization, ExecutorService
A field modifier guaranteeing that reads and writes go to main memory with happens-before visibility, but without atomicity for compound operations.
- ExecutorService
- Related: volatile, thread synchronization
A thread pool abstraction for submitting tasks, obtaining Futures, and shutting down gracefully; implementations come from the Executors factory methods.
- Path
- Related: Files utility class, BufferedReader
An immutable, platform-independent representation of a file system location created with Paths.get or Path.of, supporting resolution and normalization operations.
- Files utility class
- Related: Path, BufferedReader
A static helper offering operations such as readAllLines, write, copy, move, walk, and lines, throwing IOException on failure.
- BufferedReader
- Related: Path, Files utility class
A character-input wrapper that buffers reads for efficiency and provides readLine for line-oriented processing of text streams.
- serialization filter
- Related: input validation, least privilege
A mechanism using ObjectInputFilter to restrict classes allowed during deserialization, mitigating gadget-chain attacks on untrusted data.
- input validation
- Related: serialization filter, least privilege
Checking and constraining external data before use, including length, range, and format checks, to prevent injection and unexpected state.
- least privilege
- Related: input validation, serialization filter
Granting only the permissions and access a component needs, applied in Java through security policies, module exports, and restricted file access.
- Locale
- Related: DateTimeFormatter, ResourceBundle
An object identifying a language and region that drives formatting, parsing, and message selection; it is distinct from the default time zone.
- DateTimeFormatter
- Related: Locale, ResourceBundle
An immutable formatter and parser for date-time values built from patterns or localized styles, with configurable locale and zone.
- ResourceBundle
- Related: Locale, DateTimeFormatter
A container of locale-specific objects loaded by base name, falling back from specific to default locales, used for localizing messages.
- retention policy
- Related: functional interface, annotation target
An annotation meta-property controlling how long an annotation is kept: SOURCE discarded by the compiler, CLASS in bytecode only, or RUNTIME reflectively readable.
- annotation target
- Related: retention policy, functional interface
The @Target declaration restricting where an annotation may be applied, such as TYPE, METHOD, FIELD, PARAMETER, or a combination.