java11 java, javac, javap, jar 명령어 간략 정리 스프링 프레임워크에서 지원하는 최소한의 자바버전은 8버전이다. 일부 메이븐 플러그인이 컴파일 버전을 고려하지 않고 만들었다. 9이상 버전을 사용한 플러그인이 있음. 그래서 문제가 생길 수 있다. → java.lang.UnsupportedClassVersionError가 발생함. 이 경우에 8 버전으로 컴파일을 해야한다. cross-compiliation 옵션들을 이용할 수 있다 # 1.8 이전 버전으로 크로스 컴파일하는 경우 javac -bootclasspath "C:\Apps\Java\jdk1.8.0_31\jre\lib\rt.jar" \ -source 1.8 -target 1.8 com/Ellery/MajorMinorApp.java # 1.9 이후부터 javac --release 8 com/Ellery.. 2022. 4. 7. JVM 아키텍쳐 구성요소 JVM에 대한 정의는 해당 포스트를 참고해주세요. JVM이 동작하는 순서는 다음과 같다. (구성요소 - class loader, runtime data area, execute engine, JNI...) 자바 프로그램을 실행하면 JVM은 OS로부터 메모리를 할당한다. 자바 컴파일러(javac)가 자바 소스코드(.java)를 자바 바이트코드(.class)로 컴파일한다. Class Loader를 통해 JVM Runtime Data Area로 로딩한다. Runtime Data Area에 로딩 된 .class들은 Execution Engine의 인터프리터와 JIT 컴파일러를 통해 해석합니다. 해석된 바이트 코드는 Runtime Data Area의 각 영역에 배치되어 수행하며 이 과정에서 Execution En.. 2022. 4. 7. JDK, JRE의 차이 JRE(java runtime environment) = JVM + JAVA API 배포판의 목적은 자바 어플리케이션을 '실행'하는데 필요한 요소만을 제공하는 것. JVM과 핵심 라이브러리, 자바 런타임 환경에서 사용하는 프로퍼티 셋팅이나 리소스 파일만을 가지고 있다. 따라서 개발 관련 도구는 제공하지 않는다. (javac 등의 개발도구는 JDK에서 제공한다.) JDK = JRE + 개발툴(javadoc.exe, javac.exe, javap.exe, jar.exe...). 그런데 오라클에서 자바 9버전부터는 JDK만 제공하고 JRE를 따로 제공하지 않음. 자바9 부터 모듈시스템이 들어왔는데, 이를 이용해서 나만의 JRE를 만들 수 있다.(jLink를 이용해서 모듈의 서브셋을 구성하여 JRE 구현이 가능.. 2022. 4. 7. 이전 1 2 3 다음