목록클래스 (5)
dev-sohee 님의 블로그
다이나믹 프록시와 CGLIB는 Java에서 프록시를 생성하는 방법입니다. 이 두 가지는 비슷한 목적을 가졌지만, 그 구현 방식과 사용되는 상황이 조금 다릅니다. 이 글에서는 각각의 특징과 장단점을 자세히 살펴보겠습니다.*다이나믹 프록시*CGLIB(Code Generator Library) 먼저 다이나믹 프록시를 알아보기에 앞서, 프록시가 무엇인지부터 짚고 넘어가겠습니다. 프록시(Proxy)는 '대리자'라는 뜻으로, 클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을 대신 받아주는 역할을 합니다. 프록시가 실제 대상인 것처럼 위장함으로써 이를 사용하는 클라이언트는 구체 클래스를 알 필요가 없어집니다. 또한 실제 타겟 오브젝트는 프록시를 통해 최종적으로 요청을 받아 처리함으로써 자신..
혹시 개발자가 코드를 짜는 모습을 상상해본 적이 있으신가요?개발을 경험해본 적이 없는 사람이라면 머릿속에 있는 것들을 타자를 치면서 바로 실현시키는 개발자의 모습을 상상하실 수도 있습니다. 하지만 실제 개발 과정에서는 저렇게 결과물을 뚝딱 만들어낼 수 없습니다.어떤 시스템을 개발하든 간에 일반적인 절차라는 것이 있습니다. 일반적인 절차는 다음과 같습니다.1. 분석- 시스템을 만들어 달라고 한 사람들에게 어떻게 개발하기를 원하는지 물어보며 요구사항을 분석하는 단계입니다. 2. 설계- 분석 단계에서 만든 대략적인 그림을 프로그램으로 만들 수 있도록 설계하는 단계입니다. 이 단계에서 어떤 클래스, 어떤 메서드, 어떤 변수를 만들 것인지 등의 세부적인 것들을 정리합니다.예시) 시퀀스다이어그램, ERD, 클래스 ..
이 글에서는 자바의 핵심이자 두뇌인 JVM에 대해 깊이 알아보겠습니다. * 클래스 로더* 실행 엔진* 메모리 영역 # 클래스 로더자바는 동적 로드, 즉 컴파일 타임이 아니라 런타임(바이트 코드를 실행할 때)에 클래스를 로드하고 링크한다는 특징이 있습니다. 이 동적 로드를 담당하는 부분이 JVM의 클래스 로더입니다. 정리하자면, 클래스 로더는 런타임 중에 JVM의 메서드 영역에 동적으로 Java 클래스를 로드하는 역할을 합니다.**바이트코드란? : 자바 소스 코드를 컴파일한 결과로 생성되는 중간 코드. 자바 소스 파일(.java)을 자바 컴파일러(javac)에 의해 바이트코드(.class)로 변환한다. 사람이 읽기 쉽도록 쓰인 소스코드와 비교했을 때, 바이트 코드가 덜 추상적이며, 더 간결하고, 더 컴퓨터..
1990년대 중반, 인터넷의 급격한 성장으로 다양한 하드웨어에서 동일하게 동작하는 소프트웨어가 필요했습니다.당시 많은 프로그래밍 언어는 특정 플랫폼에 종속적이어서, 여러 기기에서 동일한 소프트웨어를 실행하는 것이 어려웠습니다. 이때 한 번 작성한 코드를 다양한 플랫폼에서 실행할 수 있 자바가 개발되었고 지속적인 발전을 거듭하며 다양한 분야에서 널리 사용되는 주요 프로그래밍 언어 중 하나가 되었습니다. 이 글에서는 객체지향의 4대 특징, 클래스 5원칙과 디자인 패턴을 알아보겠습니다. * 객체 지향의 4대 특징* 클래스의 5원칙* GoF 디자인 패턴 3가지 # 클래스(Class)객체 지향 프로그래밍의 핵심 개념으로, 객체를 생성하기 위한 규격을 뜻합니다. 클래스는 특정 타입의 객체를 만들어내는 설계 도면의 ..
저는 첫 직장의 첫 프로젝트에서 C언어로 개발을 시작했습니다. 반복문이나 연산이 많은 프로그램에서 C언어의 저수준 접근 방식은 코드 최적화에 유리하여 고성능 애플리케이션을 작성할 수 있다는 장점이 있고 메모리 관리나 포인터 같은 개념을 깊이 이해하는 데 큰 도움이 되었습니다. 그러나 시간이 지나면서 소프트웨어 개발의 복잡성이 증가할수록, 대규모 소프트웨어 개발에 효율적인 프로그래밍 언어의 필요성을 느꼈고 자바를 공부하기 시작했습니다. 자바의 구동원리에 대해 공부하면서 JVM(Java Virtual Machine)에 대해 알게 되었습니다. 처음에는 단순히 자바 프로그램을 실행하기 위한 환경으로만 생각했지만, 점차 그 내부 구조와 동작 원리에 대해 더 깊이 이해하고 싶어졌습니다. JVM은 자바 프로그램을 ..