Spring framework использует, пожалуй, весь набор динамических свойств Java: Spring Boot приложения грузятся своим загрузчиком классов, повсеместно используются reflection, порождение и загрузка Java байт-кода на лету и т.д.
С другой стороны, в мире микросервисов набирает популярность статическая AOT компиляция Java приложений, для решения проблем быстрого старта, предсказуемой производительности, мгновенного достижения пиковой производительности. Становится интересно: может ли динамичность Spring framework ужиться со статической компиляцией?
Ответ — да, может. В этом докладе я на примере поддержки Spring Boot приложений в AOT-центричной JVM Excelsior JET покажу, как динамические свойства Java, используемые в Spring framework, могут работать совместно с AOT-порожденным машинным кодом.
Один из инициаторов и руководителей проекта Excelsior JET, сертифицированной реализации Java SE, разрабатываемой компанией Excelsior. Работая над проектом с 1997 года, поучаствовал в исследовании и разработке практически всех компонентов продукта от ядра до продуктовых свойств. В частности, является одним из авторов поддержки OSGI на уровне JVM в Excelsior JET, технологии Java Runtime Slim Down (модуляризация Java SE, реализованная в Excelsior JET с 2007 года), обоих верификаторов Java-байткода в Excelsior JET и многого другого.