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

JAVA(자바)란 무엇일까? (+ 등장배경, 플랫폼 종속성, 플랫폼 독립성, WORA)

by HP_Factory 2021. 1. 17.

JAVA(자바)의 등장배경

 

자바는 애초 지금과 같이 일반 컴퓨터에 사용될 목적으로 설계된 것은 아니였습니다. 1991년에 선마이크로시스템즈(SUN Microsystems)제임스 고슬링(James Gosling)이란 걸출한 엔지니어를 중심으로 그린 프로젝트(Green Project)라는 이름으로 가전제품의 소프트웨어 작성에 적합한 프로그래밍 언어를 개발하기 시작했습니다. 기존의 언어로 작성된 프로그램은 컴퓨터 플랫폼(Platform) 간에 호환성이 없어, 플랫폼에 따라 소스를 다시 컴파일하거나 아예 프로그램을 재작성해야 하는 단점이 있었습니다. 특히, CPU의 종류나 처리 단위(워드)의 크기 등이 매우 다양한 하드웨어 플랫폼을 갖는 가전제품을 위해, 플랫폼 독립적인 언어의 필요성이 강력히 대두되었습니다. 또한 가전제품의 제어 장치는 매우 적은 양의 메모리를 사용하므로 새로운 언어는 이러한 내장형 시스템(Embedded System)의 메모리 요구 사항을 충족해야만 했다.

 

이에 선마이크로시스템즈는 플랫폼 독립적(Platform Independent)이며 메모리 사용량이 적은 새로운 언어와 실행 체계를 개발하였고, 처음에는 이 언어의 이름을 오크(oak)라고 지었습니다. 이 새로운 언어는 초기에는 별로 알려지지 않았지만, 인터넷과 웹이 엄청난 속도로 발전하면서 급속도로 퍼지게 되었습니다. 웹은 한 번 개발된 웹 콘텐츠(웹 프로그램)가 전 세계의 다양한 클라이언트 플랫폼에 설치된 웹브라우저에서 수정 없이 실행되도록 하는 것인데, 이 언어의 플랫폼 독립성과 딱 들어맞았기 때문입니다. 

 

선 마이크로 시스템즈는 오크를 인터넷 환경에 적합하도록 발전시켰으며, 마침내 1995년 SunWorld 95에서 자바(JAVA)라는 이름으로 발표하였습니다. 당시 가장 많이 사용되는 넷스케이프(Netscape) 웹 브라우저에 자바 기술을 적용하면서 자바는 급격히 퍼졌고, 오늘날 인터넷 시대의 프로그래밍 언어로 자리 매김을 하게 되었습니다. 2009년에  데이터베이스로 유명한 오라클에서 선마이크로시스템즈를 인수함으로써 현재는 오라클에서 자바를 제공하고 있습니다.

 

[TIP 자바 이름의 유래]
오크란 이름은 선마이크로시스템즈 사무실 앞의 참나무(oak)에서 따온 것이라고 합니다. 그러나 이미 오크란 상표가 등록되어 있어 이름을 자바로 바꾸었다고 합니다. 자바 이름의 유래에는 여러 가지 설이 있는데, 유력한 것으로는 개발자들이 너무 커피를 많이 마셨다는 설과 개발팀의 핵심 멤버인 James Gosling, Arthur Van Hoff, Andy Bechtolsheim의 이니셜을 따왔다는 설이 있습니다.

 

*플랫폼이란? 
개발환경 실행환경 등 어떠한 목적을 수행할 수 있는 환경을 말합니다.

Ex)프로그램이 실행되는 환경인 운영체제의 종류(Window, MAC), 개발이 수행되는 환경의 종류(이클립스, 안드로이드 스튜디오, 비쥬얼 스튜디오 등등)

 

기존 언어의 플랫폼 종속성

C/C++ 등 자바 이전 프로그래밍 언어로 작성된 프로그램이 컴파일되면 실행될 컴퓨터 플랫폼, 즉 CPU와 운영체제에 종속된 기계어 코드로 변환됩니다. 예를 들어, Intel CPU와 리눅스 운영체제가 탑재된 컴퓨터에서 컴파일된 기계어 코드Intel CPU와 윈도우가 탑재된 컴퓨터에서는 실행되지 않습니다. 그러므로 C/C++ 프로그램은 실행하고자 하는 각 플랫폼에 맞는 기계어 프로그램을 생성하여야 합니다. 이러한 특징을 플랫폼 종속성(Platform Dependence)이라고 부릅니다.

 

플랫폼 종속성

 

자바의 플랫폼 독립성, WORA

