1 분 소요

Java


개요

Java 스터디를 시작하기에 앞서, Java가 도대체 어떤 특성이 있길래 많이들 사용하고 배우는지 알아보자.


Java 왜 배워요..?

WORA
자바를 배운 사람이라면 아마 이 단어를 한 번은 들어봤을 것이다.

“Write Once, Run Anywhere” 줄임말로, 한 번 작성된 코드는 환경에 구애받지 않고 동작한다는 자바의 플랫폼 독립성을 가장 잘 표현한 단어이다.

여기서 플랫폼 독립성이란 하드웨어와 운영체제에 관계없이 자바 프로그램이 동일하게 실행된다는 의미이다.
윈도우에서 작성한 C파일은 맥에서 안 열리지만, 자바는 그것이 가능하다는 뜻.

이것이 가능한 이유는 JVM(Java Virtual Machine)이라는 녀석 덕분인데, JVM에 대해서는 후에 자세히 설명하겠다.

또한 객체 지향 언어인 것도 장점이고,
무엇보다도 우리나라 대기업에서 Java Spring 개발자를 많이 뽑는다고 한다.

플랫폼 독립성

보통의 다른 플랫폼 종속적인 언어들은 하드웨어 위에 OS가 올라가고, 그 위에 프로그램이 실행되는 방식이라면
Java는 운영체제와 프로그램 사이에 JVM이 들어가서 프로그램을 실행시킨다.

자바로 작성한 .java 파일을 컴파일 하면 .class 파일이 생성되는데, 이 클래스 파일은 JVM이 실행 가능한 코드인 바이트 코드로 구성되어 있다.
이 바이트 코드를 JVM이 인터프리터 방식으로 해석하여 사용자가 사용하는 운영체제가 이해할 수 있는 언어로 바꿔서 CPU에 전달한다.

여기서 주목해야 할 점은 클래스 파일은 어떤 플랫폼에서 열어보더라도 동일하다는 것이다. JVM이 알아서 플랫폼에 적합한 기계어로 바꿔주기 때문.

따라서, 사용자가 사용하는 플랫폼에 맞는 JVM만 존재한다면 한 번 작성된 프로그램은 어디서나 실행 가능하다.

이러한 특성 때문에 자바가 플랫폼 종속적이라고는 하지만, JVM은 어쩔 수 없이 플랫폼 각각이 사용하는 환경에 맞처서 설계되어야 되기 때문에 JVM은 플랫폼 종속적이다.

강력하다

자바에는 포인터가 존재하지 않는다. (C랑 C++ 배울 때 나를 그렇게 괴롭히던 놈들…)

메모리 접근과 해제는 자바 시스템이 알아서 관리를 해주기 때문에 사용자는 메모리 접근에 관해서는 생각할 필요가 없어진다.

객체 지향적이다

자바에서는 모든 것이 객체이다. 모든 것이 클래스 위주로 돌아간다. (심지어 main 함수도 클래스다.)

클래스가 뭔지 객체가 뭔지는 차차 알아가자.


Java의 기본적인 구조

자바는 기본적으로 JDK, JRE, JVM 환경으로 구성된다.

이들은 서로 상속 관계에 있다.

JDK > JRE > JVM 순으로 큰 영역이다.

JDK (Java Developer Kit)

Java Developer Kit. 번역하면 자바 개발자 도구이다.

Java 프로그램을 개발하기 위한 도구들을 모아둔 Bundle이다.

컴파일러인 javac, 개발 도구인 javadoc 등이 JRE와 함께 있다.

JRE (Java Runtime Environment)

Java Runtime Environment. 번역하면 Java 실행 환경이다.

자바 프로그램을 실행하기 위한 것들이다.

JVM이 포함되어 있고, math, collection 같은 자바 기본 라이브러리들이 포함되어 있다.

JVM (Java Virtual Machine)

Java Virtual Machine. 자바 가상 머신이라고 그냥 부른다.

JVM에 관해서는 위에서도 조금 설명했지만, OS 위에 올라와있는 가상 머신이다.

자바가 실행될 수 있는 Ground라고 생각하면 된다.

자바에서 프로그램이 컴파일되어 실행되는 과정은 다음과 같다.

  1. 컴파일시 .class 라는 확장자의 바이트코드가 생성된다.
  2. 실행시 JVM이 바이트코드를 기계어로 바꾸어 실행한다.

이번 포스팅에서는 자바를 본격적으로 배우기에 앞서 자바의 기본적인 특성들을 알아보았다.

댓글남기기