on
1주차 피드백
해당 글을 백기선 님의 자바 스터디 1주차 과제를 공부하고 공유하기 위해서 작성되었습니다.
놓친 부분
Q. 자바 상위 버전으로 컴파일을 할 경우 하위 버전으로 실행이 가능한가?
A. 아니오. 대부분의 경우 java.lang.UnsupportedClassVersionError
가 발생합니다.
Java 파일이 실행하려는 버전(런타임 버전)과 컴파일러 버전이 다른 경우 위와 같은 에러가 발생한다.
보통 높은 컴파일러 버전에서 낮은 런타임 버전으로 실행하는 경우에 발생하는데, 반대의 경우는 가능하다.
낮은 컴파일러 버전으로 컴파일하고 높은 런타임 버전으로 실행이 되는 것을 backward compatible(하위 호완성)이라
고 한다.
하위 호완성이 되지 않는 경우도 있는데 이를 Deprecated 되었다고 하고, 각 버전 Release Note에 리스트가 나와있다.
이러한 문제를 해결하기 위해서는 동일한 버전으로 컴파일하고 실행을 하거나, 호환성 옵션을 주기 위해 컴파일 시 다음과 같이 작성하면 된다.
$ javac -source <version> -target <version> <java filename>
추가 과제
javac 옵션
실제로 사용될 법한 옵션들만 확인했다. 더 자세한 javac의 standard options은 공식 문서에서 볼 수 있다.
$ javac <options> <source files>
-cp path or -classpath path
컴파일러가 참조할 클래스 파일들을 찾기 위해서 컴파일 시 파일경로를 지정해주는 옵션이다.
해당 옵션을 쓰지 않는 경우(classpath가 지정되지 않는 경우) 사용자 클래스 경로는 현재 디렉터리가 된다.
-d directory
클래스 파일의 대상 디렉터리를 설정한다. javac가 별도의 디렉터리를 만들지 않기 때문에 디렉터리는 미리 만들어둬야 한다.
-deprecation
사용되지 않는 멤버 또는 클래스의 사용 또는 오버라이드에 대한 설명을 표시한다.
해당 옵션이 없는 javac는 사용되지 않는 멤버나 클래스를 사용하거나 재정의하는 소스 파일의 요약을 보여준다.
-g
로컬 변수를 포함한 모든 디버깅 정보를 생성한다.
-g:none
: 디버깅 정보를 생성하지 않는다.
-g:{source, lines, vars}
: 소스파일 정보, 라인 정보, 지역변수의 디버깅 정보를 생성한다.
-source release
소스 코드의 버전을 지정한다.
-target version
가상 시스템의 지정된 릴리스를 대상으로 하는 클래스 파일을 생성한다. 클래스 파일은 지정된 대상 및 이후 릴리스에서 실행되지만 이전 릴리스의 JVM에서는 실행되지 않는다.
Reference
Comments
JAVA STUDY HALLE 의 다른 글
-
15주차 피드백 06 Mar 2021
-
15주차 과제: 람다식. 28 Feb 2021
-
14주차 피드백 27 Feb 2021
-
14주차 과제: 제네릭. 22 Feb 2021
-
13주차 피드백 20 Feb 2021
-
13주차 과제: I/O. 08 Feb 2021
-
12주차 피드백 06 Feb 2021
-
12주차 과제: 애노테이션. 01 Feb 2021
-
11주차 피드백 30 Jan 2021
-
11주차 과제: Enum. 24 Jan 2021
-
10주차 피드백 23 Jan 2021
-
10주차 과제: 멀티쓰레드 프로그래밍. 18 Jan 2021
-
9주차 피드백 16 Jan 2021
-
9주차 과제: 예외 처리. 10 Jan 2021
-
8주차 피드백 09 Jan 2021
-
8주차 과제: 인터페이스. 03 Jan 2021
-
7주차 피드백 02 Jan 2021
-
7주차 과제: 패키지. 28 Dec 2020
-
6주차 피드백 27 Dec 2020
-
6주차 과제: 상속. 21 Dec 2020
-
5주차 피드백 20 Dec 2020
-
5주차 과제: 클래스. 14 Dec 2020
-
4주차 피드백 13 Dec 2020
-
4주차 과제: 제어문. 30 Nov 2020
-
3주차 피드백 29 Nov 2020
-
3주차 과제: 연산자. 22 Nov 2020
-
2주차 피드백 21 Nov 2020
-
2주차 과제: 자바 데이터 타입, 변수 그리고 배열. 15 Nov 2020
-
1주차 피드백 15 Nov 2020
-
1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. 08 Nov 2020