(자바 8) 바이너리 호환성, 소스 호환성, 동작 호환성

* 뭔가를 바꾼 이후에도 에러 없이 기존 바이너리가 실행될 수 있는 상황을 바이너리 호환성이라고 한다. (바이너리 실행에는 인증, 준비, 해석 등의 과정이 포함된다.)
예를들어 인터페이스에 메소드를 추가했을 때 추가된 메소드를 호출하지 않는 한 문제가 일어나지 않는데 이를 바이너리 호환성이라고 한다.

간단히 말해, 소스호환성이란 코드를 고쳐도 기존 프로그램을 성공적으로 재컴파일할 수 있음을 의미한다. 예를들어 인터페이스에 메소드를 추가하면 소스 호환성이 아니다. 추가한 메소드를 구현하도록 클래스를 고쳐야 하기 때문이다.

마지막으로 동작호환성이란 코드를 바꾼 다음에도 같은 입력값이 주어지면 프로그램이 같은 동작을 실행한다는 의미이다. 예를들어 인터페이스에 메소드를 추가하면 프로그램에서 추가된 메소드를 호출할 일이 없으므로(혹은 우연히 구현 클래스가 이를 오버라이드했을 수도 있다) 동작 호환성은 유지된다.

댓글

이 블로그의 인기 게시물

(네트워크)폴링방식 vs 롱 폴링방식

(ElasticSearch) 결과에서 순서 정렬

(18장) WebSocekt과 STOMP를 사용하여 메시징하기