Как работает метод main

Всем привет ребят, я прочитал в книге про метод main, как я понял это запуск/старт Java приложения, но я новичок и есть пару вопросов:

  1. Как работают классы где нет метода main;
  2. Как происходит взаимодействие других классов где нет метода main и я ещё видел приложение на Spring framework где в методе main вообще одна строка, но там же запускаются команды которые будут отрабатывать в приложении

Ответы (1 шт):

Автор решения: Mike Lazko

По пробую провести аналогию с реальным миром, возможно так будет понятней.

  1. Метод main - это как дверной проем в квартиру, в которую вы хотите что то передать или забрать. А объекты классов - это все предметы в этой квартире, поэтому в каждом классе не требуется наличие дверного проема. Возвращаясь опять к практике, чтобы операционная система могла запустить процесс(программу), ей надо знать точный адрес дверного проема, это и есть main функция которая стандартизирована для исполняемых файлов и динамических библиотек. Очень часто присутвует в явном виде почти во всех языковых платформах, будь то Java, C#, C++, Python.

    Класс - это как лейкало для объектов, чтобы создать объект его надо проинициализировать, и после этого вы можете с ним выполнять любые операции которые позволяет этот класс, вызывая методы или обращаясь к полям. Зайдя в квартиру находим нужное лейкало, создаем себе объект и вуаля, делаем с ним что надо.

  2. Например в случае с динамическими библиотеками, это дверь есть но она скрыта за кулисами, так как основная цель библиотеки переиспользовать классы, поэтому это квартира в которую передать ни чего нельзя но выносить можно. Что касается примера со Spring то не столь важно сколько строк в самой функции важно что при запуске процесса, main функция передаст управление во фреймворк, а феймворк проинициализирует необходимые вещи.

    Как если бы пришел человек из ростелекома провел вам кабель для интернета в квартиру, вы подключили к компьютеру и после этого можете получать сообщения от друзей. Операционная система при запуске процесса передала в main функцию все аргументы которые были указаны при запуске, например порт, а Spring начал слушать все сообщения на этом порту.

Надеюсь удалось прояснить ситуацию, а не еще больше запутать. С аналогиями всегда 50 на 50 шансы)

→ Ссылка