반응형

1. Java 문법 기본
✅ 객체 지향 개념
📌 클래스(Class)와 객체(Object)
클래스(Class): 객체를 생성하기 위한 설계도 또는 틀. 객체가 가져야 할 속성(변수)과 동작(메서드)을 정의함.
객체(Object): 클래스에 정의된 내용을 바탕으로 메모리에 할당된 실체.
class Car { String brand; int speed; void drive() { System.out.println("Driving " + brand + " at " + speed + " km/h"); } } public class Main { public static void main(String[] args) { Car myCar = new Car(); // 객체 생성 myCar.brand = "Hyundai"; myCar.speed = 120; myCar.drive(); } }
📌 상속(Inheritance)
- 부모 클래스의 속성과 메서드를 자식 클래스가 상속받아 사용 가능.
- 코드 재사용성을 높이고 유지보수성을 향상시킴.
📌 인터페이스(Interface)
- 클래스가 반드시 구현해야 하는 메서드를 명세하는 역할.
- 다중 상속을 허용하여 유연한 설계 가능.
📌 추상 클래스(Abstract Class)
- 공통적인 기능을 제공하지만, 직접 객체를 생성할 수 없음.
- 일부 구현된 메서드와 추상 메서드를 가질 수 있음.
📌 캡슐화(Encapsulation)와 다형성(Polymorphism)
- 캡슐화: 데이터(변수)와 이를 조작하는 메서드를 하나의 단위로 묶어 보호.
- 다형성: 같은 인터페이스나 상위 클래스를 공유하면서 다른 방식으로 동작 가능.
2. Spring Boot에서 자주 쓰이는 Java 기능
✅ 어노테이션 기반 프로그래밍
📌 어노테이션(Annotation)이란?
- Java 코드에 메타데이터(정보)를 추가하는 역할.
- 런타임 또는 컴파일 타임에 동작하며, 프레임워크에서 특정 기능을 제공하는 데 사용됨.
- Spring Boot에서는 의존성 주입(DI), 트랜잭션 관리, 빈(Bean) 설정 등에 활용됨.
📌 주요 어노테이션
@Component,@Service,@Repository: Spring Bean 등록@Autowired,@Qualifier: 의존성 주입(DI)@Configuration,@Bean: Bean 생성 및 설정@Transactional: 트랜잭션 관리
3. JVM과 메모리 관리
✅ JVM (Java Virtual Machine) 구조 이해
📌 JVM이란?
- Java 프로그램을 실행하는 가상 머신으로, 운영체제에 독립적인 실행 환경 제공.
- 바이트코드를 해석하여 실행하고, 메모리를 관리하는 역할 수행.
📌 JVM의 주요 구성 요소
- ClassLoader:
.class파일을 로드하는 역할. - Runtime Data Area: JVM이 실행 중에 사용하는 메모리 영역.
- Heap: 객체가 저장되는 공간 (GC 대상)
- Stack: 메서드 실행 시 사용하는 메모리 공간 (지역 변수 저장)
- Method Area: 클래스 메타데이터 저장.
- PC Register: 현재 실행 중인 명령어 주소 저장.
- Native Method Stack: JNI(Java Native Interface) 호출을 위한 영역.
4. 멀티스레딩과 동시성 처리
✅ 멀티스레딩이란?
- 하나의 프로세스 내에서 여러 개의 스레드를 실행하여 동시에 여러 작업을 수행하는 방식.
- CPU 사용률을 높이고 응답성을 개선할 수 있음.
📌 주요 개념
Thread,Runnable: 스레드 생성 및 실행ExecutorService,Callable,Future: 비동기 처리synchronized키워드: 동기화 처리 (경합 방지)
📌 비동기 처리
- Spring Boot의
@Async를 활용하여 비동기 실행 가능. CompletableFuture를 이용한 비동기 작업 실행.
5. 자바 코드 리팩토링 & Kotlin과 비교
✅ Java → Kotlin 변환 시 고려해야 할 것
📌 Java의 특징
- Null 값이 존재할 수 있어
NullPointerException발생 가능. Optional<T>을 활용하여 Null 안전성 보장.- Checked Exception과 Unchecked Exception이 존재.
📌 Kotlin의 개선점
- Null 안전 (
?.,!!,lateinit) - Data Class를 통한 간결한 데이터 객체 선언 (
data class) - 고차 함수 및 람다를 통한 함수형 프로그래밍 지원.
6. Kotlin과 Java의 상호운용성
✅ Kotlin에서 Java 코드 사용하기
@JvmStatic,@JvmOverloads등의 어노테이션을 활용하여 Java와 Kotlin 간 상호 운용 가능.- Java 코드에서 Kotlin의
getter/setter를 호출할 수 있음.
✅ Java에서 Kotlin 코드 사용하기
- Kotlin의
object를 Java에서 싱글턴처럼 활용하기. - Kotlin의
extension function을 Java에서 사용하기. @JvmName을 활용한 함수 이름 변경.
🎯 결론: Java를 어느 정도까지 공부해야 할까?
- Kotlin으로 개발하면서도 Spring Boot 내부 동작 원리를 이해할 정도로 Java를 공부하는 것이 좋음.
- Java 코드를 해석할 수 있으면 Spring, JPA, Hibernate 등의 라이브러리를 깊이 이해할 수 있음.
- 목표: "Java 코드가 읽히고, 필요하면 수정할 수 있는 수준"이 되면 충분.
반응형
'Backend' 카테고리의 다른 글
| 구글 유튜브 API (YouTube Data API) 활용 (0) | 2025.03.18 |
|---|---|
| JetBrains IDE에서 GitHub Copilot 사용하기 (0) | 2025.03.17 |
| M1 MacOS Ruby & Rails 셋팅 (ruby build failed error, rbenv) (0) | 2024.08.16 |
| gradle error - NoClassDefFoundError (org.jetbrains.kotlin.com.intellij.pom.java.LanguageLevel) (0) | 2023.04.11 |
| Intelij querydsl - cannot find symbol q class 해결 기록일지 (0) | 2022.11.14 |