공부기록/Spring

Spring Native

DGL 2021. 11. 24. 20:49

 

JVM 대신에 GraalVM을 사용하는 스프링이다.

 

왜 Native냐면 native image를 빌드의 결과로 생성한다

 

java 기반의 컴파일러와 vm을 구현

---

1. polyglot 여러 언어 실행가능

2. 메모리 사용량이 JVM보다 적음

3. 실행시간이 훨씬 빠름

 

JVM은 .java파일을 .class파일로 변경하고, 그 후 운영체제별 JVM이 해당 운영체제에 맞는 기계어로 변경하여 실행한다.

 

하지만, graalVM은 .java파일을 바로 해당 운영체제에 맞는 기계어로 변경한다.

 

그래서 실행시간이 훨씬 빠르게 된다. 

 

운영체제의 문제는 docker image로 만드는 것으로 해결된다.

 

항상 환경이 정해져있기 때문이다.

 

 

그러면 왜 JVM을 Graalvm으로 바꿔끼면 바로 spring을 사용할 수 있는 것이 아닐까?

무엇이 다른가 하면 그러한 실행과정의 변경에 대한 여파로 Reflection의 일부기능이 지원되지 않는다.

 

그런데 Spring은 Reflection을 기반으로 작동하는 framework이다.

 

그래서 해당 기능들이 모두 온전하게 작동하지 않아서(또는 다른 방식으로 작동해서) 수정할 부분이 필요해보인다

 

그래서 Spring native는 아직 개발중이고, stable한 버전이 없다.