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. 컴퓨터는 기계어(2진수 0과 1로 구성)만 이해할 수 있음 [본문으로]
- 2. 프로그램이 실행되는 환경. 운영체제(OS) ex) 윈도우, 맥, 리눅스 등 [본문으로]
- 3. Java Virtual Machine. 자바 프로그램 실행 환경을 만들어주는 소프트웨어. 자바 코드를 컴파일하여 ‘.class’ 바이트 코드로 만들면 코드가 자바 가상 머신 환경에서 실행됨. [본문으로]
- 3. Just In Time. JIT 컴파일러는 실행 시점에 기계어 코드를 생성하는데, 같은 코드가 반복되면 이전에 만든 기계어를 재사용. 운영체제에 맞게 바이트 실행 코드로 한 번에 변환하여 실행하기 때문에, 이전의 자바 해석기(Java Interpreter) 방식보다 성능이 10~20배 좋음. [본문으로]
'프로그래밍 언어 활용 > JAVA' 카테고리의 다른 글
다형성 실습 문제 (3) | 2024.01.25 |
---|---|
05. 클래스와 객체 1 (0) | 2024.01.18 |
04. 제어 흐름 이해하기 (2) | 2024.01.17 |
02-1. 컴퓨터의 데이터 표현 방법 (1) | 2024.01.15 |
02. 변수와 자료형: 목차 (0) | 2024.01.15 |