Для Java VM файлы классов являются единственным способом доставки исполняемого кода Java, а библиотеки Java - это всего лишь разновидности контейнеров, содержащих файлы классов.
Когда Java создавалась, существовало прямое сопоставление уровня источникаКлассы Java и файлы классов, поэтому единственный способ создать такой файл класса, содержащий исполняемый код, состоял в том, чтобы объявить класс.
В настоящее время отношение не такое строгое, в Java существуют неклассовые артефактыязык, который может привести к генерации файла класса, например, аннотации пакета или объявления модуля, кроме того, классы могут генерироваться средой выполнения, как для лямбда-выражений.
Итак, в принципе , может существовать новая языковая конструкция, позволяющая определять автономный метод main
без объявления класса, который за кулисами компилируется в файл класса.Но так как типичное приложение имеет только одну точку входа (и без именованного класса хостинга, возможность определить больше, чем один, все равно будет потеряно), это не оправдывает создание новой языковой конструкции.