code

최신 JRE 버전이 이전 JDK 버전으로 컴파일 된 Java 프로그램을 실행할 수 있습니까?

codestyles 2020. 11. 10. 08:08
반응형

최신 JRE 버전이 이전 JDK 버전으로 컴파일 된 Java 프로그램을 실행할 수 있습니까?


이것은 어리석은 질문 일 수 있지만 Java 버전 1.6 1.7 에서 컴파일 된 Java 프로그램 및 관련 라이브러리를 실행 하고 (일부 라이브러리는 1.6을 사용하여 컴파일하는 반면 1.7을 사용하여 컴파일 중임) 1.7 JRE에서 전체 프로그램을 실행하는 데 문제가 발생 합니까? ?


Java 8에서 Java 1의 거의 모든 코드를 실행할 수 있습니다. Java 6 코드가 Java 8 런타임에서 실행되지 않을 이유가 없습니다.

흥미로운 점은 Java 1.4로 작성된 응용 프로그램의 경우 이후 런타임에서 실행할 때 속도가 빨라진다는 것입니다. 이는 Java가 "Java"로 알려진 언어뿐만 아니라 JVM (Java 가상 머신)도 지속적으로 발전하고 있기 때문입니다. 최신 JVM에서 예상 한대로 여전히 작동하는 10 년 이전의 소스 코드가 있습니다.

예를 들어 Java 5 VM을 대상으로 지정하려는 경우 Java 8 SDK 도구를 사용하여 수행 할 수 있습니다. 버전 5 VM이 버전 8 VM의 모든 기능을 지원하지 않을 수 있다는 점을 염두에두면 궁극적으로 지원할 대상 VM을 지정할 수 있습니다.

새로운 Java 8 런타임에 대해 Java 5로 작성한 코드를 방금 테스트했으며 모든 것이 예상대로 작동하므로 이제 더 강력한 언어와 런타임이 있더라도 과거의 투자를 계속 사용할 수 있습니다. 그 자체만으로도 Java는 기업을위한 훌륭한 개발 선택입니다.


이미 대답으로 당신은 대부분 안전하고 대부분의 제품과 3 번째의 것입니다 단순히 작업의 라이브러리. 그러나이 존재 할 매우 드문 경우 바이너리 호환성 ( 이전의 JDK를 사용하여 컴파일 된 클래스 파일이 새로운 JVM에서 실행하는 데 실패 것들 ) JDK 버전 사이에 도입합니다.

버전 간 Oracle Java 비 호환성 공식 목록 :

호환성 도구

JDK 9 패키지 에는 호환성을 확인하고 더 이상 사용되지 않는 API를 코드 내에서 나열하고 대안 (!)을 제안하는 jdeprscan 이라는 도구가 있습니다. 대상 JDK 버전 ( JDK 9 , 8 , 76 에서 작동 함)을 지정할 수 있으며 대상 버전 과 관련된 비 호환성을 나열합니다.

라이브러리의 경우 추가 설명 :

합리적인 경험 규칙은 소프트웨어가 대상으로하는 JRE 버전에 대해 안정적인 최신 릴리스 버전의 라이브러리를 사용하는 것입니다. 분명히 당신은이 규칙에서 많은 예외를 찾을 수 있지만, 공개적으로 이용 가능한 라이브러리의 일반적인 안정성 일반적으로 시간이 증가한다.

종속성의 버전을 변경할 때 당연히 API 호환성버전 관리 를 고려해야합니다.

다시 말하지만, 가장 많이 사용되는 종속성에는 이러한 정보를 사용할 수있는 웹 페이지가 있습니다.

그러나 좀 더 모호한 것을 사용하는 경우 컴파일 된 종속성 내에서 어떤 JRE가 클래스인지 식별 ​​할 수 있습니다.

여기에 클래스 버전을 찾는 방법에 대한 훌륭한 답변이 있습니다. 먼저 JAR 파일의 압축을 풀어야 할 수 있습니다.

참고 URL : https://stackoverflow.com/questions/10895969/can-newer-jre-versions-run-java-programs-compiled-with-older-jdk-versions

반응형