자바의 특징
1. 플랫폼의 독립성
JDK (Java Development Kit) ← Java 개발에 필요한 모든 것 포함
├── JRE (Java Runtime Environment) ← Java 실행 환경
│ ├── JVM (Java Virtual Machine) ← 바이트코드 실행
│ ├── Java 라이브러리 (rt.jar 등) ← 필수 API 제공 (java.lang, java.util 등)
│ ├── 클래스 로더 (Class Loader) ← .class 파일 로드
│
├── Javac (Java Compiler) ← .java → .class 변환
├── 기타 개발 도구 (디버거, Javadoc 생성기, JAR 도구 등)
※ Javac :자바 컴파일러 (자바코드 → 바이트 코드)
※ JVM :자바가상머신 (바이트코드 → 해석&실행 )
위에 두개로 인하여 운영체계(window,mac,linux 등)가 중요하지 않음
2. 객체지향 - 모든 것이 클래스
자바의 세계는 모두 객체(클래스)로 이루어져 있습니다.
객체와 클래스는 개념적으로 다르지만 실무에선 혼용해서 많이 사용된다고 합니다.
자바에서 코드를 작성할 때 서로 관련있는 기능을 묶어 하나의 클래스로 관리합니다.
그냥 간단히 자바는 파일로 구성되어 있다고 생각하면 된다.
3. 거대한 생태계
Java는 오랜 시간동안 선호되어 온 프로그래밍 언어입니다.
그렇다보니 방대한 생태계를 가지고 있으며 다양한 오픈소스 라이브러리, 프레임워크 등을 가지고 있으며 관련 학습 자료(공식문서, 기술블로그, 참고서적)도 쉽게 주변에서 찾을 수 있습니다.
검색이 답이다.
4.JVM 메모리 구조

- Method Area(도서관 비유) : 자바 데이터가 저장
- 프로그램 시작 시 정보가 저장됩니다.
- 클래스 정보(.class 파일) 가 올라가는 곳.
- 클래스의 메서드 정보, static 변수 등이 저장됩니다.
- 모든 객체가 공유하는 공용 공간
- Stack Area(접시 쌓기 비유) Ex) main -> introduce->introduce(제거)->main
- 가장 위에 있는 접시를 먼저 꺼내듯 비슷한 구조로 생각하시면 됩니다.
- 선입후출(LIFO) 구조 입니다. 먼저 들어온 것이 가장 늦게 나간다는 뜻입니다.
- 메서드가 호출될 때마다 새로운 접시한장(스택프레임)이 쌓입니다.
- 가장 위의 접시(최근 호출된 메서드)가 먼저 실행됩니다.
- 메서드 실행이 끝나면 스택에서 제거됩니다.
- Heap Area(풍선 비유) : object(객체)가 저장
- new 키워드로 생성된 객체가 저장되는 곳입니다.
- 객체의 실제 데이터가 저장되고 데이터의 주소는 stack 영역에 저장됩니다.
https://cscircles.cemc.uwaterloo.ca/java_visualize/
위 주소에 아래코드를 넣어서 한번 체크하는 게 좋습니다!!!!
Java Visualizer
Write your Java code here: args: +command-line argument stdin (also visualizes consumption of StdIn) x <!-- Execute code using Python 2.7 Python 3.3 , --> <!-- these two make sense, but are not implemented yet hide frames of exited functions show frames of
cscircles.cemc.uwaterloo.ca
public class Main {
static class Person {
// 1. 속성
String name;
int age;
String address;
// 2. 생성자
Person(String name, int age) {
this.name = name;
this.age = age;
}
// 3-1. 소개 기능(이름 나이 출력 기능)
void introduce() {
System.out.println("나의 이름은");
System.out.println(this.name + "입니다.");
System.out.println("나의 나이는");
System.out.println(this.age + "입니다.");
}
// 3-2. 더하기 기능(소개를 하고 더하기 연산 수행)
int sum(int value1, int value2) {
introduce();
int result = value1 + value2;
return result;
}
}
public static void main(String[] args) {
String name = "Steve";
int age = 20;
Person personA = new Person(name, age);
personA.introduce();
int value1 = 1;
int value2 = 2;
int ret = personA.sum(value1, value2);
System.out.println(ret);
}
}
'TIL' 카테고리의 다른 글
TIL-13 자바의 프로젝트 관리(이름, 패키지,클래스) (0) | 2025.02.27 |
---|---|
TIL12 - 컴퓨터의 기억방식 (1) | 2025.02.26 |
TIL10 :자바스크립트 오류 및 개선점 (0) | 2025.02.21 |
TIL9 : 내가 만든 코드(이해도 부족) (1) | 2025.02.20 |
TIL8: 1주차 미니 프로젝트(분석하기 필요) (0) | 2025.02.19 |