본문 바로가기
카테고리 없음

00. 자바 소개

by 뽀도 2016. 12. 8.

자바 소개

 

. 자바의 탄생

- 1991년 썬 마이크로시스템즈에 소속된 제임스 고슬링이 개발.

 

. 자바의 특징

 

- 자바의 특징은 완벽한 객체 지향 언어다.

 

1) 포인터 개념이 없어 배우기 쉽다.

 

2) 플랫폼 독립성

 

3) 객체지향 프로그래밍

- 객체란 무엇일까?

- 객체는 눈으로 확인할 수 있고 만질 수 있는 모든것이다.

- 자바 프로래밍의 단위는 객체.

- 객체지향이란 서로 다른 일을 부여받은 하나 이상의 객체 가운데 요청된 일을

처리하기 위해 실천 가능한 객체를 호출하여 처리하는 것을 말한다.

 그리고 객체를 재사용 하는 것과 기능을 추가하여 확장하는 것 등을 객체지향이라

할 수 있으며 이를 프로그래밍에 적용한 것을 객체지향프로그래밍이라고 부른다.

 

4) 가비지 컬렉션

- 자바에서는 가비지 컬렉션이라는 기능을 이용해서 메모리 영역 중 더 이상 사용될 수 없거나 참조되지 않는 영역을 모아 프로그램이 다시

  사용할 수 있게 해준다.

-  프로그래머 대신 언어 차원에서 메모리에 생성된 무엇인가를 자동으로 소멸시켜주는 것이다.

-  자바와 다른 점 : C/C++ 같은 언어는 메모리에 무엇인가 생성하면 프로그래머가 소멸자를 호출해야한다.

 

5) 멀티쓰레드

- 쓰레드란 프로그램의 수행단위를 말한다. 멀티 쓰레드란 한 프로그램을 수행하는 단위가 여러 개 있다는 뜻이다.

- 자바는 멀티 스레드가 가능하게 설계 되었기 때문에 프로그램에 좀더 쉽고 간편하게 멀티스레드를 적용할 수 있다는 것이 특징이다.

 

. 자바 플랫폼

- 자바 프로그램이 실행되기 위해 제공되는 하드웨어적 프로그램이다.

- 자바 플랫폼은 해당 운영체제와 하드웨어의 조합

- 자바 API JVM으로 구성되어 있다.

 

1)     자바 API

-       자바 APIGUI와 같은 작은 장치들과 유용한 능력을 제공하는 많은 클래스와 인터페이스들의 묶음이며 패키지라는 것으로 제공된다.

2)     JVM : 자바 가상 머신

-       JVM은 추상적인 장치이며 여기에는 명령어와 레지스터의 집합, 스탭, , 메서드 영역등으로 구성되어 있다.

 

3)     자바 플랫폼의 종류

-       JAVA 2 Standard Edition(J2SE) : 자바 표준 플랫폼, 표준 환경,

n  적용 분야 - 일반적인 데스크탑

-       JAVA 2 Enterprise Edition(J2EE) : J2SE 바탕으로 함, 인터넷 응용프로그램, 분산기술, xml 기술 등등

n  적용 분야 서버용 컴퓨터

-       JAVA 2 Micro Edition(J2ME) : 가장 작은 환경, 주로 소형제품을 위한 플랫폼

n  적용 분야 : 휴대폰,PDA,셋탑박스 등

 

. JVM(JAVA Virtual Machine)

 

- 자바 언어로 작성된 프로그램 코드는 운영체제에서 직접 이해되는 코드가 아니고 컴파일러에 의해 JVM에서 이해할 수 있는 중간 코드 형태인 바이트코드 형식으로 변환된다.

- 이것이 바로 class 파일인데, class 파일에는 명령어와 기호표, 그리고 다른 보조적인 정보들도 담고 있으며 이런 명령어들과 정보들을 해석하여 실행하는 가상적 기계가 바로 JVM이다.

- 즉 자바의 실행파일이 바로 class 파일이고 이 class 파일을 실행시키는 것이 바로 JVM이다. 그리고 이러한 특징 때문에 자바로 작성된 프로그램은 어떤 운영체제에서도 거의 수정 없이 사용할 수 있다는 것이다.

- 자바는 코드의 수정 없이 모든 운영체제에서 실행할 수 있도록 모든 운영체제에서 실행되는 가상의 운영체제인 JVM을 제공하고 있고 이 JVM에서

  실행되는 class 파일을 통해 프로그램을 실행하게 되므로 운영체제가 바뀌어도 소스코드를 새로 작성하는 번거로움을 피할 수 있다.

 

 

1)     JVM 구성

그림 1. JVM 구성

 

n  클래스 영역

import문을 통해 필요로 하는 클래스들이 로드되며 멤버 메서드들은 메서드 영역에 저장되고, 상수들은 상수 풀에 저장된다. 이렇게 사용자가 직접 작성하는 클래스 코드를 저장하는 곳.

 

n  자바 스택

여러 메서드를 호출하고 또는 관련된 정보를 주고 받기도 하는데, 이때 이러한 일 처리를 기록하는 곳이 바로 자바 스택 영역이다. 각 메서드에 관련된 정보들은 메서드가 호출 될 때마다 스택 프레임이라는 또 다른 영역이 생성되어 기록을 하게 된다.

가장 최근에 호출한 메서드의 스택 프레임이 가장 위에 존재하게 되는데, 이를 활성 스택 프레임이라 한다.

메서드가 수행을 다하게 되면 해당 스택 프레임은 소멸되고 아래에 있던 스택 프레임 위로 올라와 활성화가 된다. 그리고 하앙 현재 활성화 되어 실행중인 곳을 가리키는 커서와 같은 것이 있는데, 이것이 바로 프로그램 카운터다.

 

n  (HEAP)

new라는 예약어를 통해서 객체가 동적으로 공간을 할당 받는 곳이며, 가비지 컬렉션이 관리하는 영역이다. 물론 생성된 객체는 클래스 영역에 해당 클래스가 존재해야만 공간을 할당 받을 수 있다.

 

n  네이티브 메서드 스택

자바에서는 하드웨어를 직접 제어하지 못한다. 따라서 C언어와 같은 다른 언어의 기능을 잠시 빌려서 사용할 때가 있는데, 이때 사용하는 것이

JNI(Java Natie Interface) 기술이다. 여기서 사용되는 네이티브 메서드들이 바이트 코드로 변환되면서 사용되고 기록하는 영역이 바로 네이티브 메서드 스택이다.

 

 

반응형

댓글