[JAVA] 자바의 특징(JVM, JDK, JRE)

Jimin_Note·2022년 6월 26일
0

☕️JAVA

목록 보기
1/8
post-thumbnail

📍JAVA

  • 플랫폼 독립성
    (<-> 플랫폼 종속성 : 기존 프로그래밍 언어들(C, C++등 )의 컴파일러는 기계어 코드로 변환할 때 프로그램이 실행될 대상 컴퓨터의 CPU와 운영체제에 종속적인 코드로 변환한다)

🌱WORA(Write Once Run Anywhere)

한번 쓰기로 어디서나 실행가능
자바는 JVM(Java Virtual Machine)이 있으면 어디서나 자바로 작성된 프로그램에 동일한 실행 환경을 제공하며 동일한 실행결과를 기대할 수 있다.
즉, 한 번 프로그램을 작성하면 어느 하드웨어에서나 어느 운영체제에서나 자바 프로그램을 실행시킬 수 있다.

기존 프로그래밍 언어들(C, C++등 )을 예로 들면
Intel CPU를 가진 리눅스 환경에서 개발한 응용 프로그램은 Intel CPU + 리눅스를 제외한 다른 운영체제와 호환되지 않는다

  • 기계어가 CPU마다 상이하기 때문
  • 운영체제마다 API가 서로 다르기 때문
  • 운영체제마다 실행파일 형식이 서로 다르기 때문

JAVA는 개발자가 한 전 자바 응용프로그램을 작성하면 어떠한 운영체제에서든지 호환이 된다.

🌱실행환경(byte code, JVM)

  • byte code
    : 자바 컴파일러가 자바 소스 프로그램을 컴파일한 기계어(JVM에서 실행되는 기계어)
    바이트 코드는 직접 실행되지 않고, JVM이 인터프리터 방식으로 바이트 코드를 해석하여 해당 플랫폼에서 실행시킨다.
    자바 개발 환경(JDK)에서 바이트 코드를 직접 볼 수 있도록 컴파일된 자바 클래스 파일을 disassemble하는 도구를 제공하여 2진수를 텍스트코드로 변환한다.
  • JVM
    1. 자바 컴파일러는 자바 소스 프로그램을 바이트 코드로 컴파일하여 클래스 파일을 생성.
    2. JVM은 클래스파일에 들어 있는 바이트 코드를 하나씩 실행.
    3. 사용자가 자바 프로그램을 실행하는 도중 JDK 라이브러리에 들어있는 다른 클래스 파일이나 사용자가 작성한 다른 클래스 파일이 필요하면, 그 때 필요한 클래스 파일을 로딩하고 실행.(대부분 JVM은 로딩으로 인한 시간 지연을 예방하기 위해 미리 JDK라이브러리를 미리 로딩)즉, 각각의 클래스 파일들이 필요할 때마다 그때그때 메모리에 로딩되어 실행되기 때문에 링크 과정이 없다.

🌱자바 개발 환경 구축

  • JDK : Java Development Kit (개발자용)
    자바 응용프로그램 개발에 필요한 자바 컴파일러 및 기타 도구

javac 자바 소소를 바이트 코드로 변환하는 컴파일러
java jre의 bin 디렉토리에도 동시에 설치되어 자바 응용프로그램 실행기
javadoc 자바 소스 프로그램으로부터 HTML형식의 API 도큐먼트 생성
jar 자바 클래스 파일을 압축한 자바 아카이브 파일(JAR)을 생성하고 관리하는 유틸리티
jbd 자바 응용프로그램 실행 중 오류 찾는 데 사용하는 디버거
javap 클래스 파일에 담긴 바이트 코드를 자바 소스와 함께 보여주는 디어셈블러
appletviewer 웹 브라우저 없이 애플릿 응용프로그램을 실행하고 디버깅하는 유틸리티

  • JRE : Java Development Kit (사용자용)
    클래스 라이브러리의 소스 및 자바 응용 프로그램 샘플 소스등 포함

//jimin.java

public class jimin {  // class 명과 .java 파일명이 동일해야 한다.
	public static void main(String[] args){ // 프로그램 실행은 main()메소드부터 시작
    var i = "world!"; //지역변수 선언
    System.out.println("hello"+i); //System.out.println()은 JDK에서 개발자에게 제공하는 자바API
    }

자바의 특징

  • 객체 지향
    클래스 계층 구조, 상속성, 다형성, 캡슐화 등을 지원

  • 멀티스레드
    하나의 프로그램에서 운영체제 도움없이 다수의 스레드 동시 실행 가능

  • 플랫폼 독립성
    JVM를 사용하여 하드웨어나 운영체제를 막론하고 실행 가능

  • 소스와 클래스 파일
    하나의 자바소스 파일에 여러 개의 클래스 작성 가능
    하나의 클래스 파일에서는 반드시 하나의 컴파일.class된 자바 클래스만 포함

public class A{	//A.class
...}
class B{	//B.class
...}
class C{	//C.class
	class D{	//C$D.class
	...}
...}
profile
Hello. I'm jimin:)

0개의 댓글