[Java] Reflection
·
java
개요Reflection은 런타임 환경에서 클래스, 생성자, 필드, 메서드, Annotation 등을 동적으로 조회하고 조작할 수 있게 도와주는 기술입니다. 이를 통해 컴파일 시점이 아닌 런타임 시점에 객체를 생성하거나 필드에 접근하고 메서드를 호출하는 것이 가능하며, Spring에서는 Dependency Injection, Bean 생성, Anntation 처리 등을 위해 Reflection을 적극적으로 활용합니다. 해당 글에서는 Reflection을 사용하는 이유와 주요 기능들을 예제와 함께 다뤄보도록 하겠습니다. Reflection이란앞서 말한 것처럼, Reflection은 런타임 환경에서 클래스, 생성자, 필드, 메서드, Annotation 등을 동적으로 조회하고 조작할 수 있게 도와주는 Java..
[Java] Servlet
·
java
개요Servlet은 자바로 개발된 웹 애플리케이션에서 클라이언트의 HTTP 요청에 대해 적절한 동작을 수행하고 응답을 작성하도록 설계된 자바 인터페이스입니다. 검색해보면 Servlet에 대해 대부분 이와 같이 정의합니다. 하지만, 요청에 대해 적절한 동작을 수행하고 응답한다라는 정의는 어딜가도 흔히 볼 수 있는 정의입니다. 실제로 오라클에서도 아래와 같이 Servlet을 정의합니다.What Is a Servlet?A servlet is a Java programming language class that is used to extend the capabilities of servers that host applications accessed by means of a request-response prog..
[Java] Collection
·
java
Java Collection Framework 자바에서는 효율적인 데이터의 추가 · 삭제 · 검색 등을 돕기 위한 자료구조 인터페이스들을 java.util 패키지에 포함시켜 놓았다. 이들을 Collection Framework라고 총칭하며 우리가 자주 사용하는 List , Set, Map이 대표적이다. 아래 그림을 보면 Collection Framework는 크게 Collection 인터페이스와 Map 인터페이스로 나뉜다. List, Set의 경우 객체를 추가 · 삭제 · 검색하는 방법에 공통점이 있기 때문에 Collection 인터페이스를 정의해 이를 확장하는 방식으로 사용하고 있다. 기술블로그를 쓰면서 Inpa님의 글을 많이 참고하는데 ArrayList, HashMap 등 Collection의 실..
[Java] OOP와 OOP의 특성
·
java
목표 예전부터 누군가 나에게 OOP가 무엇인지 묻는다면 자동차를 예로 들거나, "원하는 객체를 만들어서 레고처럼 조립하는 거야!" 라는 식으로 두루뭉실하게 설명하며 "OOP는 무엇이다!" 라고 명확하게 정의하지 못했다. 오늘 글을 쓰면서 OOP에 대해 확실히 이해해보려고 한다. OOP언어를 배우면 가장 먼저 마주하는 내용이 OOP의 특성이다. OOP의 대표적인 4가지 특성을 글로 정리해 항상 이것을 참고하며 프로그램을 설계, 구현하고자 한다. OOP란 OOP(Object-Oriented Programming) 객체 지향 프로그래밍 현실 세계에서 어떤 제품을 만들 때는 부품을 먼저 만들고, 이 부품들을 하나씩 조립해서 완성품을 만든다. 소프트웨어를 개발할 때에도 부품에 해당하는 객체를 먼저 만들고, 이 객..
[Java] Garbage Collector
·
java
목표 Java의 가장 널리 알려진 장점은 "JVM을 통해 모든 OS에서 동작한다"는 것이지만 "Java는 OS로부터 할당받은 메모리를 자동으로 관리한다"는 매우 큰 장점 또한 존재한다. Java에서 메모리를 자동으로 관리하는 관리자는 누구이며 어떤 방식으로 관리하는 것인지 알아보자. Java 메모리 관리자 GC(Garbage Collector) GC(Garbage Collector) Java GC는 JVM의 Execution Engine 내부에 존재하는데, OS로부터 할당 받은 메모리 영역(JVM Memory)을 자동으로 관리하는 기능이다. GC는 동적으로 할당된 메모리 영역(Heap)에서 더 이상 사용되지않는 객체를 식별하고 제거하여 메모리를 회수한다. 이를 통해 명시적으로 메모리 관리를 수행하지 않아..
[Java] SE/JRE/JDK
·
java
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 기초를 다시 공부하면서 문득 작성된 Java 코드가 어떻게 동작하는지 알고싶어졌습니다. 이번 글을 정리하면서 Java 코드가 바이트코드로 변환되는 과정과, JVM에서 바이트코드를 기계어로 바꾸는 과정을 완벽하게 이해하고자 합니다. Java 코드가 바이트코드로 변환되는 과정Java는 사람이 읽기 쉬운 High-Level Language이기 때문에 기계가 읽을 수 없다. 따라서, 0과1로 이루어진 이진수의 코드로 변환해줘야하는데 그 과정을 간단하게 표현하자면 아래와 같다. 우리가 작성한 소스파일(.java)이 JDK의 java compiler를 통해 바이트코드파일(.class)로 변환되고 JRE의 JVM이 이를 OS가 이해할 수 있는 기계어로 변환한다. 좀 더 자세하게 들여다 보자. 우선, ..