Mais sobre meta-dados de pacotes
[cascardo/admin.git] / software / bibliotecas
1 Bibliotecas
2
3 Dentre as diversas boas práticas de desenvolvimento de software está o
4 reuso. Trata-se do velho ditado de não "reiventar a roda". Quando um
5 conjunto de rotinas/funções/métodos de software compreendem uma
6 funcionalidade em particular, uní-las em uma biblioteca que possa ser
7 reutilizada é uma boa prática.
8
9 Por exemplo, quando um reprodutor de áudio é desenvolvido, partes do
10 software são escritas para decodificar os diversos formatos em que áudio
11 é codificado hoje em dia. Decodificar áudio, no entanto, é útil para
12 softwares diferentes de reprodutores de áudio, como editores,
13 analisadores, tratadores, conversores, etc. Portanto, escrever o
14 decodificador apenas uma vez em forma de biblioteca para que possa ser
15 reutilizado nesses vários softwares é mais interessante que reescrever o
16 decodificador para cada software.
17
18
19 Bibliotecas Compartilhadas
20
21 Entre as várias maneiras de reutilizar essa biblioteca é, em tempo de
22 compilação, incluir o código em seu software. No entanto, isso significa
23 que cada software que utilize a biblioteca inclui uma cópia em disco e,
24 no caso de sua carga, em memória do código da biblioteca.
25
26 O compartilhamento dinâmico de bibliotecas permite que cada software
27 compilado faça as referências necessárias ao código da biblioteca sem,
28 no entanto, incluir o seu código. Dessa forma, a biblioteca é buscada e
29 carregada pelo carregador de programas. Assim, espaço em disco e,
30 eventualmente, em memória, pode ser compartilhado entre os vários
31 programas que fazem uso da biblioteca.
32
33 Outra possível vantagem do compartilhamento de bibliotecas é a
34 atualização da biblioteca, independente da atualização dos softwares que
35 a utilizam.
36
37
38 Versões de Interfaces de Bibliotecas
39
40 Um cuidado muito importante, no entanto, na atualização de bibliotecas é
41 que os softwares utilizam interfaces definidas pela biblioteca, que
42 chamamos de API (Application Programming Interface) e ABI (Application
43 Binary Interface). Se a ABI de uma biblioteca muda, é necessário a
44 recompilação do software. Se sua API muda, é necessário a atualização
45 (modificação) do código do software.
46
47 Portanto, veremos que a atualização de bibliotecas não pode ser feita
48 sem tomarmos o devido cuidado de verificarmos a necessidade de
49 recompilação ou atualização dos softwares que a utilizam.