Java

Java

[Java] 메모리 구조

T 메모리 구조 JDK를 이용해 개발된 자바 애플리케이션이 JRE에 의해 JVM상에서 실행되면 OS는 JVM에 메모리를 할당한다. 이때, 자바 애플리케이션은 JVM이 OS로부터 할당받은 메모리를 사용하게 된다. 기계어를 포함한 모든 프로그래밍 언어의 공통된 메모리 사용 방식은 아래와 같은데 코드 실행 영역과 데이터 저장 영역으로 나누어진다. 코드 실행 영역은 프로그램의 코드가 저장되는 영역으로 텍스트영역이라고도 부른다. 자바 실행 파일(.java)를 컴파일러가 바이트 파일(.class)로 바꿔 JVM 메모리에 로드하는데 이때 바이트파일이 저장되는 곳이 코드 실행 영역이다. 데이터 저장 영역은 프로그램의 데이터가 저장되는 메모리 영역인데 OOP에서는 우리가 잘 아는 Static, Stack, Heap의..

Java

[Java] Collection

Java Collection Framework 자바에서는 효율적인 데이터의 추가 · 삭제 · 검색 등을 돕기 위한 자료구조 인터페이스들을 java.util 패키지에 포함시켜 놓았다. 이들을 Collection Framework라고 총칭하며 우리가 자주 사용하는 List , Set, Map이 대표적이다. 아래 그림을 보면 Collection Framework는 크게 Collection 인터페이스와 Map 인터페이스로 나뉜다. List, Set의 경우 객체를 추가 · 삭제 · 검색하는 방법에 공통점이 있기 때문에 Collection 인터페이스를 정의해 이를 확장하는 방식으로 사용하고 있다. 기술블로그를 쓰면서 Inpa님의 글을 많이 참고하는데 ArrayList, HashMap 등 Collection의 실..

Java

[Java] OOP와 OOP의 특성

목표 예전부터 누군가 나에게 OOP가 무엇인지 묻는다면 자동차를 예로 들거나, "원하는 객체를 만들어서 레고처럼 조립하는 거야!" 라는 식으로 두루뭉실하게 설명하며 "OOP는 무엇이다!" 라고 명확하게 정의하지 못했다. 오늘 글을 쓰면서 OOP에 대해 확실히 이해해보려고 한다. OOP언어를 배우면 가장 먼저 마주하는 내용이 OOP의 특성이다. OOP의 대표적인 4가지 특성을 글로 정리해 항상 이것을 참고하며 프로그램을 설계, 구현하고자 한다. OOP란 OOP(Object-Oriented Programming) 객체 지향 프로그래밍 현실 세계에서 어떤 제품을 만들 때는 부품을 먼저 만들고, 이 부품들을 하나씩 조립해서 완성품을 만든다. 소프트웨어를 개발할 때에도 부품에 해당하는 객체를 먼저 만들고, 이 객..

Java

[Java] Garbage Collector

목표 Java의 가장 널리 알려진 장점은 "JVM을 통해 모든 OS에서 동작한다"는 것이지만 "Java는 OS로부터 할당받은 메모리를 자동으로 관리한다"는 매우 큰 장점 또한 존재한다. Java에서 메모리를 자동으로 관리하는 관리자는 누구이며 어떤 방식으로 관리하는 것인지 알아보자. Java 메모리 관리자 GC(Garbage Collector) GC(Garbage Collector) Java GC는 JVM의 Execution Engine 내부에 존재하는데, OS로부터 할당 받은 메모리 영역(JVM Memory)을 자동으로 관리하는 기능이다. GC는 동적으로 할당된 메모리 영역(Heap)에서 더 이상 사용되지않는 객체를 식별하고 제거하여 메모리를 회수한다. 이를 통해 명시적으로 메모리 관리를 수행하지 않아..

Java

[Java] SE/JRE/JDK

Java SE, JDK, JRE ✅ Java SE(Java Standard Edition) Java SE는 Java에서 가장 기본이 되는 자바의 표준안이며 Java가 어떠한 문법적인 구성을 가지고 있는지, 어떠한 라이브러리들을 제공하는지 등을 정의하고 있다. Java SE이 이외의 Edition으로는 Java EE(Enterprise Edition), ME(Micro Edition)등이 있다. Java SE는 실제 소프트웨어가 아니며 실제 Java 소프트웨어를 개발하는데 필요한 설계도라고 생각하면 될 것이다. 아래는 Oracle에서 공개하는 Java SE의 공식문서 링크이니 궁금하면 들어가서 한번 보면 좋을 것 같다. 현재는 Java SE 20버전까지 올라와 있다. Java Platform, Sta..

Java

[Java] Java코드가 실행되기까지

목표 자바 기초를 다시 공부하면서 문득 내가 작성한 자바 코드가 어떻게 동작하는지 알고싶어졌다. 이번 글을 정리하면서 자바 코드가 바이트코드로 변환되는 과정과 JVM에서 바이트코드를 기계어로 바꾸는 과정을 완벽하게 이해하고자 한다. Java 코드가 바이트코드로 변환되는 과정 Java는 사람이 읽기 쉬운 High-Level Language이기 때문에 기계가 읽을 수 없다. 따라서, 0과1로 이루어진 이진수의 코드로 변환해줘야하는데 그 과정을 간단하게 표현하자면 아래와 같다. 우리가 작성한 소스파일(.java)이 JDK의 java compiler를 통해 바이트코드파일(.class)로 변환되고 JRE의 JVM이 이를 OS가 이해할 수 있는 기계어로 변환한다. 좀 더 자세하게 들여다 보자. 우선, 소스코드를 기..

Jisung Jung
'Java' 카테고리의 글 목록