A compact source file omits an explicit top-level class declaration and can define an instance main method, while the source still compiles into a class.
Java 25 compact source files: an instance main with explicit input limits
Java 25+. The program uses JDK classes and requires no preview flags.
Read the instance lifecycle
This file defines receipt references as instance state and prints their count from main. The launcher creates the enclosing instance before invoking that method. Removing the static modifier does not turn fields into global state or remove ordinary initialization rules.
The implicit source environment provides the java.base type imports used here, and IO supplies the console operation. A regular explicit class can also use an eligible instance main under the Java 25 launch rules. Neither syntax removes the need to validate external arguments or own resources.
Save this exact source as ShipmentSummary.java. The file name determines the implicit class name used in the compiled launch command. The source kit includes this file, its minimum release and its entrypoint mode rather than wrapping the method in another main during verification.
Choose the form for the application
A compact file suits a small entrypoint. Package structure, explicit APIs and multi-file builds still matter when the program grows. Keep business operations separate from console output so tests can check return values and rejected inputs without intercepting every printed line.
Working program
List<String> references = List.of("R-19", "R-20", "R-21");
void main() {
IO.println(references.size());
IO.println(references.getFirst());
}Output
3
R-19Costs and boundaries
The stored references occupy O(n) list membership storage for n references. This fixture has three elements and does no external input. Compact syntax changes source structure; it does not change list access contracts or provide a performance optimization. Compile and launch with Java 25.
Common Mistakes
- The source file name is part of the launch contract.
- Instance fields are initialized before this instance main runs.
- Do not compile Java 25 syntax with an earlier release target.
