Почему апплетам не нужен main ()? - PullRequest
11 голосов
/ 31 мая 2009

Это относится к подклассам Апплета, Сервлета, Мидлета и т. Д.

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

Ответы [ 5 ]

17 голосов
/ 31 мая 2009

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

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

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

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

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

public void init() {}

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

12 голосов
/ 31 мая 2009

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

3 голосов
/ 31 мая 2009

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

2 голосов
/ 31 мая 2009

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

0 голосов
/ 17 октября 2014

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

...