Краткий ответ: часто да, вы получите одно приложение на JVM.Длинный ответ: JVM можно использовать таким образом, и это может быть лучшим вариантом, но это не обязательно.
Все зависит от того, что вы считаете «приложением».IDE является хорошим примером приложения, которое представляется конечным пользователям (т.е. нам) как единое целое, но на самом деле состоит из нескольких базовых приложений (компиляторы, тестовые прогоны, инструменты статического анализа, упаковщики, менеджеры пакетов, проект /инструменты управления зависимостями и т. д.).В этом случае существует множество приемов, которые IDE использует, чтобы гарантировать, что пользователь испытывает интегрированный опыт, а также (в некоторой степени) защищен от отдельных капризов базовых инструментов.Один из таких приемов - сделать некоторые вещи в отдельной JVM, взаимодействуя либо через текстовые файлы, либо с помощью средств отладки на уровне приложений.
Серверы приложений (Wildfly, Glassfish, Websphere, Weblogic,и т. д.) - это приложения, смысл которых заключается в том, чтобы действовать в качестве контейнеров для запуска других приложений. В этом случае, с одной точки зрения, для каждого приложения существует одна JVM (т. е. одна JVM используется для запуска всего сервера приложений), нона самом деле это несколько приложений, содержащихся в этой JVM по отдельности, каждое из которых логически отделено друг от друга в своем собственном загрузчике классов (уменьшая вероятность случайных перекрестных помех в процессе).
Таким образом, все зависит от того, что высчитать application
.Если вы просто говорите о «вещи, которая запускается, когда вызывается main ()», то вы смотрите на одно приложение для каждой JVM - когда ОС запускает JVM, JVM запускает метод public static void main()
отдельного класса.
Но как только ваши приложения становятся более сложными, ваши границы становятся более размытыми.В среде IDE, такой как Intellij или Eclipse, будет использоваться большая часть того же материала, что и в javac, либо в той же JVM, либо в другой, а также для выполнения другой работы (например, перерисовки экрана).А пользователи веб-приложения на сервере приложений (совместно используемой JVM) могут фактически использовать то же «базовое» приложение, которое можно использовать локально через командную строку.