[2주차] 자바 프로그래밍

Useful·2023년 3월 14일
0

Java

목록 보기
1/10
post-thumbnail

본 게시글은 수업 때 들은 내용을 참고하여 필자 본인이 이해하기 쉽게 풀어서 적었습니다.


1. 메인메모리(RAM)의 구조


메인메모리는 4가지의 영역으로 나누어진다.

  • 코드(Code)
  • 데이터(전역변수, 등)]
  • heap
  • stack

먼저 C드라이브에 있는 프로그램(Test.exe)를 클릭, 실행했다고 가정하자.

  1. HDD → 메인메모리 (이하 RAM) 으로 프로그램이 이동된다.
  2. 이때 프로그램(Test.exe)은 프로세스라는 형태로 CPU의 처리를 기다린다.
  3. RAM → CPU(프로세서)로 이동해서 프로세스(Test.exe)가 실행된다.

적절한 결과값을 CPU(마이크로 프로세서) 가 데이터heap같이 적절한 공간에 저장한다.





2. Java에서의 컴파일되는 과정을 알아보자


Java에서 컴파일 시, 먼저 'ByteCode'로 변환된다.

잠만, ByteCode가 뭔데 ?

작성된 소스 코드를 가상머신(JVM)이 이해할 수 있는 중간 코드로 컴파일한 것을 말한다.
바이트 코드를 뜯어보면 0과 1의 기계어가 아닌 어셈블리어 형태로 되어있는 것을 알 수 있다.

그러면 JVM은 뭐야 ?

JVM(Java Virtual Machine) 은 직역하면 '자바를 실행하기 위한 가상 기계' 이다.

  • OS(Windows, MacOS, Unix 등..)에 종속되지 않고 CPU가 Java를 인식, 실행할 수 있게 도와주는 가상의 컴퓨터라고 보면 된다.
  • 왜냐면 Java의 가장 큰 장점 중 하나는 OS(운영체제)에 종속되지 않는다는 특징이 있기 때문이다.

만약 여러분들이 파일하나를 생성해서 자바 소스코드(Hello.java)를 작성했다.

  • 이때 Hello.java는 컴퓨터가 이해하지 못하는 원시코드이다.
  • CPU는 이 원시코드(Hello.java)를 인식하지 못하므로 컴파일(Compile)을 해줘야 한다.

컴파일 과정을 거친다면,

  • JDK 안에 있는 Java Compiler를 통해 Hello.java → Hello.class 파일로 변환된다.
  • 이 Hello.class 는 JVM(Java Virtual Machine)이 인식할 수 있는 바이트코드(Hello.class) 이다.


하지만..?

  • 바이트코드(Hello.class)는 기계어로 되어있지 않기때문에 CPU가 인식할 수 없다.
  • 이때, JVM이 OS가 바이트코드(Hello.class)를 제대로 이해할 수 있도록 해석해준다.
  • 따라서, 자바 바이트코드는 JVM이 실행해주기 때문에 OS에 상관없이 어디서나 실행이 가능하다.





3. C언어와 Java의 차이점을 알아보자


C언어의 실행파일(.exe)는 운영체제 바로 위에서 실행.

Java의 실행파일(.class)는 운영체제 위에 자바 가상기계(JVM) 위에서 실행.





4. JDK와 JRE에 대해 알아보자


JDK (Java Development Kit) 란?

자바 개발자 도구, Java로 소프트웨어를 개발할 수 있도록 여러 도구를 제공한다.

JDK의 bin 디렉터리에 포함된 주요 개발 도구들..

  • javac : 자바 소스를 바이트 코드로 변환하는 컴파일러 (자바 컴파일러)
  • java : jre의 bin 디렉터리에도 있는 자바 응용프로그램 실행기
  • jar : 자바 아카이브 파일 (JAR)을 생성 및 관리하는 유틸리티
  • jdb : 자바 디버거
  • JRE (Java Runtime Enviroment) : Java가 동작하는데 필요한 JVM, 라이브러리 등 다양한 파일들을 포함한다. Java를 실행하려면 JRE를 설치해야한다.
  • JVM (Java Virtual Machine) : Java가 실제로 동작하는 가상 환경

JDK의 종류

  • Java SE (Java Standard Edition)
    • 표준 에디션의 자바 플랫폼. 자바 언어의 핵심 기능을 제공.
    • 주요 패키지는 java.lang., java.io., java.util., java.awt., javax.rmi., javax.net.
  • Java EE (Java Enterprise Edition)
    • JavaSE에 웹 어플리케이션 서버에서 동작하는 기능을 추가한 플랫폼
      즉, 서버 측 개발을 하기 위해 필요.
    • JSP, Servlet, JDBC 등 기업용 애플리케이션을 개발하는데 필요한 다양한 것들이 포함된 플랫폼.
  • Java ME (Java Micro Edition)
    • 임베디드 기기들에서 구동되기 위한 환경을 제공하는 API를 모아둔 플랫폼.
    • 제한된 자원을 가진 휴대전화, PDA 등에서 Java 프로그래밍 언어를 지원하기 위해 만든 플랫폼 중 하나이다.

JRE (Java Runtime Environment) 란?

  • 자바 실행 환경, Java 프로그램 실행하려면 JRE 설치해야함

정리해보자

  • Java로 프로그램을 직접 개발하려면 JDK가 필요
  • Java로 만들어진 프로그램을 실행시키려면 JRE가 필요





추가 정보 )

  • rt.jar 는 상시 메모리에 떠있음
  • 모든 클래스 파일들의 객체들은 Object.class를 상속받는다



이클립스 설치는 여기 로 들어가세요






다음 글을 참고하였습니다! 소중한 정보 감사합니다 😘
https://doozi0316.tistory.com/
https://coding-factory.tistory.com/826

profile
1 commit = 1 life

0개의 댓글