프로그래밍 언어 활용/JAVA

01. 자바의 특성과 장단점(자바 프로그래밍 시작하기)

프린이8549 2024. 1. 14. 16:05

1. 프로그래밍의 의미

 

1-1. ‘프로그래밍을 한다의 의미

  • 컴퓨터가 일을 하도록 컴퓨터 언어로 명령을 만들고 컴퓨터로 하여금 그 명령을 실행하게 하는 것.
  • 프로그램은 곧 컴퓨터에게 일을 시키는 명령의 집합.
  • 프로그래밍 언어를 사용해 명령 집합을 만듦.

1-2. 컴파일(compile)

  • 프로그램이 프로그래밍 언어 문법에 맞는지 확인하고컴퓨터가 이해 가능한 언어[각주:1] 로 번역하는 작업.
  • 컴파일러: 컴파일 작업을 하는 프로그램.
  • 프로그램 : 프로그램에 있는 명령(소스 코드) 집합 + 컴파일된 결과물
  • 자바는 프로그래밍 언어이며, 자바 개발 환경(JDK) 설치 시 컴파일러도 함께 설치됨.

 

2. 자바의 등장 배경

 

  • 당시 주로 사용하던 언어는 C, C++
  • 가전제품이나 휴대용 장치 등에 사용하는 소프트웨어를 만들기 위해 독립적으로 작동하는 더 안정된 프로그래밍 언어가 필요했음.

 

3. 자바의 특징(장점)

 

3-1. 운영체제에 독립적(이식성이 높음)

  • 한 번 작성하면, 어디서든 돌아간다(write once, run anywhere)’.
  • 플랫폼[각주:2] 에 영향받지 않으므로 다양한 환경에서 사용 가능
  • 자바는 프로그램 컴파일 시, ‘.class’ 파일(바이트 코드)을 만들며 이를 운영체제에서 직접 실행하지 않고, 자바 가상 머신(JVM)[각주:3]을 통해 선실행 후 운영체제에 맞는 실행 파일로 변환. 따라서 어느 환경에서나 실행 가능.
  • cf) C언어의 경우, 해당 환경에 맞는 실행 파일을 생성하기에 운영체제마다 새롭게 실행 파일을 만들어야 했음.

3-2. 객체 지향 언어이기 때문에 유지보수가 용이하고 확장성이 좋음

  • 객체 지향 언어
    • 일의 순서대로 프로그래밍하는 것(절차 지향 언어)이 아닌, 여러 객체의 협력을 통해 프로그램을 구현하는 것.
    • 공통적으로 사용하는 부분을 수정하지 않고도 프로그램에 새 기능을 쉽게 추가 가능.
    • 따라서 객체 지향 언어로 프로그램 설계 시 유지보수 용이 및 확장성 좋음.
  • 동적 로딩(Dynamic Loading)을 지원함
    • 애플리케이션이 실행될 때 모든 객체가 생성되지 않고, 각 객체가 필요한 시점에 클래스를 동적 로딩해서 생성함.
    • 유지보수 시 해당 클래스만 수정하면 되기 때문에 전체 애플리케이션을 다시 컴파일 필요가 없기에 유지보수가 용이.

3-3. 프로그램이 안정적(타 언어의 단점 보완)

  • 포인터로 인한 오류 발생 방지
    • 자바는 C 언어의 문법인 포인터를 사용하지 않아 메모리를 직접 제어할 수는 없으나, 메모리 직접 제어 시 오류 발생 위험성이 높으므로, 오히려 훨씬 안정된 코드 제작 가능
  • 가비지 컬렉터 통한 효율적인 메모리 관리
    • 동적 메모리 수거를 프로그래머가 하지 않고, 가비지 컬렉터(Garbage Collector; GC)가 수행하여 메모리의 효율적인 관리 가능

3-4. 풍부한 기능을 제공하는 오픈 소스

  • 자바를 활용한 오픈 소스가 많이 개발되어 있으므로 이를 연동해 더 풍부한 기능을 빠르게 구현할 수 있음
  • 기존의 다른 언어는 특정 기능을 대부분 개발자가 직접 개발하여 사용했으나
  • 자바에서는 기본 기능 제공하는 클래스뿐만 아니라 자료 구조, 네트워크, 입출력, 예외 처리 등에 최적화된 알고리즘 라이브러리를 제공하는 자바 개발 키트(Java Development Kit; JDK)가 있어 프로그램의 빠른 완성 가능

3-5. 멀티쓰레딩

  • 멀티스레딩을 지원하여 cpu 사용을 최적화하고 동시에 여러 작업 처리 가능

 

4. 자바의 단점

 

4-1. 상대적으로 느린 실행 속도

  • JVM에 의해 기계어로 번역되고 실행하는 과정으로 인해 프로그램 실행 속도가 느렸으나, 하드웨어의 발전으로 자바 컴파일러가 JIT[각주:4]컴파일 방식으로 개선됨에 따라 실행 속도 문제는 해결되었음.

4-2. 메모리 소비

  • 가비지 컬렉션으로 인해 추가적인 cpu 자원이 필요하며 때로는 메모리 사용량이 늘어날 수 있음

4-3. 복잡한 문법

  • C++과 비슷한 문법을 지니고 있으며 초보자가 배우기에는 다소 어려운 언어라는 지적이 있음.

 

5. 자바의 활용

  • 웹 서버 
  • 안드로이드 앱
  • 게임 등 ex) 마인크래프트


 

  1. 1. 컴퓨터는 기계어(2진수 0 1로 구성)만 이해할 수 있음 [본문으로]
  2. 2. 프로그램이 실행되는 환경. 운영체제(OS) ex) 윈도우, , 리눅스 등 [본문으로]
  3. 3. Java Virtual Machine. 자바 프로그램 실행 환경을 만들어주는 소프트웨어. 자바 코드를 컴파일하여 ‘.class’ 바이트 코드로 만들면 코드가 자바 가상 머신 환경에서 실행됨. [본문으로]
  4. 3. Just In Time. JIT 컴파일러는 실행 시점에 기계어 코드를 생성하는데, 같은 코드가 반복되면 이전에 만든 기계어를 재사용. 운영체제에 맞게 바이트 실행 코드로 한 번에 변환하여 실행하기 때문에, 이전의 자바 해석기(Java Interpreter) 방식보다 성능이 10~20배 좋음. [본문으로]