Почему апплеты не нужны main()?

Это относится к подклассам Applet, Servlet, Midlet и т.д.

Зачем им не нужен main()? Если бы я хотел создать класс Craplet, начинающийся с init() или что-то подобное, это плохой дизайн или как я могу это сделать?

Ответ 1

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

Эти типы приложений живут в контейнерах, и поэтому их точки входа определяются стандартами, к которым должны придерживаться те контейнеры. Дизайнеры этих стандартов решили не называть главную точку входа. Вы поместили бы свою функциональность в переопределенный метод. Все апплеты имеют следующие четыре метода:

public void init();
public void start();
public void stop();
public void destroy();

У них есть эти методы, потому что их суперкласс java.applet.Applet имеет эти методы.

В суперклассе нет ничего, кроме фиктивного кода:

public void init() {}

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

Ответ 2

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

Ответ 3

'main' - это просто соглашение, которое обычно поддерживает C, С++ и java, но, например, если вы пишете C или С++ непосредственно против Win32 API, вам не нужно иметь main(), но вместо этого у вас есть WinMain.

Ответ 4

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

Ответ 5

Апплет не использует main(), потому что, когда апплет загружается, он автоматически вызывает определенные методы класса апплета для запуска и выполняет код апплета. и апплет имеет свой собственный жизненный цикл.