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

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

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


person Lucky    schedule 31.05.2009    source источник


Ответы (5)


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

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

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

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

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

public void init() {}

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

person ojblass    schedule 31.05.2009

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

person kgiannakakis    schedule 31.05.2009

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

person JustJeff    schedule 31.05.2009
comment
У меня есть претензии к этому условию, но +1 за истину ... Я так злюсь, когда имена - лучший выбор ... почему они не назвали его главным без аргументов? - person ojblass; 31.05.2009
comment
По крайней мере, WinMain упоминал себя как точку входа. Но я полагаю, что это другое, потому что WinMain на самом деле был ответственным, а не подчиненным. Думаю ты прав. - person ojblass; 31.05.2009

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

person John Feminella    schedule 31.05.2009

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

person Aishwarya Hungund    schedule 17.10.2014