자바 언어는 당초 목적대로 플랫폼에 독립적으로 설계되었습니다. 따라서 한 번 작성되고 컴파일된 자바 코드는 운영체제나 CPU 등 플랫폼에 상관없이 자바 가상 기계(JVM)만 있으면 어떤 컴퓨터에서든 동일하게 실행됩니다.

이를 WORA(Write Once Run Anywhere)라고 합니다.

 

자바는 플랫폼 독립적이란 특징이 있기 때문에 Intel CPU에 리눅스가 설치된 PC, 애플의 운영체제를 탑재한 MAC PC,  Intel CPU에 윈도우가 설치된 노트북 등 플랫폼에 무관하게, 한 번 작성된 자바 프로그램은 수정 없이 실행 가능합니다.

 

플랫폼 독립성

 

 

 

자바 가상 기계와 자바 실행 환경

자바의 플랫폼 독립성을 실현 가능하게 하는 것자바 가상 기계(Java Virtual Machine, JVM)바이트 코드(Byte Code) 덕분입니다.

바이트 코드는 자바 컴파일러가 자바 소스 프로그램을 컴파일한 일종의 기계어로서, 자바 가상 기계(JVM)에 의해 실행되는 바이너리 코드(Binary Code)입니다. JVM은 보통 소프트웨어로 작성되지만, 자바 터미널(Java Terminal)과 같이 하드웨어로 만들어지기도 합니다.

 

바이트 코드는 CPU에 의해 직접 실행되지 않고, JVM에 의해 인터프리터 방식으로 한 명령씩 해석되어 실행됩니다.

자바 프로그램의 입장에서 볼 때 JVM은 운영체제이자 컴퓨터 입니다.

 

JVM은 플랫폼에 적합하게 서로 다르게 구현되므로 플랫폼 종속적입니다. 그러나 이들은 모두 동일한 자바 프로그램에게 동일한 인터페이스와 실행 환경을 제공합니다. JVM은 자바 개발사인 선마이크로시스템즈(현재는 오라클)는 물론이고, IBM, 마이크로소프트 등 다양한 회사에서 제작 공급하고 있습니다. JVM의 명령어 체계는 유일하므로,  작성된 자바 응용프로그램은 어떤 회사의 JVM에서든 정상적으로 실행됩니다.

 

 

바이트코드, 바이너리코드, 기계어에 대한 개념은 여기를 참조해주시면 됩니다!

 

 

 

자바 응용프로그램 실행 환경

자바의 플랫폼 독립성

 

자바 컴파일러는 자바 소스 프로그램을 컴파일하여 바이트 코드를 클래스 파일(Class File, 자바의 목적파일이라고 생각하시면 됩니다.)에 저장합니다. 자바 프로그램이 실행되기 위해서는 개발자가 작성한 자바 프로그램 외에 자바 플랫폼에서 제공하는 다양한 클래스 라이브러리(JDK APIs)가 반드시 필요합니다.

 

JVM은 사용자가 작성한 클래스 파일을 로딩하여, 바이트 코드를 하나씩 실행합니다. 프로그램 실행 도중, JDK의 클래스 파일이나 사용자가 작성한 다른 클래스 파일이 필요하면, 그 때 필요한 클래스 파일을 로딩하고 실행합니다. 하지만, 메모리가 충분한 PC에서는 실행 중에 클래스 로딩으로 인한 시간 지연을 줄이기 위해, 사용자 클래스 파일과 필요한 JDK 클래스 파일을 미리 로딩하여 둡니다.

 

요약

자바 소스 코드(.java) -> 자바 컴파일러 -> 바이트 코드(.class, 목적파일) -> JVM에서 .class 파일을 실행 (이때 실행에 필요한 자바 클래스 라이브러리(JDK APIs)가 필요합니다.)

요약

JDK와 JRE에 대한 설명은 여기를 참조해 주세요!

 

 

 

 

 

자바와 타 언어(C/C++)의 실행 차이

C/C++는 컴파일한 목적 파일을 링크시켜 하나의 실행 파일(EXE)을 만들며, 이 실행 파일 하나만 있으면 실행이 가능합니다. 그리고 이 실행 파일은 컴퓨터의 CPU가 바로 실행합니다.

 

그러나 JAVA(자바)의 경우 링크과정이 없으며 JVM이 컴파일된 클래스 파일을 실행합니다. 자바는 컴파일된 클래스 파일들이나 이들을 하나로 압축한 jar 파일 형태로 배포합니다.

 

실행 차이

 

 

출처

http://download.oracle.com/javase/8/docs/

 

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

JAVA 설치 및 환경변수 설정 방법  (15) 2023.12.12
JDK와 JRE란? 자바 API란?  (0) 2021.01.16

댓글