java

Error와 Exception는 같은 것일까요?  "다릅니다."  Error는 컴파일 시 문법적인 오류와 런타임 시 널포인트 참조와 같은 오류로 프로세스에 심각한 문제를 야기해 프로세스를 종료할 수 있는 것을 의미합니다.Exception은 컴퓨터 시스템의 동작 도중 예기치 않았던 이상 상태가 발생하여 수행 중인 프로그램이 영향을 받는 것으로, 개발자에 의해 의도한 문제를 의미합니다. 즉, Error를 방지하기 위해 Exception을 만들 수 있으며, Java에서는 try-catch문이나 throw를 통해 Exception Handling으로 관리할 수 있습니다.    Error의 종류조금 더 자세히 알아보겠습니다.    1. 컴파일 에러(Compillation Error)  컴파일 단계에서 발생되는 오..
정의 리플렉션이란 런타임 단계에서 클래스의 정보를 분석해내는 자바 API로 클래스의 메서드, 타입, 필드, 어노테이션 등의 정보를 접근 또는 수정을 할수 있습니다. 즉, 클래스의 정보를 통해 '거울에 비친 상'과 같이 똑같은 형태를 만들고 이를 통해 메서드, 타입, 필드, 어노테이션과 같은 자원에 접근하거나 수정할 수 있는 자바 API를 의미합니다. Reflection이 왜 필요할까? Java는 동적으로 객체를 생성해주는 기술이 없습니다. 따라서 JVM의 메모리 영역에 있는 데이터를 런타임에 가져와서 사용하게 해줄 존재가 필요합니다. 특히, 다이나믹 프록시, 프레임워크, 라이브러리 등에서 들어오는 클래스의 정보를 모르기 때문에 이러한 정보를 아는 것을 목적으로 사용하게 됩니다. 사용 예 예를 통해서 리플..
Composition이란? 기존 클래스를 상속을 통한 확장 대신, 필드로 클래스의 인스턴스를 참조하게 만드는 설계입니다. 가령, Service나 Repository를 인터페이스로 구축하고 해당 내용을 사용하기 위해 인스턴스로 받아와서 참조해 사용할 때 Composition을 쓰고 있는 것입니다. 상속과 합성의 차이점 상속 부모 클래스와 자식 클래스의 의존성을 컴파일 타임에 해결합니다. Is-A 관계로 한 개의 부모 클래스에 한 개의 자식 클래스를 가집니다. 부모 클래스의 구현에 의존 결합도가 높습니다. 클래스 사이의 정적인 관계로 융통성 있게 사용하기 어렵습니다. 부모 클래스 안에 구현된 코드 자체를 물려 받아 재사용하기에 예기치 못한 에러가 발생할 우려가 있습니다. 합성 두 객체 사이의 의존성을 런타임..
String String 클래스는 String Constant Pool에 저장되고, 불변객체로 변경되지 않는 특징을 가지고 있습니다. 이렇게 사용하면, 문자열을 Constant화 하여 다른 변수 혹은 객체들과 공유하게 되는데 이 과정에서 데이터 캐싱이 일어나고 그 만큼 성능적 이득을 취할 수 있기 때문입니다. 두번째는 데이터가 불변(immutable) 하다면 Multi-Thread 환경에서 동기화 문제가 발생하지 않기 때문에 더욱 안전한 결과를 낼 수 있기 때문입니다. 세번째는 보안(Security) 측면으로, 데이터베이스 사용자 이름, 암호는 데이터베이스 연결을 수신하기 위해 문자열로 전달되는데, 만일 번지수의 문자열 값이 변경이 가능하다면 해커가 참조 값을 변경하여 애플리케이션에 보안 문제를 일으킬 ..
시이지
'java' 태그의 글 목록
상단으로