[기술면접] Java에 대하여

송진영·2023년 8월 18일
0

기술면접

목록 보기
15/24

Java의 특징

  • 자바는 객체지향 언어이다.
    • 객체지향적으로 프로그래밍 하기 위해 여러 언어적 지원을 하고 있다 (캡슐화, 상속, 추상화, 다형성 등)
    • 객체지향 패러다임의 특성상 비교적 이해하고 배우기 쉽다 (C와 C++ 비교 시)
  • 인터프리터 언어이다.
    • 컴파일 언어인 동시에 인터프리터 언어이다.
    • 텍스트 소스를 컴파일 하여 2진 파일(클래스 파일)로 만든 다음 자바 런타임 클래스 파일을 인터프리트 하면서 실행한다.
    • 시스템에 무관한 2진 파일을 만듦으로써 자바는 컴파일 언어에 가까운 속도와 시스템 독립성을 얻을 수 있다.

Java의 장점

  • 이식성이 높다.
    • 서로 다른 실행환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것을 말한다.
    • 자바는 자바 실행환경(JRE))이 설치 되어 있는 모든 운영체제에서 실행이 가능하다.
  • 메모리를 자동으로 관리한다.
    • C++은 메모리에 생성된 객체를 제거하기 위해 개발자가 직접 코드를 작성해야 한다. 만약 이 작업을 성실하게 해주지 않는다면 프로그램은 불안전해지고 갑자기 다운되는 현상을 겪을 수도 있다.
    • 자바는 개발자가 직접 메모리에 접근할 수 없으며 메모리는 자바가 직접 관리한다.
    • 객체 생성 시 자동으로 메모리 영역을 찾아서 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector)를 실행시켜 자동으로 사용하지 않는 객체를 제거한다.
    • 덕분에 개발자는 메모리 관리의 수고를 덜고, 핵심 기능 코딩에 집중할 수 있다.
  • 멀티 스레드 구현이 쉽다
    • 운영체제에 따라 멀티 스레드를 구현하는 방법이 다르지만, 자바는 스레드 생성 및 제어와 관련된 라이브러리 API를 제공하므로 운영체제에 상관없이 멀티 스레드를 쉽게 구현할 수 있다.
  • 동적 로딩을 지원한다.
    • 실행 시에 모든 클래스가 로딩되는 것이 아니라 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점을 지닌다.
    • 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.
  • 분산환경을 지원한다.
    • 자바에는 TCP/IP 라이브러리가 기본적으로 포함되어 있다.
    • 또한 http와 htp 프로토콜을 기본적으로 지원한다.
  • 오픈소스 라이브러리가 풍부하다.
    • 자바는 오픈소스 언어이고 자바 프로그램에서 사용하는 라이브러리 또한 오픈소스의 양이 방대하다.
    • 고급 기능을 구현하는 코드를 작성하는 대신 검증된 오픈소스 라이브러리를 사용하면 애플리케이션을 다시 컴파일 할 필요가 있다.
    • 따라서 유지보수를 쉽고 빠르게 진행할 수 있다.

Java의 단점

  • 비교적 속도가 느리다.
    • 자바는 한 번의 컴파일링으로 실행 가능한 기계어가 만들어지지 않고 JVM에 의해 기계어로 번역되고 실행하는 과정을 거치기 때문에 C나 C++의 컴파일 단계에서 만들어지는 완전한 기계어보다 속도가 느리다. 그러나 하드웨어의 성능 향상과 바이트 코드를 기계어로 변환해주는 JIT 컴파일러 같은 기술 적용으로 JVM의 기능이 향상되어 속도의 격차가 많이 줄어들엇다.
  • 예외처리가 불편하다.
    • 프로그래머 검사가 필요한 예외가 등장한다면 무조건 프로그래머가 선언해줘야 한다.
  • 다른 언어에 비해 작성해야 하는 코드의 길이가 긴 편이다.
profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글