일전에 컴파일을 정리하며 "Java는 컴파일 기반 언어 중 하나다."라고 정리하였는데 최근 강의에서 Java는 컴파일러와 인터프리터를 모두 수행하는 '하이브리드 언어'이다.라는 말을 듣게 되어 정리를 해보았다. 그럼 우선 Java에 대해 알아보기 전에 인터프리터와 컴파일러를 간단히 알아보자. 컴파일러(compiler) 고급언어는 실행하기 전 기계가 이해할 수 있는 기계어로 번역하는 작업이 필요하다. 이것을 컴파일이라고 한다. 이런 컴파일을 해주는 도구 또는 논리적인 장치를 '컴파일러'라고 한다. 컴파일러는 프로그램 전체를 스캔하여 이를 모두 기계어로 번역한다. 전체를 스캔하기 때문에 초기 스캔 시간을 오래 걸린다. 하지만 전체 실행 시간 기준을 두고 비교해 보면 오히려 인터프리터보다 빠르다. 왜냐하면 컴..
Language/Java
객체지향의 4대 특징을 정리하면서 추상화를 설명할 때 인터페이스를 예로 들어 설명을 했다. 공통적인 속성과 기능을 정의하기 위해 인터페이스를 사용한다라고 설명했다. 그럼 내가 알고 있는 인터페이스와의 개념과 사용용도를 생각해 보자. 인터페이스는 기술명세서 또는 다양한 구현체가 존재할 수 환경에서의 기초가 되는 틀정도 개념으로 사용하였다. 예를 들어 설명하자면 스프링 프로젝트에서 비즈니스 로직을 구현하는 Service단에서 기능 구현 전 인터페이스를 생성하여 기능의 명세만 먼저 작성하는 행위, DB가 정해지기 전 작업을 진행하기 위해 기준 Repository를 인터페이스 선언하여 구현하는 행위 등의 용도로 사용하였다. 이제 인터페이스의 특징과 기능을 정리해 보고 그것이 객체지향 관점에서 어떤 역할을 하는지..
객체지향은 4가지 특징을 가지고 있다. 이 4가지 특징에 대해서는 자주 들어 알고 있지만 올바르게 개념을 가지고 있는지는 확인할 필요가 있어 정리를 해보았다. 객체지향의 4가지 특징 캡슐화 상속 추상화 다형성 캡슐화 캡슐화란 변수나 메서드들을 캡슐로 감싸서 안 보이게 하는 정보 은닉 개념 중 하나이다. 객체의 개념에서 볼 때는 객체의 속성(Field)과 행위(Method)를 하나로 묶고, 실제 구현 내용의 일부를 외부에 감추어 은닉하여 외부에서 객체 내부에 어떤 속성이 있는지 완벽하게 알지 못해야 하는 것을 의미한다. 캡슐화는 객체의 속성과 행위를 하나로 묶음으로써 높은 응집도를 가지며, 객체의 내부 상태를 직접적으로 접근하지 못하게 막음으로써 결합도를 낮아지게 한다. public class Person..