[JAVA] JAVA

Coastby·2022년 9월 20일
0

LIKELION Back-End School

목록 보기
1/61

자바 소개

○ 컴퓨터

  • 컴퓨터의 하드웨어 : CPU (연산장치), 메모리 (기억장치), 드라이브 (저장), 입출력장치

  • CPU (Central Process Unit, 중앙처리장치) : 명령어를 해독하고 실행하는 장치로, 제어장치, 연산장치, 레지스터들로 구성된다.
    • 제어장치 : 중앙처리장치에서 일어나는 모든 작업을 통제하고 관리하는 일을 한다. 프로그램 명령어를 해석하고, 해석된 명령의 의미에 따라 다른 장치들에게 동작을 지시한다.
    • 연산장치 : 연산장치 (ALU : Arithmetic Logic Unit)는 연산을 하는 장치로, 제어장치의 제어신호에 따라 덧셈, 뺄셈, 곱셈, 나눗셈의 산술연산과 AND, OR, NOT 등의 논리연산을 수행한다.
    • 레지스터들 : 중앙처리장치에 명령어나 데이터 그리고 연산한 결과 등을 저장하는 기억장소이다. 레지스터는 중앙처리장치에서 명령어를 실행하는 동안 필요한 정보들을 저장하는 기억장치로, 레지스터의 크기와 캐수는 중앙처리장치에 따라 차이가 난다.
  • 기억장치 : 캐시기억장치, 주기억장치, 보조기억장치
  • 메인보드 : 컴퓨터의 기본적인 부품을 장착한 기판, CPU, 마이크로프로세서, 보조프로세서, 메모리, 바이오스, 확장슬롯, 접속회로 등

○ 자바

  • 컴파일러 : 소스코드를 컴퓨터 (CPU)가 알아들을 수 있게 번역해주는 번역 프로그램.
  • 인터프리터 언어 : 소스코드를 한 줄씩 인터프리터로 읽어서 실행한다.

이전 프로그램의 종속성

  • 호환성이 없다와 동일한 의미이다. C/C++은 CPU와 OS에 따라 컴파일을 따로 해줘야한다. 즉, OS에 따라 프로그램을 따로 코딩하여야 한다. 쓰는 라이브러리도 달라진다.
  • 프로그램의 플랫폼 호환성이 없는 이유
    • 기계어가 CPU마다 다르다.
    • 운영체제마다 API가 다르다.
    • 운영체제마다 실행파일 형식이 다르다.

자바는 플랫폼 독립성

  • Write Once, Run Anywhere
  • 기계어, 운영체제와 관계없이 실행 가능하다.
  • OS단 위에 JVM을 설치한다 : OS마다 JVM이 달라진다.
  • 하나를 더 거치니까 끊기거나 느려질 수 있다 : 게임은 C/C++을 주로 사용한다.

자바 버전 요약

  • 1.5 : 제네릭, 오토박싱, 열거형, 애노테이션, "for each" 반복 루프
  • 1.8 : 람다, 스트림
  • 15 : Sealed 클래스, 은닉 클래스, 텍스트 블록, 레코드 도입
  • 현업에서는 1.5은 잘 알지만, 1.8은 잘 안 쓰는 곳도 많다. 꼭 자바버전 확인하자.
  • 신규에서는 스프링과 11버전을 주로 쓴다.

JVM

java SE 7 기준 JDK 구조

프로그램이 돌아가는 원리

  • 프로그램을 설치하게 되면 하드디스크 (SSD)에 저장된다.
  • exe (execute) 파일을 클릭해서 실행한다.
  • 프로그램끼지 겹치지 않게 메모리에 올리는 기능은 OS가 하게 된다. (메모리관리가 OS 기능 중 하나다)
  • java에서는 jvm이 OS에 요청하여 메모리를 할당한다. JVM은 할당받은 메모리를 용도에 따라 여러 영역으로 잘 나누어 관리한다.
  • Java Compiler (javac.exe) : java source 파일 (개발자가 작성한 java 언어로 된 파일)을 JVM이 해석할 수 있는 java byte code (.class 파일)로 번역한다.
    • 일반 윈도우 프로그램의 경우, compile하게 되면 컴퓨터가 해석할 수 있는 assembly 언어로 구성된 파일이 생성된다.
  • Class loader : class 파일을 JVM내로 로딩한다. runtime 시에 동적으로 클래스를 로드한다.
  • Execution Engine : 로딩 된 class 파일을 명령어 단위로 읽어서 해석한다. 이때 byte code가 binary code로 변경된다.
    • 일반적인 윈도우 프로그램의 경우 assembler가 assembly 언어를 binary code로 변경한다.
  • Runtime Data Areas : 이곳이 JVM이 OS로부터 할당받은 메모리 영역이다. 해석된 코드는 이 area 내의 각 부분에 배치되어 실질적인 수행이 이루어진다.

참고 : https://ifcontinue.tistory.com/9

메모리 그리기

  • 번지수를 적는다.
  • 화살표를 표시하지 않는다.
  • 차곡차곡 쌓지 않는다.

참고 :
https://highright96.tistory.com/70
https://ifcontinue.tistory.com/9
https://docs.oracle.com/javase/7/docs/index.html

profile
훈이야 화이팅

0개의 댓글