2. Java 언어의 배경 (역사와 특징)

2. Java 언어의 배경 (역사와 특징) 본문

2. Java 언어의 배경 (역사와 특징)

KRONNA 2012. 5. 20. 16:20

이번 강의에서 배우고자 하는 목표:

1. Java의 탄생배경

2. Java의 특징

3. Java의 장점





프로그래밍이 정확히 무엇을 뜻 하는 말일까요? 

프로그래밍은 알맞은 형식과 순서로 명령을 작성하는 것을 뜻합니다.

여기서 명령이란 물론 컴퓨터에게 내릴 명령이지요.


코딩이란:

명령 프로그래밍 코드를 작성하는 것입니다.


프로그래밍의 진화:

1950년대까지는 0과 1을 사용하는 언어인 "기계어"를 인간이 작성해야 했습니다. 

1950년대에 그러다 하이레벨 언어, 즉 인간에게 좀 더 친숙한 10진수, 연산자들, 그리고 언어들이 사용되기 시작합니다.

1972년에 현재 대부분의 프로그래밍 언어의 시초라 할 수 있는 C언어가 데니스 리치라는 프로그래머 덕분에 탄생합니다

1996년, 우리가 이 코스에서 제일 중요시 해야할 일이 일어납니다.

James A. Gosling이라는 남자가 C++언어를 기반으로 간단하고 신뢰도가 높은 (버그가 적은) 언어를 인터넷에 연결이 용이하도록 가전제품들을 위해 고안해서 Java 언어가 탄생하게 되지요. Sun사가 자바의 정식 버전을 발표한 달은 1996년 1월입니다.


자바의 특징:

1. 견고함:

a) 자바는 비교적 최근에 탄생한 프로그래밍 언어 답게 기존 C기반 언어들의 문제점들을 많이 해결했습니다. 그 중 하나는 골칫덩어리였던 "포인터" 기능을 베재한 것이죠. 자바는 포인터 없이도 기존 포인터가 제공하던 기능들을 쓸 수 있도록 다른 방법들을 제공합니다.

b) 자바에서는 automatic garbage collection이라는 기능을 제공합니다. 이는 메모리 자동 관리라고 볼 수 있는 기능인데요, 프로그래머가 염두에 두고 개발을 하지 않아도 자바 언어 특성 자체에서 사용하지 않고 있는 객체의 메모리를 자동 해제하는 것입니다. 후에 좀 더 자세히 설명하게 되겠지만 여기서 사용하지 않는 객체란 그 메모리를 가리키는 참조형 변수가 없는 경우와 참조형 변수의 수를 헤아렸을 때 0의 값이 반환될 때를 지칭합니다.

c) 자바에서는 데이터 타입이 굉장히 중요시됩니다. strict data type check로 불리는 부분으로 자바에서는 데이터 타입을 중요시 확인하며 조금이라도 어긋나면 바로 컴파일 에러가 발생합니다.

2. 플랫폼에 독립적

자바가 다른 언어들과 차별화되는 가장 큰 요소가 바로 플랫폼에 대한 독립입니다. 자바는 컴퓨터 자체에서 실행되지 않고 JVM (Java Virtual Machine) 즉 자바 가상 머신에서 실행이 되기 떄문에 운영체제가 무엇이 되었던간에 한번 쓴 코드로 재사용할 수 있습니다. 자바의 슬로건은 참고로 "write once, run everywhere"이였습니다. 

3. 강력한 퍼포먼스

a) 자바는 compile과 interpret이 둘 다 가능합니다. 3번째 강의에서 이 둘의 차이를 더 깊숙히 알아볼텐데요, 자바는 자바 런타임 플랫폼에서 interpret되는 Bytecode를 기계어로 바로 변환해 속도를 높히는 JIT (Just In Time) Compiler 등 기능을 제공합니다. JIT등의 기능이 제공되기 전에는 컴파일이 아니라 Interpret만 될수 있었기 때문에 속도가 느렸습니다.

b) 자바는 기본 제공 API에서 멀티스레드가 지원됩니다. 그리고 스레드 스케쥴링도 인터프리터가 담당하게 됩니다. 멀티스레드는 멀티태스킹과 아주 밀접한 내용인데요, 이도 추후 강의에서 더 자세히 다루겠습니다.

c) 자바는 실행시 모든 클래스를 로딩하는 것이 아니라 필요시 로딩하는 Dynamic Loading을 지원합니다. 이는 클래스에서 발생한 문제가 전체 어플리케이션에 대한 영향이 비교적 적다는 것을 의미하며 이는 프로그래머에게 큰 편의입니다. 


JVM (자바 가상 머신)에 대한 이해를 돕기위한 그림:

(Singapore Management University에서 제공한 사진입니다)

이 그림에서 가장 위에 있는 Java Byte Code는 프로그래머가 작성한 코드입니다. Byte Code는 바로 아래 단계에 있는 Java Virtual Machine이 이해를 합니다. 이와 같이 인식을 소프트웨어로 만든 가상 하드웨어가 하기 때문에 Intel 플랫폼이든 AMD 플랫폼이든, 윈도우를 사용하던 리눅스를 사용하건 최종적으로는 자바 어플리케이션을 구동할 수 있는것이죠. 


JVM의 메모리 아키텍쳐 (메모리 구조)

JVM의 메모리는 크게 1 Method Area, 2 Call Stack, 그리고 3 Heap으로 나눠집니다. 여기서 Method Area는 클래스 사용시 변수에 대한 정보를 저장하는 공간, Call Stack (호출 스택)은 Method (메서드) 실행시 중간 연산 결과등을 저장하는 공간, Heap은 인스턴스를 생성하는 공간입니다.




이전 강의 (1. Java 개발환경)

다음 강의 (3. Java 언어의 구조)

레슨 플랜


0 Comments
댓글쓰기 폼