Software Library
A Software Library is a software component that contains compiled software code documents.
- Context:
- It can (typically) be composed of reusable software modules (such as software functions) to enable the development of a computing system.
- It can (typically) be a Programming Language-Specific Library, such as a Python2 Library.
- It can (often) be specific to a Programming Environment.
- It can range from being a Static Software Library, to being a Shared Software Library, to being a Dynamically Loaded (DL) Software Library.
- It can range from being a Standard Software Library (such as
java.text
) to being a Custom Software Library. - It can range from being an Open-Source Library to being a Closed-Source Library.
- ...
- Example(s):
- a Data Mining Library, which can contain numerical analysis, machine learning and statistics libraries.
- a Domain-Specific Library, such as an IR library, such as the Lucene.
- an Language-Specific Library such as: a Python library, Scala library, Java library, JavaScript library.
- a General-Purpose Library, such as a Java Standard Library.
- a OS-Interface Library, such as a File I/O Interface Library.
- a Visualization Library, such as matplotlib and Bokeh.
- a Design UI Component Library.
- Wheeler's Program Library HOWTO (Wheeler, 2003).
- a Date/Time Library.
- a Document File Software Library.
- …
- Counter-Example(s):
- See: Non-Volatile Memory, Software Development, Code Reuse, Software Subroutine, Modular Programming, Dropwizard.
References
2023
- chat
- There are several types of software libraries, including:
- General-purpose libraries: These are software libraries that contain a collection of reusable code that can be used in a wide range of applications. Examples include standard libraries for programming languages like Java or Python, which provide basic functionality for tasks like input/output, data structures, and networking.
- Frameworks: A framework is a collection of code libraries that provides a set of tools and features to help developers build applications. Frameworks are typically more opinionated and provide a higher level of abstraction than general-purpose libraries. Examples include web frameworks like Django or Ruby on Rails, which provide pre-built components for building web applications.
- Domain-specific libraries: These are software libraries that are designed for specific use cases or industries. Examples include machine learning libraries like TensorFlow or scikit-learn, which provide pre-built components for building machine learning models.
- Platform-specific libraries: These are software libraries that are specific to a particular platform, such as a particular operating system or hardware architecture. Examples include the Windows API or DirectX, which provide functionality specific to the Windows operating system.
- Middleware: Middleware is a type of software library that provides a layer of abstraction between application code and the operating system. It provides services like database connectivity, message queuing, and security that can be reused across multiple applications. Examples include Java EE, .NET Framework, and Apache Tomcat.
- There are several types of software libraries, including:
2020
- https://blog.instabug.com/what-is-an-sdk-sdk-vs-library-vs-framework/
- QUOTE: SDKs have a wider scope than libraries do. In fact, all SDKs will contain one or more libraries. ...
Going back to our house analogy, if a library is a stove, then an SDK is a whole kitchen. While you can go and buy all your kitchen appliances, cabinets, and counters separately, it will be a lot easier to buy a full kitchen set, complete with built-in appliances and instructions on how to assemble it. SDKs can be limited in scope such as in the case with one room, but they can also have a bigger scope of a collection of rooms or even the whole house. ...
- QUOTE: SDKs have a wider scope than libraries do. In fact, all SDKs will contain one or more libraries. ...
2020
- (Wikipedia, 2020) ⇒ https://en.wikipedia.org/wiki/Library_(computing) Retrieved:2020-1-5.
- In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications. In IBM's OS/360 and its successors they are referred to as partitioned data sets.
A library is also a collection of implementations of behavior, written in terms of a language, that has a well-defined interface by which the behavior is invoked. For instance, people who want to write a higher level program can use a library to make system calls instead of implementing those system calls over and over again. In addition, the behavior is provided for reuse by multiple independent programs. A program invokes the library-provided behavior via a mechanism of the language. For example, in a simple imperative language such as C, the behavior in a library is invoked by using C's normal function-call. What distinguishes the call as being to a library function, versus being to another function in the same program, is the way that the code is organized in the system.
Library code is organized in such a way that it can be used by multiple programs that have no connection to each other, while code that is part of a program is organized to be used only within that one program. This distinction can gain a hierarchical notion when a program grows large, such as a multi-million-line program. In that case, there may be internal libraries that are reused by independent sub-portions of the large program. The distinguishing feature is that a library is organized for the purposes of being reused by independent programs or sub-programs, and the user only needs to know the interface and not the internal details of the library.
The value of a library lies in the reuse of the behavior. When a program invokes a library, it gains the behavior implemented inside that library without having to implement that behavior itself. Libraries encourage the sharing of code in a modular fashion, and ease the distribution of the code.
The behavior implemented by a library can be connected to the invoking program at different program lifecycle phases. If the code of the library is accessed during the build of the invoking program, then the library is called a static library.[1] An alternative is to build the executable of the invoking program and distribute that, independently of the library implementation. The library behavior is connected after the executable has been invoked to be executed, either as part of the process of starting the execution, or in the middle of execution. In this case the library is called a dynamic library (loaded at runtime). A dynamic library can be loaded and linked when preparing a program for execution, by the linker. Alternatively, in the middle of execution, an application may explicitly request that a module be loaded.
Most compiled languages have a standard library although programmers can also create their own custom libraries. Most modern software systems provide libraries that implement the majority of the system services. Such libraries have commoditized the services which a modern application requires. As such, most code used by modern applications is provided in these system libraries.
- In computer science, a library is a collection of non-volatile resources used by computer programs, often for software development. These may include configuration data, documentation, help data, message templates, pre-written code and subroutines, classes, values or type specifications. In IBM's OS/360 and its successors they are referred to as partitioned data sets.
- ↑ "Static Libraries". TLDP. Archived from the original on 3 July 2013. Retrieved 3 October 2013.
2003
- (Wheeler, 2003) ⇒ David A. Wheeler (2003). "Program Library HOWTO - Chapter 1: Introduction". In: "Program Library HOWTO" version 1.20. Published: 2003-4-11. Retrieved:2020-1-5.
- QUOTE: This HOWTO for programmers discusses how to create and use program libraries on Linux using the GNU toolset. A program library is simply a file containing compiled code (and data) that is to be incorporated later into a program; program libraries allow programs to be more modular, faster to recompile, and easier to update. Program libraries can be divided into three types: static libraries, shared libraries, and dynamically loaded (DL) libraries.
This paper first discusses static libraries, which are installed into a program executable before the program can be run. It then discusses shared libraries, which are loaded at program start-up and shared between programs. Finally, it discusses dynamically loaded (DL) libraries, which can be loaded and used at any time while a program is running. DL libraries aren't really a different kind of library format (both static and shared libraries can be used as DL libraries); instead, the difference is in how DL libraries are used by programmers.(...)
It's worth noting that some people use the term dynamically linked libraries (DLLs) to refer to shared libraries, some use the term DLL to mean any library that is used as a DL library, and some use the term DLL to mean a library meeting either condition. No matter which meaning you pick, this HOWTO covers DLLs on Linux.
- QUOTE: This HOWTO for programmers discusses how to create and use program libraries on Linux using the GNU toolset. A program library is simply a file containing compiled code (and data) that is to be incorporated later into a program; program libraries allow programs to be more modular, faster to recompile, and easier to update. Program libraries can be divided into three types: static libraries, shared libraries, and dynamically loaded (DL) libraries.