Разное

Main java метод: Всё о методе main()

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

Вопрос задан

Изменён 2 года 1 месяц назад

Просмотрен 150 раз

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

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

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

  1. Метод main — это как дверной проем в квартиру, в которую вы хотите что то передать или забрать.

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

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

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

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

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

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

4

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Вопрос 9 (функция main)

18 мая 2018 (12:45:00)  934

«Что вы знаете о функции main, какие обязательные условия ее определения?»

1. Всякое приложение должно содержать метод с именем main . Он может быть один на все приложение или содержаться в нескольких его классах. Метод main() записывается как обычный метод, может содержать любые описания и действия, но он обязательно должен быть открытым (public), статическим (static), не иметь возвращаемого значения (void). Его аргументом обязательно должен быть массив строк (String[]). По традиции этот массив называют args, хотя имя может быть любым. Туда передаются параметры из командной строки, с помощью которых можно предоставить приложению нужную информацию или настроить его для запуска нужным образом.

public static void main (String args []) {}

скрытый текст1.1 Эти особенности возникают из-за того, что метод main() вызывается автоматически исполняющей системой Java в самом начале выполнения приложения. При вызове интерпретатора java указывается класс, где записан метод main(), с которого надо начать выполнение. Поскольку классов с методом main() может быть несколько, можно построить приложение с дополнительными точками входа, начиная выполнение приложения в разных ситуациях из различных классов.

1.1.1 Когда вы запускается java.exe (или javaw.exe в Windows), на самом деле происходит несколько вызовов Java Native Interface (JNI). JNI — это инструмент, который мы используем, когда нам приходится соединяться между миром виртуальной машины (JVM) и миром C, С++ и т.д. java.exe — это простое приложение C, которое анализирует командную строку, создает новый массив String в JVM для хранения этих аргументов, анализирует имя класса, указанное при вызове как содержащее main(), использует вызовы JNI для поиска самого метода main(), затем вызывает метод main(), передавая вновь созданный строковый массив в качестве параметра.

1.2. Иногда метод main() заносят в каждый класс с целью отладки. В этом случае в метод main() включают тесты для проверки работы всех методов класса.

2. При вызове интерпретатора java можно передать в метод main() несколько параметров, которые интерпретатор заносит в массив строк. Эти параметры перечисляются в строке вызова java через пробел сразу после имени класса. Если параметр содержит пробелы, надо заключить его в кавычки. Кавычки не будут включены в параметр, это только ограничители.

2.1. Примеры вызова main из класса Echo и соответствующих им значений параметра args:

java Echo Hello XXI century: массив из трех элементов Hello, XXI, century
java Echo «Hello XXI century»: массив из одного элемента Hello XXI century
java Echo Hello «XXI century»: массив из двух элементов Hello, XXI century

  • #типы данных, переменные, операторы, циклы, массивы
  • #Java
  • #программирование
  • #работа

Поделиться в соцсетях

404: Страница не найдена

Страница, которую вы пытались открыть по этому адресу, похоже, не существует. Обычно это результат плохой или устаревшей ссылки. Мы приносим свои извинения за доставленные неудобства.

Что я могу сделать сейчас?

Если вы впервые посещаете TechTarget, добро пожаловать! Извините за обстоятельства, при которых мы встречаемся. Вот куда вы можете пойти отсюда:

Поиск
  • Узнайте последние новости.
  • Наша домашняя страница содержит самую свежую информацию о Java-разработке.
  • Наша страница «О нас» содержит дополнительную информацию о сайте, на котором вы находитесь, TheServerSide.com.
  • Если вам нужно, свяжитесь с нами, мы будем рады услышать от вас.

Просмотр по категории

SearchAppArchitecture

  • Признаки антипаттерна «Золотой молот» и 5 способов его избежать

    Антипаттерн «Золотой молот» может подкрасться к команде разработчиков, но есть способы его обнаружить. Изучайте знаки, а также некоторые…

  • Почему контрактное тестирование может быть необходимо для микросервисов

    Разработчики сталкиваются с многочисленными проблемами, пытаясь выполнить традиционное сквозное интеграционное тестирование микросервисов. Контракт…

  • Растущая роль разработчиков, ориентированных на данные

    Больше, чем когда-либо, растущая зависимость разработчиков от данных, источников данных и пользователей подталкивает разработчиков к пониманию ИТ-покупок …

ПоискSoftwareQuality

  • Инструменты Atlassian Open DevOps объединяют больше рабочих процессов

    Atlassian утверждает, что по мере роста числа поставщиков комплексных инструментов DevOps пользователям нужен выбор; клиенты говорят, что интеграция сторонних инструментов — это …

  • Инструмент управления API с низким кодом борется со сложностью с оговорками

    Новый инструмент управления API с низким кодом может принести такие преимущества, как повышенная скорость, меньшее количество ошибок кодирования и более широкий доступ. Но…

  • Обновления безопасности GitHub и расширение Copilot наделали много шума

    Новые функции, представленные на GitHub Universe, включают частные каналы для вопросов безопасности и Copilot для бизнеса, которые могут упасть . ..

SearchCloudComputing

  • Эксперты по облачным технологиям и их прогнозы AWS re:Invent 2022

    Поскольку AWS готовится к своему крупнейшему событию года, наши участники предсказывают, что поставщик облачных услуг представит на re:Invent 2022.

  • Сравните Amazon Lightsail и EC2 для нужд вашего веб-приложения

    Не всем разработчикам нужны или нужны все возможности Amazon EC2. Узнайте, подходит ли сокращенный и упрощенный Amazon Lightsail…

  • VMware добавляет инструменты управления несколькими облаками

    VMware представила HCX+, управляемую услугу для мультиоблачных центров обработки данных, а также возможности Kubernetes для частных облаков и …

ПоискБезопасность

  • Основные проблемы кибербезопасности метавселенной: как их решить

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

  • Вредоносная программа Magecart угрожает продавцам Magento

    Исследователи Sansec говорят, что до 38% коммерческих клиентов, использующих платформы Adobe Commerce и Magento, могут быть заражены …

  • 5 лучших инструментов сканирования уязвимостей для групп безопасности

    Используйте эти пять инструментов сканирования уязвимостей, чтобы найти слабые места и потенциальные эксплойты в веб-приложениях, ИТ и облаке …

ПоискAWS

  • AWS Control Tower стремится упростить управление несколькими учетными записями

    Многие организации изо всех сил пытаются управлять своей огромной коллекцией учетных записей AWS, но Control Tower может помочь. Услуга автоматизирует…

  • Разбираем модель ценообразования Amazon EKS

    В модели ценообразования Amazon EKS есть несколько важных переменных. Покопайтесь в цифрах, чтобы убедиться, что вы развернули службу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *