[Java] 시작하기 전

정재현·2024년 1월 3일

Java

목록 보기
1/43
post-thumbnail

Java를 배워야 하는 이유

Java 는 공통 실행환경이 있어서 여러 기기에서 실행 가능하다

  • 여러 기기의 운영 체제에서 실행할 수 있는 언어
  • 특히, 앱 개발에 적합

Java 는 세상과 닮아있는 개발언어라 코드를 이해하기 쉽고 유지 보수가 쉽다.

  • 존재하는 물건을 “객체”라고 부르는 세상을 닮도록 만든 객체언어

Java는 안정성이 높아서 프로그래밍 오류를 방지하고 보안상 안전하다.

  • Java 언어로 작성된 문맥을 바이트 코드로 변환하는 변환기(Compiler)가 먼저 오류를 체크 한다.
  • Java 에서 지원하는 보안 기술이 많이 있다

대규모 앱 개발이 가능하다

  • 네트워크 및 데이터베이스 연결 및 통신 등의 작업을 처리하는 API를 제공합니다.

Java를 배우면 다양한 개발 도구와 라이브러리를 사용할 수 있다.

  • 이를 통해 앱 개발에 필요한 작업을 보다 쉽게 처리할 수 있다

개념 정리

JVM

  • Java Virtual Machine 의 약자로 “자바 가상 머신”이라는 뜻
  • 가상 머신이란 가상의 기기를 만들어주는 것을 의미
    → 즉, 여러가지의 기기위에 Java 프로그램을 실행시킬 수 있는 가상의 기기를 만들어주는것을 의미
    → 어느 장비(PC,모바일,서버 등..)에서든 JVM 을 깔아주면 Java를 사용할 수 있는 환경이 된다.

Java 컴파일러

  • 작성한 Java 코드들(.java 파일)을 운영체제가 읽을 수 있는 바이트 코드(.class 파일)로 변환하는 변환기

Java 인터프리터

  • Java .class 코드 해석기
  • 운영체제가 읽은 바이트 코드(.class 파일)를 기계가 실행할 수 있는 기계어로 번역하는 기기

JIT 컴파일러

  • 빠른 Java .class 코드 해석기
  • 인터프리터의 효율을 높여주는 서포터 해석기

자바 메모리 구조(Java Runtime Data Area)

  • 운영체제로 부터 JVM이 할당받아 Java 데이터를 저장하는 메모리 영역

  • Method: 전역변수, 정적변수, 메소드 정보 저장

  • Heap: 런타임 중 생성되는 객체들 저장

  • PC Register : 현재 수행중인 JVM 명령어 저장

  • JVM stack : 호출된 메소드의 매겨변수, 지역변수, 리턴정보 저장

  • Native Method stack - 자바 외 C, C++로 구현된 정보 저장

클래스 로더(Class Loader)

  • Java .class 바이트 코드를 메모리 영역에 담는 운반기
  • JVM으로 class(바이트 코드)를 불러와서 메모리에 저장함

가비지 컬렉터(Garbage Collector)

  • Java 쓰레기 청소기
  • 메모리 영역에서 안쓰는 데이터를 주기적으로 수집하고 해제하는 역할 수행

Runtime

  • 프로그램이 실행중인 상태
  • Runtime 시스템 : 프로그램이 실행중인 상태를 관리하는 시스템

정리하기


데이터가 저장되는 역역

Stack 영역

  • 정적으로 할단된 메모리 영역
  • 크키가 정해져 있는 기본형 변수, 참조형 변수의 주소 값 저장

Heap 영역

  • 동적으로 할당된 메모리 영역
  • 크기가 늘어날 수 있는 참조형 변수의 원본을 저장

저장 관점에서 볼 때 변수의 차이점

  • 기본형 변수 : 원본값이 Stack 영역에 저장
  • 참조형 변수 : 원본값이 Heap 영역에 저장
    • Stack 영역에는 따로 저장해둔 원본값의 Heap 영역주소를 저장

개발환경

JRE ( Java Runtime Envirionment )

  • 자바 실행 환경
  • JRE(JVM)만 있다면 Java 프로그램을 실행만 시킬 수 있음
    • JRE는 .class 파일만 실행 가능
    • JDK가 Java Compiler(Javac) 명령을 통해 .java 파일을 실행 가능한 .class 파일로 변환해줌

JDK ( Java Development Kit )

  • 자바 개발 키트
  • JDK는 JRE(JVM)의 기능을 포함
  • 추가로 JDK는 .java파일들을 .class파일들로 변환해주는 Java Compiler(Javac)기능이 있음
  • JDK는 코드를 디버깅하는 JDB등이 있음

profile
공부 기록 보관소

0개의 댓글