[Java] 자바란?

Woozy9ucci·2022년 12월 22일

자바의 특징

  1. 운영체제에 독립적이다.
    우리가 작성한 소스코드(.java)를 컴파일러가 자바 바이트코드(.class)로 변환해주고 JVM이 자바 바이트코드를 OS가 이해할 수 있도록 binary 코드로 변환하여 준다. 때문에 자바는 OS에 종속받지 않고 어디서든 실행이 가능하다.

  2. 객체지향 언어이다.
    로봇트로 예를 들어 로봇의 오른팔, 왼팔, 머리, 몸통, 다리 등 (객체) 각각 고유의 기능을 가지고 있고 이들이 모여 로봇이 동작하는 형식을 떠올리면 될 것 같다. 자바는 객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향 언어로 평가받는다.
    -캡슐화 -> 접근 제어자를 통환 캡슐화, 은닉화,
    -다형성 -> List list = new ArrayList();

  3. 자동 메모리 관리
    가비지 컬렉터가 자동적으로 메모리를 관리해주기 때문에 따로 메모리 관리를 하지 않아도 된다.
    -JVM 메모리구조 -> 크게 메소드(클래스), 스택, 힙 ... 영역

    출처 : https://steady-coding.tistory.com/305
    상세내용 링크

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

  5. 멀티쓰레드를 지원한다.
    운영체제와 관계없이 구현가능하며 관련라이브러리(Java API)가 제공되므로 구현이 쉽다.
    여러 쓰레드에 대한 스케쥴링을 자바 인터프리터가 담당하게 된다.
    -인터프리터? -> https://cheershennah.tistory.com/221

  6. 동적 로딩(Dynamic Loading)을 지원한다.
    동적 로딩을 지원하기 때문에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다는 장점이 있다. 일부 클래스가 변경되어도 전체 애플리케이션을 다시 컴파일 하지 않아도 되며, 변경사항이 발생해도 비교적 적은 작업만으로도 처리할 수 있다.
    참고: 자바의 단점으로 속도문제가 가장 대표적. JIT컴파일러와 Hotspot과 같은 신기술의 도입으로 JVM기능 향상 -> 속도문제 개선됨. 추후에 공부해보자.

JVM(Java Virtual Machine)

자바를 실행하기 위한 가상 컴퓨터
자바로 작성된 애플리케이션은 모두 JVM에서만 실행되기 때문에
애플리케이션이 실행되기 위해서는 JVM이 반드시 필요하다.
또한 완전히 컴파일된 상태가 아니고 실행시에 해석(interpret) 되기 떄문에 속도가 느리다는 단점을 가지고 있다. 그 후에 바이트코드(.class)를 하드웨어의 기계어(binary code)로 바로 변환해주는 JIT 컴파일러등을 통해 속도의 격차를 많이 줄였다.

Quiz. JVM은 OS종속적이다? (O / X).

JDK? JRE?

JDK , JRE, JVM

  • JDK(JavaDevelopmentKit) : JRE + 컴파일러 + (JDBC, javadoc, ...)
  • JRE(Java Runtime Environment) : 실행에 필요한 파일들(lib, ...) + JVM
    (소스코드).java <컴파일러>->-> (바이트코드).class ->-> 각 OS에서 실행
  • JVM(Java Virtual Machine) : (class file 안에 들어있는)-> JRE에 있겠쥬?
    .class(바이트코드)를 OS에 특화된 코드로 변환하여 실행 (통역가)

0개의 댓글