Обратите внимание, что вы имеете в виду среду (например, веб, рабочий стол, сервер и т. Д.), Но ...
Работа в обратном направлении:
3: запланированные задачи
Вы можете добиться этого в любом контейнере Java с помощью библиотеки Quartz Scheduler . Это позволяет планировать события в стиле CRON.
1-2: горячее развертывание
Тогда вопрос в том, где вы хотите развернуть и как справиться с горячим развертыванием. Другие ответы упомянули JRebel и OSGI, которые будут работать. Если вы хотите сверхбыстрого развертывания (например, сохранить код и он доступен) и разместить его в веб-контейнере, используйте Play Framework . Он использует Quartz, очень хорошо реализует Запланированные задания .
Например (из Play docs):
@Every("1h")
public class Bootstrap extends Job {
public void doJob() {
List<User> newUsers = User.find("newAccount = true").fetch();
for(User user : newUsers) {
Notifier.sayWelcome(user);
}
}
}