나의 IT일지
프로그래밍과 Java 본문
Java는 프로그래밍 언어중 하나로, 컴퓨터와 개발자의 대화를 하기 위해 사용되는 언어이다. 이때, 프로그래밍이란 개발자가 컴퓨터에게 명령을 만드는 작업이며, 컴퓨터에게 명령하는 명령들의 집합들을 프로그램이라고 한다.
프로그래밍의 이해
컴퓨터는 하드웨어와 소프트웨어로 이루어져 있으며, 프로그래밍은 이러한 컴퓨터의 자원을 이용하기 위해 명령을 내리는 것인데, 소프트웨어인 운영체제에게 명령을 내리면, 그것을 자원을 통해 그 명령을 수행하게 된다.
프로그램 --------> 운영체제(OS) --------> 하드웨어
예를 들면, 개발자가 데이터를 실행한다고 했을 때, 개발자는 운영체제에게 데이터를 실행하는 코드를 작성할 것이고, 이 코드를 받은 운영체제는 CPU에게 해당 데이터를 찾도록 지시하며, CPU는 보조기억장치(HDD,SSD)에서 데이터를 찾아 주기억장치(메모리카드)로 가져와 실행한다.
Java의 이해
Java는 미국의 Sun Microsystems 사에서 개발한 객체지향 프로그래밍 언어이며, 객체지향 프로그래밍이란 객체(부품)를 만들고, 이 객체들을 서로 연결해서 더 큰 프로그램을 완성하는 기법을 사용하는 프로그래밍이다.
Java는 다음과 같은 특징을 가지고 있다.
- 객체지향언어
- 배우기 쉽다
- 어느 운영체제(OS)에 상관없이 실행가능
- 메모리 관리를 개발자가 하지 않는다 (Garbage collection을 지원) : 다른 언어는 메모리를 직접 관리해야 한다.
- 동적이며 스레드(다중작업)를 지원한다.
- 네트워크 프로그래밍과 분산처리를 지원한다.
특히 특징 3번이 가장 특이한데, 보통 프로그래밍 언어는 운영체제마다 실행할 수 있는 파일은 각각 다르다. 하지만 Java는 다른 언어와 달리 JVM이라는 Virtual machine을 사용하기에 다른 운영체제에서 수정없이 실행이 가능하다. JVM이란 Java의 코드를 실행 할 수 있는 주체로, JAVA프로그램과 OS사이의 중개자 역할을 하며, OS에 종속되지 않고 Java 최종 파일을 실행할 수 있게 도와준다.
프로그램 --------> JVM --------> 운영체제(OS) --------> 하드웨어
Java의 프로그래밍 과정에는 5가지 과정이 있는데, 코드작성, 컴파일, 링크, 디버깅, 실행으로 나눠져 있다. 그리고 프로그래밍의 과정이 진행되면서 파일이 생성이 된다.
- 코드작성: 명령들(소스코드)을 작성하는 과정
- 컴파일: 프로그래밍 언어는 사람이 사용하기 쉬운 언어이기에 컴파일러를 통해 운영체제가 이해할 수 있는 언어(기계 어:2진수로 구성)로 번역해주는 과정
- 링크: 분리된 컴파일작업이 끝난 파일을 합치며, 라이브러리 파일(프로그래밍 할 때 사용하는 기능 파일)를 내 코드와 연결하는 과정
- 디버깅: 프로그램의 오류를 잡는 과정
- 실행: 프로그램을 사용하는 과정
이때, 3단계인 링크부터 5단계인 실행까지 JVM에서 진행된다. 즉, 코드작성과정에서 생성된".java"파일을 컴퓨터가 이해할 수 있는 ".class"파일로 변환하여 JVM 을 통해 실행한다는 것이다.
번외)JVM의 구성
- Class loader : 모든 클래스(코드)를 참조하는 순간, 동적으로 JVM에 연결하여 메모리에 로딩하는 공간
- Execution engine : class에 정의된 내용을 실행하는 공간
- Runtimedata areas : 프로그램을 수행하기 위한 os에서 할당받은 메모리 공간
- class영역 : 사용하는 클래스 파일이 로드 되는 영역으로, static 변수, 전역 변수(클래스에서 생성되는 변수),클래스 정보등의 정보가 저장되어, JVM이 종료 될때 까지 유지
- stack영역 : 지역변수, 매개변수등 변수들이 저장되는 영역으로, 함수의 호출부터 종료까지 유지
- heap영역 : 참조형 변수에 저장되어있는 주소의 객체들이 저장되는 영역
'프로그래밍 언어 > Java' 카테고리의 다른 글
연산자 (논리, 비트) (1) | 2023.03.17 |
---|---|
연산자(산술, 단항, 비교) (0) | 2023.03.16 |
변수와 상수 (0) | 2023.03.15 |
Java 프로그래밍의 이해 (0) | 2023.03.14 |
JDK와 Eclipse 설치 (0) | 2023.03.11 |