나를 기록하다
article thumbnail
Published 2023. 4. 6. 15:19
[CS] 라이브러리(library) CS
반응형

라이브러리(library)

라이브러리(library)는 프로그래밍에서 재사용 가능한 코드 조각이나 기능들을 모아놓은 모음집입니다. 라이브러리는 개발자들이 흔히 사용하는 기능들을 쉽게 활용할 수 있도록 미리 구현된 코드를 제공하므로, 개발자는 해당 기능을 처음부터 직접 구현할 필요 없이 라이브러리를 가져와 사용할 수 있습니다. 이로 인해 개발 시간을 절약하고, 코드의 안정성과 효율성을 높일 수 있습니다. 라이브러리는 다양한 프로그래밍 언어에서 사용되며, 특정 언어로 작성된 라이브러리는 해당 언어의 프로젝트에서 사용할 수 있습니다.

라이브러리의 형태

  1. 정적 라이브러리 정적 라이브러리는 프로그램이 컴파일되는 동안 프로그램에 포함되는 코드입니다. 이 경우, 라이브러리의 코드가 프로그램의 실행 파일에 직접 포함되므로, 별도의 라이브러리 파일이 필요하지 않습니다.

    예시)
    C 언어에서 사용되는 표준 수학 라이브러리인 'libm'은 정적 라이브러리로 사용될 수 있습니다. 이 라이브러리는 수학 관련 함수들을 제공하며, 사용자가 프로그램에서 해당 함수들을 사용하려면 컴파일 시 libm 라이브러리를 링크해야 합니다. 정적 라이브러리는 일반적으로 '.a' 확장자를 가진 파일로 제공됩니다. 예를 들어, 'libm.a' 파일이 정적 라이브러리입니다.

  2. 동적 라이브러리 동적 라이브러리는 프로그램이 실행되는 동안 로드되어 사용되는 코드입니다. 이 경우, 라이브러리의 코드가 별도의 파일로 존재하며, 프로그램 실행 시 필요한 라이브러리를 시스템에서 찾아 로드합니다. 동적 라이브러리는 공유 라이브러리라고도 불리며, 여러 프로그램이 동일한 라이브러리를 공유하여 메모리 사용량을 줄일 수 있습니다.

    예시)
    C 언어에서 널리 사용되는 문자열 처리 라이브러리인 'libpcre'는 동적 라이브러리로 사용될 수 있습니다. 이 라이브러리는 정규 표현식을 사용한 문자열 처리 기능을 제공하며, 사용자가 프로그램에서 해당 기능을 사용하려면 런타임에 libpcre 라이브러리를 로드해야 합니다. 동적 라이브러리는 일반적으로 '.so' (리눅스), '.dll' (윈도우) 또는 '.dylib' (맥OS) 확장자를 가진 파일로 제공됩니다. 예를 들어, 'libpcre.so' 파일이 동적 라이브러리입니다.

 

라이브러리의 기능

또한, 라이브러리는 다양한 영역에 대한 기능을 제공합니다. 예를 들어,

네트워크 통신, 데이터베이스 연결, 그래픽 처리, 암호화, 파일 입출력 등 다양한 기능

에 대한 라이브러리가 존재합니다. 개발자는 필요한 기능에 맞는 라이브러리를 선택하여 프로젝트에 포함시켜 사용할 수 있습니다.

 

라이브러리의 장단점

  1. 정적 라이브러리
    장점 : 프로그램 실행 파일에 직접 포함되므로, 별도의 라이브러리 파일이 필요하지 않고, 프로그램 실행에 필요한 모든 코드가 하나의 파일에 포함되어 배포가 간편합니다.
    단점 : 하지만 정적 라이브러리를 사용하면 프로그램의 크기가 커지고, 여러 프로그램이 동일한 라이브러리를 사용할 때 메모리 사용량이 증가할 수 있습니다.
  2. 동적 라이브러리
    장점 : 런타임에 로드되므로, 프로그램 실행 파일의 크기가 작아지고, 여러 프로그램이 동일한 라이브러리를 공유하여 메모리 사용량을 줄일 수 있습니다. 또한, 동적 라이브러리를 업데이트하면 사용 중인 모든 프로그램이 동일한 업데이트된 라이브러리를 사용할 수 있습니다.
    단점 : 런타임에 로드되므로, 라이브러리
    파일이 없거나 호환되지 않는 경우 프로그램이 실행되지 않을 수 있습니다. 동적 라이브러리를 사용하면 프로그램 실행에 필요한 라이브러리 파일을 함께 배포해야 하며, 여러 버전의 라이브러리가 공존하는 경우 버전 충돌 문제가 발생할 수 있습니다.

개발자는 정적 라이브러리와 동적 라이브러리의 장단점을 고려하여 프로젝트의 요구 사항과 상황에 맞는 라이브러리 유형을 선택할 수 있습니다. 예를 들어, 프로그램의 크기와 메모리 사용량이 크게 중요하지 않은 경우 정적 라이브러리를 사용할 수 있으며, 여러 프로그램이 동일한 라이브러리를 공유하거나 라이브러리를 쉽게 업데이트해야 하는 경우 동적 라이브러리를 사용할 수 있습니다.

 

 

Java의 라이브러리

Java에서는 정적 라이브러리와 동적 라이브러리의 개념이 약간 다릅니다.

Java는 JVM(Java Virtual Machine) 위에서 실행되기 때문에, Java 라이브러리는 JAR(Java Archive) 파일 형태로 제공됩니다.

JAR 파일은 Java 클래스 파일과 관련 리소스를 압축하여 패키징한 것입니다. Java에서 JAR 파일은 정적 라이브러리와 동적 라이브러리의 역할을 모두 수행할 수 있습니다.

예를 들어, Java에서 널리 사용되는 라이브러리들은 다음과 같습니다.

  1. Apache Commons: Apache Commons는 여러 하위 프로젝트로 구성된 Java 라이브러리 모음으로, 다양한 일반적인 작업을 처리하는 데 사용되는 코드 조각과 유틸리티 클래스를 제공합니다. Apache Commons 라이브러리는 JAR 파일로 제공되며, 프로젝트에 필요한 라이브러리를 가져와 사용할 수 있습니다.
  1. Gson: Gson은 Google에서 개발한 JSON 처리를 위한 Java 라이브러리입니다. Gson을 사용하면 Java 객체를 JSON으로 변환하거나, JSON을 Java 객체로 변환하는 작업을 간단하게 수행할 수 있습니다. Gson 라이브러리는 JAR 파일로 제공되며, 프로젝트에 추가하여 사용할 수 있습니다.

Java에서 JAR 파일을 사용하려면 프로젝트의 클래스 경로에 추가해야 합니다. 클래스 경로에 추가된 JAR 파일은 프로젝트에서 필요한 클래스와 리소스를 로드하는 데 사용됩니다. Java에서는 클래스 로더가 런타임에 필요한 클래스를 찾아 로드하므로, JAR 파일은 동적 라이브러리와 유사한 역할을 수행합니다. 그러나 JAR 파일은 정적 라이브러리처럼 컴파일 시간에 프로젝트에 포함되므로, 둘 다의 특성을 갖고 있다고 볼 수 있습니다.

 

반응형

'CS' 카테고리의 다른 글

고정 소수점(fixed point)과 부동 소수점(floating point)  (1) 2024.01.25
DAO, DTO, VO, ENTITY  (1) 2023.09.03
[CS] 슬라이싱  (0) 2023.04.12
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...