1. DLL이란?
DLL을 설명하기 전에 먼저 라이브러리(Library)라는 것이 있다. 라이브러리는 여러 프로그램에서 동시에 사용할 수 있는 코드와 데이터를 포함하는, 일종의 단편화된 프로그램이다. DLL은 다이나믹(Dynamic) 링크(Link) 라이브러리(Library)를 줄인 말이다. 라이브러리는 소프트웨어를 개발할 때 자주 쓰거나 기초적인 함수들을 중복개발하는 수고스러움을 피하기 위해, 표준화된 함수나 데이터 타입을 모아놓은 것이다. 이러한 라이브러리는 언제 메인 프로그램에 연결하느냐에 따라서 Static Link와 Dynamic Link로 나뉘며, DLL은 이 중 후자를 뜻한다.
스태틱 링크(Static Link = 정적 링크)는 컴파일 시점에 라이브러리가 링커에 의해 연결되어 실행 파일의 일부분이 된다. 그러나 다이나믹 링크(Dynamic Link = 동적 링크)는 실행 파일에서 해당 라이브러리의 기능을 사용 해야 할 때 라이브러리 파일을 참조하여(혹은 다운로드하여) 기능을 호출한다. DLL을 사용하면 효율적으로 코드를 모듈화하고 재사용할 수 있으며, 메모리 사용 효율성을 높이고 사용되는 디스크 공간을 줄일 수 있다. 그 결과, 운영 체제와 프로그램이 더 빠르게 로드 및 실행되며 컴퓨터에서 디스크 공간을 더 적게 차지하게 된다.
프로그램이 DLL을 사용할 때는 종속성이라는 문제로 인해 프로그램이 실행되지 않을 수 있다. 종속성은 프로그램에서 DLL을 사용하면 작성되는 것으로, 종속성이 손상되면 프로그램이 제대로 작동하지 않을 수 있다.
문제가 생기는 경우)
1. 종속 DLL을 새 버전으로 업그레이드하는 경우
2. 종속 DLL을 수정하는 경우
3. 종속 DLL을 이전 버전으로 덮어쓰는 경우
4. 종속 DLL을 컴퓨터에서 제거하는 경우
→ 이러한 상황을 대개 DLL 충돌이라고 하며, 특히 이전 버전과의 호환성이 맞지 않으면 프로그램이 정상적으로 실행되지 않을 수 있다.
2. DLL의 이점
- 더 적은 리소스 사용
여러 프로그램이 같은 DLL을 사용하면 디스크와 실제 메모리에서 로드되는 중복 코드를 줄일 수 있다. 중복 코드의 감소는 다른 프로그램들의 성능을 향상시킬 수 있다.
- 모듈식 아키텍처 활용
DLL을 사용하면 모듈식 프로그램을 효율적으로 개발할 수 있다. 즉, 여러 언어 버전이 필요한 큰 프로그램이나 모듈식 아키텍처가 필요한 프로그램을 개발할 수 있다.
- 손쉬운 배포와 설치
DLL 내의 함수를 업데이트하거나 수정해야 하는 경우 DLL을 배포하고 설치할 때 프로그램을 DLL과 다시 연결하지 않아도 됩니다. 또한 여러 프로그램이 같은 DLL을 사용하는 경우에는 모든 프로그램에 업데이트나 수정 내용이 적용됩니다. 단, 호환성에 주의해야 위에서 설명한 DLL 충돌 현상을 피할 수 있다.
3. 전용 DLL
전용 DLL을 사용하면 공유 DLL에 적용된 변경 내용이 적용되지 않도록 프로그램을 격리할 수 있다.
내용 참조
- 나무위키 (DLL, 라이브러리)
- 마이크로소프트 사이트 https://support.microsoft.com/ko-kr/help/815065/what-is-a-dll
'study_java > 자바 공부하기' 카테고리의 다른 글
java 배열의 할당 (0) | 2023.03.30 |
---|---|
변수의 자료형 구분(기본자료형 / 비기본자료형) (0) | 2023.03.30 |
데이터 영역의 구분 (0) | 2020.05.21 |
프로그램의 실행과 메모리 관리 (0) | 2020.05.20 |
[JAVA] 인스턴스 변수 & 클래스 변수 (0) | 2020.05.20 |