코코넛의 Repository

JAVA - JVM, JDK, JAVA의 특징 본문

JAVA

JAVA - JVM, JDK, JAVA의 특징

배우는 개발자 코.코.넛 2016.11.23 01:29



안녕하세요 코코넛 입니다.


오늘은 JAVA의 특징과, JVM에 대해서 간략하게 기록 하도록 하겠습니다.


먼저 JAVA의 특징으로는 대표적으로 아래와 같이 기재 할 수 있습니다.


<JAVA의 특징>

1. 운영체제에 독립적이다.

2. 객체지향 언어

3. 자동 메모리 관리

4. 멀티 쓰레드 관리

5. 동적 로딩 


하나 하나 설명 드릴 건데요.


우선은 저도 JAVA 초급중에 초급이기 때문에 전부다 이해가 되지 않습니다.


그래도 공부한 내용을 토대로 기록을 할게요.


1. 운영체제에 독립적이다

- JAVA는 JVM 이라는 것만 있으면 운영체제에 영향을 받지 않고 실행 할 수 있습니다.

- 즉, JAVA에 있어서 JVM이 운영체제인 셈이죠

- 이 JVM은 OS를 타지 않아 리눅스, 윈도우 등의 대표적인 OS에 구애 받지 않고 설치 할 수 있습니다.

- 우리는 JVM이라는 것을 따로 설치 하지 않고, JDK라는 것을 OS에 설치하여 JAVA를 실행 합니다.

- JDK를 설치하면 JVM과 JAVA API 라이브러리를 설치 하기 때문에 개발자 도구라고 도 불리웁니다.

* JVM( Java Virtual Machine ) * JDK ( Java Development Kit )


2. 객체 지향 언어

- 객체 지향 언어 라는 것이 가장 큰 장점 이라고 하더군요.

- 저도 예전에 배웠는데.. 정확하게 기억이 나진 않아서 고생 했습니다.

- 객체 지향 프로그래밍과 대조적인 것이 구조적 프로그래밍 입니다.

- 여기서 간단 하게 설명 드리 도록 할게요


 * 구조적 프로그래밍

- C와 같은 순차적 프로그래밍 이라고 불립니다.

- 말 그대로 함수 같은 것이 순차적으로 진행 되어 있고, 특정 구조가 잡힌 설계를 토대로 개발 하기 때문에 신규 기능들을 추가하려면 구조적인 부분을 변경 해야 합니다.

- 그렇기 때문에 기능 추가 라는 면에서는 젬병이죠


* 객체 지향 프로그래밍

- 말그대로 하나하나가 객체인 셈입니다.

- 실무에서는 모듈 이라는 단어를 쓰는데요

- 모든 기능의 모듈화라고 보시면 될 것 같습니다.

- 물론 JAVA 언어가 전면적으로 객체지향은 아닙니다. 즉, 설계하는 사람에 따라 구조적 프로그래밍 형태로도 보일 수 있겠는데요.

- JAVA는 객체 지향이 강한 언어이기 때문에 JAVA 개발자는 모든 기능의 모듈화를 통해 기능 추가 삭제가 자유로운 프로그램을 개발 하는 것이 좋습니다.


- 비교 해서 공부하니 저는 조금 이해가 되더라구요..... 아직 클래스 개념으로 들어가지 않았기 때문에 객체지향 프로그래밍에 대해서는 클래스에 파트로 들어가면 추가 기록을 하겠습니다.


3. 자동 메모리 관리

- 저도 C를 했지만 C 같은 경우는 '임베디드'라는 산업에서 많이 사용 하고 있죠.

- 기계 자동화 인데요, 이게 칩의 메모리를 얼마나 효율적으로 사용 하느냐에 따라 기능이 천차 만별입니다.

- C 같은 경우는 메모리 초기화 조차 개발자가 코딩을 해서 소스를 넣어야 하는데요. 자바의 경우는 그렇지 않습니다.

- 가비지 컬렉터(Garbage collector) 라는 녀석이 자동으로 메모리를 관리해 주기 때문입니다.

- 아이러니 하게도, 가비지 컬렉터를 믿고 메모리 관리를 배제한체 개발을 하여 Out of Memory 가 발생 하는 경우도 종종 있습니다.

- 나중에 Tomcat이라는 WAS도 기록을 할 것인데, 그때 가비지 컬렉터에 대해 자세하게 기록 하도록 하겠습니다.


4. 멀티 쓰레드 관리

- 저는 쓰레드 라는 개념을 JAVA에서 처음 들었습니다.

- 현재까지는 하나의 프로세스 라고 생각 하고 있습니다. ( 스케쥴링 이라고도 표현 하는 것 같더군요 )

- 여러 프로세스가 동시에 작업을 할 수 있다는 것을 말하는 것 같습니다.

- 이 또한 심화된 내용에서 자세하게 기록 하겠습니다.


5. 동적로딩

- 동적로딩은 작성한 클래스나 함수에 대해서 한번에 읽어 들이는 것이 아니라, 필요한 상황에서 필요한 함수 및 클래스만 사용 하는 것을 말합니다.

- 당연히 이런 부분이 메모리 사용에 있어서 효율적이겠죠 ?




오늘은 제가 어느정도 알고 있었던 내용을 바탕으로 기록 하였습니다.

틀린 부분이나 부족한 부분이 있을 수 있는데요.

그런 부분에 대해서 댓글로 남겨 주시면 추가 수정을 하도록 하겠습니다!!


감사합니다



'JAVA' 카테고리의 다른 글

JAVA - JVM, JDK, JAVA의 특징  (0) 2016.11.23
JAVA - Intro.  (0) 2016.11.22
0 Comments
댓글쓰기 폼