본문 바로가기
공부/자바

Java 란?

by xladmt 2021. 10. 14.
자바란?
Java는 1995년 Sun Microsystems에서 처음 릴리스된 프로그래밍 언어 및 컴퓨팅 플랫폼이다. Java는 많은 서비스 및 애플리케이션이 구축된 안정적인 플랫폼을 제공함으로써 처음엔 작게 시작했지만 오늘날 디지털 세계의 큰 부분을 차지할 정도로 크게 성장했다. 미래 지향적으로 설계되는 새로운 혁신 제품 및 디지털 서비스에도 여전히 계속해서 Java가 사용되고 있다.



자바는 플랫폼에 종속되지 않는다.
  일반적인 프로그래밍 언어는 플랫폼에 종속된다. -> 일반적인 프로그래밍 언어로 만들어진 프로그램은 컴파일러에 의하여 특정 CPU의 기계어로 변환된다. 따라서 이 프로그램은 CPU가 다른 컴퓨터에서는 실행되지 않는다. CPU마다 기계어가 서로 다르기 때문이다. 운영체제도 다르면 실행할 수 없다. 이것을 플랫폼 종속이라고 부른다.

  자바는 플랫폼에 종속되지 않는다. 자바는 가상 기계를 사용하기 때문이다. 가상 기계 안에 기계어가 실행 되면 자바 컴파일러가 소스 프로그램을 가상 컴퓨터의 기계어로 번역한다. 그렇기 때문에 CPU와 운영체제 상관없이 자바를 실행 시킬 수 있다.

 

자바 특징

1. 운영체제에 독립적이다. 

자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM(Java Virtual Machine)하고만 통신하고, JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이서 여러 운영체제에 설치할 수 있는 서로 다른 버전의 JVM을 제공한다.

2. 객체지향언어이다.

자바는 객체지향언어 중의 하나로 객체지향개념의 특징인 상속, 캡슐화, 추상화, 다형성이 잘 적용된 순수한 객체지향언어이다.

3. 자동 메모리 관리

가비지 컬렉터(garbage collector)가 자동적으로 메모리를 관리해주기 때문에 프로그래머는 메모리를 따로 관리 하지 않아도 된다. 

4. 네트워크와 분산처리를 지원한다.

다양하고 풍부한 네트워크 프로그래밍 라이브러리(Java API)를 통해 비교적 짧은 시간에 네트워크 관련 프로그램을 쉽게 개발 할 수 있도록 지원한다.

5. 멀티스레드를 지원한다.

자바에서의 멀티스레드 프로그램은 시스템과는 관계없이 구현 가능하며, 관련된 라이브러리가 제공되므로 구현이 쉽다. 그리고 여러 스레드에 대한 스케줄링을 자바 인터프리터가 담당하게 된다.

6. 동적 로딩(Dynamic Loading)을 지원한다.

자바는 동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다. 그 외에도 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일하지 않아도 되며, 애플리케이션의 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있는 유연한 애플리케이션을 작성할 수 있다.

 

※ 용어 정리

* 기계어 : 컴퓨터가 직접 이해할 수 있는 단 하나의 언어
* 컴파일러 : 프로그래밍 언어를 기계어로 변환시켜주는 프로그램
* 바이트 코드 : 자바 가상 머신에서 실행되는 명령어

 

 

JVM

Java Virtual Machine. 즉 자바를 실행하기 위한 가상 기계라고 할 수 있다. 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에, 자바 애플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.

 

일반 프로그램의 코드는 OS만 거치고 하드웨어로 전단되는데 비해 Java프로그램은 JVM을 한 번 더 거치고, 하드웨어에 맞게 완전히 컴파일된 상태가 아니고 실행 시에 해석(interpret)되기 때문에 속도가 느리다는 단점을 가지고 있다. 그러나 요즘은엔 바이트 코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술이 적용되어서 속도의 격차를 많이 줄였다.

 

Java 프로그램의 실행 과정

1. 모든 소스코드는 .java포맷의 파일로 작성된다.

2. javac 컴파일러는 자바코드를 .class파일로 컴파일한다. 이 때, .class파일은 JVM이 이해할 수 있는 바이트코드(bytecode)로 이루어진다.

3. JVM의 인터프리터와 JIT 컴파일러는 바이트코드를 각 OS가 실행할 수 있는 기계어로 변환시킨다.

4. 프로세서는 기계어에 따라 동작을 수행한다.

 

 

 

 

[참고]

https://93jpark.tistory.com/54

 

[Java] 자바의 컴파일 과정

기존의 문제🥲 이전에 전통적인 언어의 컴파일과 프로그램 실행과정에 대해 알아보았다. 기존의 문제는 사용자의 프로그램 실행 환경에 맞춰서 다양한 버젼의 프로그램 개발이 필요로 했다는

93jpark.tistory.com

 

'공부 > 자바' 카테고리의 다른 글

배열 선언과 초기화  (0) 2024.05.26
조건문과 반복문  (0) 2024.05.25
연산자  (0) 2024.05.24
상수와 리터럴  (0) 2024.05.22
변수와 자료형  (2) 2024.05.22