Q. JAVA 버전이 달라지면 되던 프로그램이 안되기도 하나요??

JS2 2019. 11. 03.


JAVA 버전이 달라지면 되던 프로그램이 안되기도 하나요??

저한테 자바 1.6으로 되어있던 프로그램이 있습니다.

이걸 1.8 버전으로 올렸더니 프로그램 내부에 경고가 갑자기 엄청나게 나오며,

정상적으로 실행되던 파일들이 돌아가질 않습니다.

현재는 다시 1.6으로 다운그레이드 해둔 상태인데....

보안 및 기타 문제로 1.8로 올려야하는 상황입니다.

다운그레이드 하여 있던 기능이 없어진것도 아닌데 버전업하였다고 안되는 경우가 있을수있나요??

또한 이러한 경우 조치법은 어떻게 해야 할지 궁금합니다.

공유하고 보상받기 ♥︎
댓글 4
하늘늑대 2019.11.07 23:08

자바의 경우, 바이트코드 53(Java 9) 이상과 바이트코드 52(Java 8,1.8) 이하만 상호호환이 되지 않습니다.

만약 프로그램이 1.6 이하의 문법만을 사용해 작성된 경우, 1.6 이상의 모든 자바 버전에서 작동하지만

바이트코드 53(Java 9) 이상에서 작성된 프로그램의 경우, 1.8 이하의 자바 버전에서는 작동되지 않습니다.

현재 질문을 올리신 사항으로는 구버전에 있던 코드가 업데이트로 인해 제거된 경우로 보이며,

프로그램을 개발한 당사자에게 가셔서 수정을 요청하셔야 할 듯 합니다.

프로그램이 오픈소스일 경우 코드를 가져와서 1.8에서 컴파일하시는것도 방법입니다만, 코드 수정이 필요할것이라고 봅니다.

JS2 2019.11.08 10:50

하늘늑대님 답변 감사드립니다!

버전별로 바이트코드 라는게 다르다는걸 처음 알았네요!

그럼 버전차이가 심한경우 업그레이드, 다운그레이드 모두 정상작동하지 않는 경우가 생기겠네요

이런 경우 그럼 말씀하신것처럼 해당 버전으로 소스코드를 가져가서 다시 컴파일 하면 보통 자동으로 빌드가 되는편인가요??

하늘늑대 2019.11.08 10:55

이 경우에는 두가지로 나뉩니다.

1. 정상적으로 컴파일될때.

정상적으로 컴파일되면 기능 확인 후 문제가 없으시다면 그대로 사용하셔도 됩니다.

2. 컴파일조차 되지 않을때

사용된 메서드중 업데이트로 삭제되거나 변경된 메서드가 있을 수 있습니다.

해당 메서드들의 대체 가능한 메서드를 찾으셔야 합니다.

보통의 경우, 스택오버플로우에 대부분의 답변이 정리되어있으니 구글에 "java 메서드명 replacement"라고 검색하시면 대부분의 대체제를 찾으실수 있습니다.

JS2 2019.11.08 11:16

하늘늑대님 좋은 답변 감사드립니다.

업그레이드때 참고하도록 하겠습니다.

특히나 키워드를 콕 찝어서 말씀주셔서 감사합니다!^^

1개의 답변이 있습니다.

질문자 & 큐레이터 채택
김성주보험설계사 답변자인증
한국보험금융(주) 파파라이프 지사 2019. 11. 03 100%의 채택

Java는 버전간에 이전 버전과 호환되지만

모든 버전에서 이전 버전과의 호환성은 간단하지 않습니다.

만약 프로젝트가 개발 중이시라면 사용하는 개발도구를 최신 버전으로 업데이트 하시구요,

JDK , IDE 와 같은 개발 도구도 업데이트 해주세요

그리고 빌드하시면서 생기는 에러로그를 자세히 보시고, 그에 맞게 에러를 해결하시면서

해결하는 방법밖에 없습니다 ㅠ.ㅠ

댓글 2
별님과달님 2019.11.05 22:04

추가적으로 이건 지바뿐만이아니라 다른언어들도 버전업하면서 소스수정을 해야하는 경우바 만씁니다.

JS2 2019.11.08 10:47

이전버전과 편하게 호환이 가능해야 사용자들도 새 버전이 나올때마다 즉각적으로 버전업을 할텐데....

왜 버전업이 불편하게 이렇게 제공하는지 궁금하네요ㅠㅠ