본문 바로가기

Java

Java?

훈수/저작권 관련 지적 환영합니다 - 댓글 또는 audgnssweet@naver.com

JAVA란?


처음에는 가전제품에 들어갈 소프트웨어를 위해 개발했으나, 언어 특유의 '플랫폼 독립성' 덕분에 웹에서 오히려 더 성공을 이룬 프로그래밍 언어입니다. 현재 가장 많이 사용되는 언어들 중 하나이기도 합니다. 제가 공부하는 Spring을 이용한 백엔드 개발에서도 자바가 사용됩니다.

 

왜 웹에서 성공했을까?
예전 자바 등장 초기에는 웹에 기본적으로 텍스트가 메인이었다고 합니다.
그런데 웹에 플래시처럼 정적 컨텐츠가 아닌 것들이 도입되었습니다. 그런데 그런 것들은 웹 위에서 '프로그램'을 돌리는 것이었죠.
당시 웹사이트들은 다양한 플랫폼 (웹 브라우저)에 모두 적용되는 사이트를 만들기 위해 플랫폼별로 돌아가는 프로그램을 짜야 하는 것이었습니다.
이때 자바는 특유의 플랫폼 독립성으로, JVM만 있다면 모두 실행되는, 그러니까 웹 플랫폼에 종속적이지 않은 웹을 만들 수 있게 해주었습니다.

-이것과 비슷한 기능을 하는 것이 ActiveX와 adobe Flash등이라고 합니다.


JAVA 언어의 특징


  • 플랫폼 독립적
  • WORA (Write Once Run Anywhere)
  • JVM (Java virtual machine)
  • byte code
플랫폼 독립적
어떤 환경에서도 '같은 코드로' 실행이 가능하다. 플랫폼 독립적인 자바의 특성을 나타냅니다.

여기서 말하는 플랫폼이란, H/W(cpu) + OS 를 말합니다.
같은 자바 코드로 윈도우 환경에서도 리눅스 환경에서도 안드로이드 환경에서도 CPU가 다르더라도 모두 프로그램의 실행이 가능합니다.

이것은 엄청난 장점입니다.
JAVA 이전의 언어들은(ex. c언어) 플랫폼간 호환성이 없어서 소스코드를 다른 컴파일러로 재컴파일 하던가,
아예 소스코드 자체를 OS에서 제공하는 API에 따라 다시 만들어야 했었습니다.

JAVA는 이런 플랫폼 독립성을 확보하여 소프트웨어의 개발, 유지 보수에 매우 유리한 언어라고 할 수 있습니다.
그렇다면 JAVA는 어떻게 플랫폼 독립성을 확보할 수 있었을까요?

WORA
WORA는 Write Once Run Anyware의 약자로, 한 번 만든 코드는 어느 플랫폼에서나 실행이 가능한 자바의 플랫폼 독립성을 나타내는 말입니다.

JVM
Java virtual machine의 약자로, Java가 플랫폼 독립적일 수 있게 해주는 핵심입니다.

기존의 언어들은 컴파일 후 link과정을 통해 실행파일로 만들어져 운영체제 위에서 돌아갑니다.

Java 코드들은 Java Compiler에 의해 .class파일로 만들어지게되고, JVM이 이를 실행해줍니다.
Java는 실행파일을 따로 만들지 않습니다. 단지 JVM이 컴파일된 .class파일들만을 가지고 실행시 필요한 부분들을
interpret하여 필요할 때 플랫폼에게 실행을 요청합니다.

즉,
code - compile된 파일 - 실행파일 - OS - H/W (기존 언어)
JAVA code - .class파일 - JVM - OS - H/W (자바 언어)

위와 같은 계층을 갖기에 기존 언어들은 플랫폼 종속적이고
Java 언어는 JVM만 있으면 어느 플랫폼에서도 같은 코드로 실행할 수 있기에 플랫폼 독립적인 것입니다.

JVM은 OS와 직접 맞닿아 있는데 그럼 JVM은 플랫폼 종속적인 것 아닌가요?
맞습니다. JVM은 어느 환경에서도 같은 Java code의 동작을 보장해야하기 때문에, 플랫폼별로 JVM의 개발이 이루어집니다.

하지만 이를 활용하는 개발자들은 JVM을 신경쓰지 않고 Java code만으로 같은 동작을 보장받을 수 있고, 이것이 Java의 장점인 것이죠.

Byte code
Java code가 Compile되어 .class파일로 만들어졌을 때, 이 .class파일 안에 기술된 코드를 Byte code라고 부릅니다.
JVM은 이 Byte code를 기반으로 interpret하여 동작하겠죠?


JRE


JRE는 Java runtime environment의 약자로 Java의 실행 환경을 뜻합니다.

 

JRE = JVM + Java API

Java가 실행되려면 당연히 JVM이 있어야겠죠? (앞서 설명)

또한 Java 측에서 제공하는 기본 API들(Java APP에서 거의 무조건 쓰이는 기능들을 모아놓은 라이브러리와 비슷한 개념)을 갖고 있어야 Java APP을 실행하는데 무리가 없을 것입니다.

 

API는 여기를 참고하세요 -> (링크 예정)



JDK


JDK는 Java Development Kit의 약자로 Java의 개발 환경을 뜻합니다.

 

JDK = JRE + Development tools

여기서 말하는 Development tools는 javac(컴파일러), java(JVM호출기), jdb(디버거) 등의 개발자 도구를 말합니다.

 

JDK도 또 세분화되어 종류가 나뉘는데요,

  1. Java SE
  2. Java ME
  3. Java EE

대표적으로 SE와 EE에 대해서만 알아보면

SE는 Standard Edition으로, 기본적인 데스크톱 응용 프로그램 등을 만들기 위해 구성된 모델입니다.

EE는 Enterprise Edition으로, 기업용 서버사이드 개발 관련 API들이 추가된 모델입니다.


 

'Java' 카테고리의 다른 글

상수  (0) 2021.03.23
var변수  (0) 2021.03.23
Java의 데이터 타입  (0) 2021.03.16
Java의 식별자 (좋은 이름 붙이기)  (0) 2021.03.16
Hello, World!  (0) 2021.03.09