새로운 JRE 버전은 오래된 JDK 버전으로 컴파일된 Java 프로그램을 실행할 수 있습니까?
Java 버전 1.6 및 1.7로 컴파일된 Java 프로그램 및 관련 라이브러리 실행 시 문제가 발생합니까?(1.7을 사용하여 컴파일하는 반면 일부 라이브러리는 1.6을 사용하여 컴파일된 경우) 및 프로그램 전체를 1.7 JRE로 실행하는 데 문제가 발생합니까?
이미 답변한 바와 같이 대부분의 제품과 3Drd 파티 라이브러리는 정상적으로 작동합니다.그러나 JDK 버전 간에 바이너리 비호환성(이전 JDK를 사용하여 컴파일된 클래스 파일이 새로운 JVM에서 실행되지 않는 경우)이 도입된 경우는 매우 드물었습니다.
버전 간 Oracle Java 비호환성 공식 목록:
- Java SE 8 이후 Java SE 9에서
- Java SE 7 이후 Java SE 8에서
- Java SE 6 이후 Java SE 7에서
- Java SE 5.0 이후 Java SE 6에서
- Java SE 1.4.2 이후 Java SE 5.0으로 변경
호환성 도구
JDK 9와 함께 패키징된 jdeprscan이라는 툴이 있습니다.이 툴은 호환성을 검증하고 코드 내에서 사용되지 않는API를 나열하여 대체안을 제안합니다(!).대상 JDK 버전(JDK 9, 8, 7, 6에서 사용 가능)을 지정할 수 있으며 대상 버전에 고유한 비호환성이 나열됩니다.
라이브러리의 경우 추가 설명:
소프트웨어 타깃의 JRE 버전에 대해 라이브러리의 최신 안정 릴리스 버전을 사용하는 것이 합리적인 경험 규칙입니다.분명히 이 규칙에서 많은 예외가 발견되겠지만 일반적으로 공개적으로 사용 가능한 라이브러리의 안정성은 시간이 지남에 따라 높아집니다.
종속성 버전을 변경할 때는 당연히 API 호환성과 버전 관리를 고려해야 합니다.
대부분의 일반적인 의존관계는 그러한 정보를 이용할 수 있어야 하는 웹페이지를 갖게 됩니다.
다만, 조금 더 알기 어려운 것을 사용하고 있는 경우는, 어느 JRE가 컴파일 되고 있는 클래스인지 판별할 수 있습니다.
다음은 클래스 버전을 확인하는 방법에 대한 훌륭한 답변입니다.먼저 JAR 파일의 압축을 풀어야 할 수 있습니다.
Java의 마법이 바로 하위 호환성이기 때문에 문제가 발생하지 않습니다.Java 1에서 Java 8로 거의 모든 코드를 실행할 수 있습니다.Java 6 코드가 Java 8 Runtime에서 실행되지 않을 이유는 없습니다.
흥미로운 점은 Java 1.4로 작성된 애플리케이션의 경우 나중에 실행 시 속도가 향상된다는 것입니다.이는 Java가 "Java"로 알려진 언어뿐만 아니라 JVM(Java 가상 머신)도 지속적으로 발전하고 있기 때문입니다.최신 JVM에서 예상한 대로 10여 년 전의 소스 코드를 아직 보유하고 있습니다.
예를 들어 Java 5 VM을 대상으로 하는 경우 Java 8 SDK 툴을 사용하여 이를 수행할 수 있습니다.버전 5 VM이 버전 8 VM이 지원하는 모든 기능을 지원하지 않을 수 있다는 점을 염두에 둔다면 최종적으로 지원할 대상 VM을 지정할 수 있습니다.
Java 5에서 작성한 코드를 새로운 Java 8 런타임과 비교하여 테스트했습니다.모든 것이 예상대로 동작합니다.그래서 지금은 언어와 실행 시간이 더 강력해졌지만 과거의 투자를 계속 사용할 수 있습니다.이것만으로도 자바는 기업에 있어서 훌륭한 개발 선택지가 됩니다.
언급URL : https://stackoverflow.com/questions/10895969/can-newer-jre-versions-run-java-programs-compiled-with-older-jdk-versions
'source' 카테고리의 다른 글
php 세션 ID는 얼마나 고유합니까? (0) | 2022.11.08 |
---|---|
주간 및 야간 근무자 수에서 IN 및 OUT을 필터링하는 방법은 무엇입니까? (0) | 2022.11.08 |
JDK NetBeans 실행 상태를 설정하려면 어떻게 해야 합니까? (0) | 2022.11.08 |
debian jesse에 libmariadbclient-dev를 설치하다 (0) | 2022.11.08 |
JVM 인수를 통한 log4j 구성 (0) | 2022.11.08 |