자바는 다른 프로그래밍 언어와 비교했을 때, 자바를 특색있게 만드는 것은 자바프로그램이 어떤 컴퓨터 기종에서도 실행가능하다는 점이다. 실행 파일을 컴파일 할 필요가 없다는 이야기라는 것으로, 프로그램을 완성하고 나면 하드웨어나 운영체제의 종류에 관계없이 동일하게 실행할 수 있다는 것이 자바의 큰 장점이다. 그를 이야기하듯 자바의 특징을 설명하는 문장이 바로 "한 번만 작성해서 어디서나 실행시키세요(WORE: Write Once Run Everywhere)"라는 자바의 슬로건이다.
다른 프로그래밍 언어의 경우, 컴파일러는소스 파일을 처리하여서 특정한 컴퓨터의 기계어를 바로 생성한다. 그러나 자바 컴파일러는 특정한 컴퓨터를 위한 코드를 바로 생성하지 않는다. 대신에 가상적인 컴퓨터의 기계어인 바이트코드를 생성한다. 이 바이트 코드는 자바가상기계라고 하는 소프트웨어에 의해서 한 줄씩 해석되면서 특정한 컴퓨터에서 실행된다.
📕 -> 💿 -> 📗 ->자바 가상 기계 💻(윈도우)🖥️(리눅스,맥)
이렇게 두 단계로 나누어서 컴파일하고 실행하는 이유는 응용 프로그램들을 다시 컴파일 하지 않아도 모든 컴퓨터에서 실행되도록 하기 위해서다. 우리가 각종 컴퓨터에서 자바 가상 기계만 가지고 있다면 어떤 바이트 코드도 다시 컴파일할 필요가 없이 많은 운영체제에서 지원되는 자바 가상 기계 위에서 동일한 바이트 코드 파일이 실행 수 있다.
JVM언어라고 불리는 언어들이 있다. 이 언어들은 컴파일하면 자바 가상 기계가 실행할 수 있는 유효한 클래스 파일을 출력한다. 클래스 파일에는 자바바이트코드와 심볼 테이블, 기타 보조 정보가 포함되어 있다. 따라서 JVM으로 실행이 가능하다. 클래스 파일은 컴파일 된 클래스 및 인터페이스를 나타내는 데 사용되는 하드웨어 및 운영체제 독립적 이전형식이다. 몇가지 JVM 언어가 있으며,오래된언어를 JVM에 이식하기도 하고, 완전히 새로운 언어도 만들어지기도 했다. 그중 처음부터 새롭게 생성된 언어중 인기 있는 언어중 하나가 코틀린이다. JVM 언어의 주목할 만한 기능은 서로 호환된다는 것이다. 예를 들어 Scala 라이브러리는 자바 프로그램과 함꼐 사용할 수 있으며, 그 반대도 가능하다. 두 언어 모두 자바 바이트 코드를 출력하기 떄문이다.
참고
자바 플랫폼.
플랫폼이란 프로그램이 실행되는 하드웨어와 소프트웨어 환경이다. 자바 플랫폼은 두 가지의 요소로 이루어져 있다. 플랫폼만 같으면 바이트 코드를 변경없이 실행할 수 있다.
- 자바 가상기계( JVM : Java Virtual Machine)
- 자바 응용 프로그램 인터페이스(API Application Programming Interface)
일반적으로 API란 많은 요융한 기능을 제공하는 라이브러리들의 모임이다. API는 자바 프로그래밍 언어의 핵심 기능을 재공한다. API에는네트워킹, 보안, XML 생성, 데이터베이스 접근에 필요한 기능들이 포함되어있다.
가상기계
가상기계는 버추얼머신, 가상머신, 가상 컴퓨터라고 번역되고 있다. 기계는 서양에서 컴퓨터를 의미한다. 자바 가상 기계는 실제로 존재하는 컴퓨터가 아니라 가상 컴퓨터를 시뮬레이션한느 소프트웨어이다. 자바 가상 기계를 이용하여서 운영체제와 하드웨어를 프로그램으로부터 숨길 수 있다. 자바 가상 기계는 자바 컴파일러가 코드를 생성할 대상이 되는 추상화된 기계의 명세를 바탕으로 소프트웨어로 작성된다.
.NET의 CLR
자바의 가상기계 개념은 서로 다른 기종의 컴퓨터들이 연결되어 있는 인터넷 환ㄱ셩에서는 상당히 매력적인 개념이다. 마이크로소프트에서도 닷넷 프레임워크에서 가상기계개념을 도입하였다. 닷넷 프레임워크의 프로그램은 CLR이라고 하는 일종의 소프트웨어 가상기계에서 실행된다.
'백엔드 개발자 기록 일람 > java 학습 기록' 카테고리의 다른 글
05. Java If- else 문 (1) | 2023.12.27 |
---|---|
04. Java 수식과 연산자 (1) | 2023.12.21 |
03. Java 변수와 자료형 (1) | 2023.12.20 |
02. Java 프로그램의 구성 요소 (0) | 2023.12.19 |
00. JAVA (0) | 2023.12.15 |