Ответ 1
Вы можете использовать одну из этих фреймворков, если хотите написать код, который работает в сети.
Например, если вы собираетесь написать многопользовательскую видеоигру, "настроить Java-программу... для отправки потока для каждого запроса", вероятно, не вариант; жонглирование тем, что многие потоки феноменально сложны, и он работает плохо. Не говоря уже о том, что "просто порождать пучок потоков" отсутствует куча инструментов управления, которые Twisted et. и др. имеют, например, twistd
, который обрабатывает ведение журнала, демонанизацию, запуск и завершение работы и т.д.
Или, если вы хотите написать систему автоматизации построения, возможность асинхронно вызывать и контролировать подпроцессы. Если вы запускаете процесс асинхронно, вы можете легко убить этот процесс и изящно разобраться с его выходом. Если вы создадите его, запустив поток и заблокировав его в этом потоке, вы не сможете его легко остановить, так как остановка потока по своей сути небезопасна.
EventMachine и Twisted могут использоваться для написания программ на стороне клиента; возможно, вы пишете приложение с графическим интерфейсом, которое не является веб-сайтом, и вы хотите использовать ту же самую реализацию протокола на клиенте и сервере.
Поскольку вы можете использовать асинхронные фреймворки во множестве различных контекстов, возможно, вы захотите использовать его в веб-приложении просто потому, что у вас есть существующий код библиотеки, написанный для какого-либо другого приложения, использующего вашу инфраструктуру async, которую вы хотите использовать. Или вы можете захотеть повторно использовать код веб-приложения в каком-то гипотетическом будущем не-веб-приложении. В этом случае это не так уж сильно отличается от использования Apache или Tomcat или что-то в плане функциональности, это просто дает вам более общий, повторно используемый способ организации вашей программы.