본문 바로가기
프로그래밍/JAVA

[Java] 자바 시작하기

by bits 2021. 1. 11.

1. 자바란

자바(Java)는 1995년 썬 마이크로시스템즈의 제임스 고슬링과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다. 현재는 오라클(Oracle) 사에 인수되어 배포되고 있다.

 

2. 자바의 특징

- 객체 지향 프로그래밍 언어이다.

프로그램의 부품에 해당하는 객체들을 만들고, 이것들을 하나씩 조립 및 연결해서 전체 프로그램을 완성하는 기법을 객체 지향 프로그래밍(OOP: Object Oriented Programmin)이라고 한다.

 

- 이식성이 뛰어나다. 
이식성이란 서로 다른 실행 환경을 가진 시스템 간에 프로그램을 옮겨 실행할 수 있는 것이다.
자바 언어로 개발된 프로그램은 소스 파일을 다시 수정하지 않아도, 자바 실행 환경(JRE: Java Runtime Environment)이 설치되어 있는 모든 운영체제에서 실행 가능, 즉, 플랫폼 독립적이다.

- 메모리를 자동으로 관리한다.
객체 생성 시 자동적으로 메모리를 할당하고, 사용이 완료되면 쓰레기 수집기(Garbage Collector)를 실행시켜 자동적으로 객체를 제거시켜준다.
배우기 쉽다.

 

- 배우기 쉽다.

자바는 기본적으로 C와 C++의 문법을 차용하여 그들 언어와 비슷하지만 포인터, 다중 상속 등의 이해하기 어려운 개념을 없애 문법적 난이도가 낮다. 그래서 다른 고급언어(C, C++)에 비해 배우기가 쉬운 언어이다.

 

3. 자바 가상 머신 (JVM : Java Virtual Machine)

자바 가상 머신 (JVM : Java Virtual Machine)

운영체제는 자바 프로그램을 바로 실행할 수 없다. 그 이유는 자바 프로그램은 완전한 기계어가 아닌, 중간 단계의 바이트 코드이기 때문에 이것을 해석하고 실행할 수 있는 가상의 운영체제가 필요하다. 이것이 자바 가상 머신이다.
JVM은 실 운영체제를 대신해서 자바 프로그램을 실행하는 가상의 운영체제 역할을 한다.
자바 프로그램을 운영체제가 이해하는 기계어로 번역해서 실행해야 하므로 JVM은 운영체제에 맞게 설치되어야 한다.

 

자바 가상 머신

4. 자바 플랫폼의 종류

자바 플랫폼이란 자바 프로그램이 실행되기 위해 제공되는 프로그램.
자바 프로그램들이 공통적으로 사용하는 JVM을 비롯해서 자바 프로그램 개발에 필수적인 도구와 라이브러리 API를 정의한다.

Java SE(Java Standard Edition)
자바 표준 개발환경, 자바의 핵심적이며 표준이 되는 플랫폼.
일반적인 컴퓨터 환경의 응용 프로그램을 개발하기 위해 제공되는 환경.

Java EE(Java Enterprise Edition)
기업 솔루션 개발환경.
기업적 자원을 이용한 상호작용에 대한 분산 기술, 인터넷 응용프로그램까지 Servlet/JSP, XML 기술 등이 추가되어 표준으로 규정하는 환경.

Java ME(Java Micro Edition)
모바일 솔루션 개발환경.
휴대폰이나 PDA, 프린터 등의 장치에서 필요로 하는 응용프로그램들의 실행을 위해 제공되는 환경.

 

5. 자바 프로그램 개발 순서

아래 그림은 자바 소스 코드 작성부터 컴파일 및 실행과정을 나타낸다.

자바 프로그램 개발 순서

 

 

6. 컴파일, 바이트코드, 인터프리터

- 컴파일(Compile)

일반적으로 컴파일이란 작성된 프로그램을 기계어로 변환하는 작업을 의미한다. 하지만 자바에서는 컴파일 후 중간 언어인 바이트 코드를 생성하는 것을 의미한다.

예) C\>javac Sample.java

 

- 바이트코드(Byte Code)

자바의 소스 코드인 *.java 파일을 컴파일 할 때 만들어지는 *.class 파일을 의미한다. 이는 완전한 기계어가 아닌 중간 단계의 언어이며, 기계어로 변환하기 좋은 단계의 반 기계어 상태이다. 클래스 파일은 가상머신에 의해 실행된다.

 

- 인터프리터(Interpreter)

바이트코드(*.class)를 기계어로 변환하여 실행하는 것.

예) C\>java Sample

'프로그래밍 > JAVA' 카테고리의 다른 글

[Java] 자바 연산자 (Java Operator)  (0) 2021.01.14
[Java] 변수와 자료형  (0) 2021.01.11

댓글