본문 바로가기

Solution/면접

[개발자 면접] 다양한 개발언어중 자바를 사용하는 이유

728x90

Q. 자바의 사용이유에 대해서 설명? 

> # 플랫폼 독립성, 메모리 사용량 적음.

매우 다양한 플랫폼을 갖는 가전제품을 위해 플랫폼 독립적인 언어가 필요했는데, 가전제품에 들어가는 장치는 매우 적은 양의 메모리를 사용해야 했다. - 플랫폼 독립적이면서 메모리 사용량이 적은 언어oak를 인터넷 환경에 적합하도록 발전시켜 만들어졌다.

 

Write Once Run AnyWhere(WORA)

c/c++ 등 컴파일러가 기계어 코드로 변환할 때 프로그램이 실행될 대상 컴퓨터의 CPU와 운영체제에 종속저인 코드로 변환하는데, 그러면 다른 플랫폼(CPU가 다르거나 OS가 다르면)에서는 다시 컴파일하여 플랫폼에 맞도록 코드를 수정해야 한다. 하지만 JAVA는 개발 단계에서 플랫폼에 독립적으로 설계되어 JVM만 있으면 어디서나 자바로 작성된 프로그램에 동일한 실행환경을 제공하며 동일한 실행 결과를 기대할 수 있다. 이를 Write Once Run AnyWhere이라고 한다.

-> 한번 작성된 자바코드는 Intel CPU를 탑재한 리눅스나 Mac운영체제 의 APPLE PC나 무관하게 실행가능하다.


Q.  자바는 어떻게 플랫폼 독립성을 보장 할 수 있는가?

자바 플랫폼 독립성을 가능하게 하는 것은 자바 가상기계바이트 코드 때문이다.

Hello.java 소스를 컴파일 하여 Hello.class 파일을 만드는 과정을 보면 , 바이트 코드는 자바 가상 기계에서만 실행되는 기계어로 어떤 CPU와도 관계없는 바이너리코드이다. 자바 컴파일러는 자바 소스 프로그램을 컴파일하여 바이트 코드로 된 클래스 파일을 생성한다. 이 클래스 파일은 어떤 운영체제를 탑재하든 CPU의 종류가 무엇인든 간에 JVM만 있으면 바로 실행이 가능하다. JDK는 자바 클래스 파일을 디어셈블 하여 바이트 구조를 볼 수 있는 도구를 제공한다.


Q. 자바 가상기계(JVM) 에 대해서 설명?

JVM 은 자바 가상기계로 소프트웨어다. 서로 다른 플랫폼에서 자바 프로그램이 실행되는 동일한 환경을 제공한다.

JVM은 플랫폼 종속성을 보장해준다.


Q.  C/C++ Java 의 실행환경과 개발 실행에 대해서 설명?

c/c++ 프로그램은 소스 프로그램을 컴파일 하여 .obj을 생성하여 링크 과정을 통해 목적파일들을 연결하여 하나의 실행 파일을 만든다. 링크과정에서는 c/c++라이브러리 함수들을 찾고 이 함수들의 목적 코드를 라이브러리 파일에서 꺼내 .exe파일에 삽입한다. .exe파일에 실행에 필요한 모든 코드가 다 들어있어서 .exe파일만 있으면 실행히 가능하다는 장점이 있찌만 exe의 크기가 매우크면, 메모리가 작은 컴퓨터에서는 실행조차 할 수 없다는 문제점이 있다.

 

 하지만 자바 프로그램은 여러 소스 파일을 나누어 작성하고 컴파일을 통해 클래스 파일을 생성한다. 여기선 링크 과정이 없다. 개발자가 여러 클래스 파일 중 하나를 지정하여 실행을 시작시키면, JVM은 그 클래스 파일을 메모리에 로딩하고 실행한다. 실행도중 다른 클래스 파일이나 자바 API의 클래스 파일이 필요하면 JVM이 클래스 파일을 로딩하고 실행한다.

 

 이런 방식으로 실행이 되기 떄문에 처음부터 모든 클래스 파일을 로딩해 놓을 필요 없이 당장 실행할 클래스 파일만 로딩하여 실행할 수 있어 적은 량의 메모리를 가진 컴퓨터에서 얼마든지 큰 자바 응용프로그램을 사용할 수 있다.

이것이 플랫폼 독립성과 함께 달성하고자 하는 자바언어의 본질이다. 메모리가 충분한 PC에서는 실행중에 클래스 로딩으로 인한 신간을 줄이기 위해, 사용자 클래스 파일과 필요한 자바 클래스 파일을 미리 로딩하여 둔다.

 

자바

- 자바는 컴파일러가 바로 바이트 코드를 생성하며 링크과정이 없다.

- 바이트코드는 JVM에서만 실행 가능하다.

- 자바는 실행시간에 필요한 클래스들이 JVM에 의해 링크되며 클래스로더가 필요한 클래스를 동적으로 로딩한다.

- ClassLoader 객체를 이용하여 개발자가 직접 클래스를 로딩할 수 있다.


Q.  JDKJRE의 차이에 대해서 설명?

JDKJava Development kit로 자바 개발자에게 무료로 배포하는 소프트웨어이고 자바 컴파일러 등의 개발 도구와 JRE(Java Runtime Enviroment) 로 구성 되어 있습니다. JRE는 자바 응용프로그램이 실행될 때 필요한 소프트웨어들로 개발자가 아닌 일반 사용자의 경우 JRE만 필요합니다. JDK가 사용자 디렉터리에 설치되면 bin 디렉토리에 주요한 개발 소프트웨어가 들어 있다.

 
728x90