• Articles
  • Github
  • Podcast
  • Articles
  • Github
  • Podcast
  • Framework || Library

    06 Nov • 2015

    Frequentemente vejo muitos outros desenvolvedores levantarem a mesma questão: “Quais seriam as definições técnicas que permitem distinguir o que é Framework e Library?”. A primeira vez que alguém me perguntou isso foi meses atrás, eu havia palestrado sobre React e uma das perguntas feitas foi: “por quais motivos React é uma library e não um framework?”…

    First Things First

    1 - React é uma Library.

    2 - Este assunto não é recente. Na verdade, é um assunto polêmico para muitos desenvolvedores (leia-se mamilos). Um bom exemplo disso tudo é até algum tempo atrás, no próprio site oficial, o jQuery se definia como um framework, e atualmente deixam bastante explícito que é uma biblioteca.

    Vamos definir essa parada

    Martin Fowler discute a diferença entre Library e Framework no artigo ” Inversion of Control “. No mesmo artigo ele define Library como conjunto de funções (que sim, podem estar organizadas em classes ou outro lugar) que podem ser chamadas e cada call dessas funções realiza alguma tarefa e devolve o controle ao cliente.

    Já um Framework incorpora um comportamento mais abstrato. Para usar um Framework você precisa inserir seu comportamento/lógica em vários lugares seja por subclasses ou conectando com suas próprias classes e ele é chamado por meios como estes. Logo o próprio Framework quem dita o fluxo de controle da aplicação, chamado de Inversion of Control.

    Em termos mais acadêmicos, as melhores definições seriam:

    Library

    Na ciência da computação, biblioteca é uma coleção de subprogramas utilizados no desenvolvimento de software. Bibliotecas contém código e dados auxiliares, que provém serviços a programas independentes, o que permite o compartilhamento e a alteração de código e dados de forma modular.

    Framework

    Um framework, em desenvolvimento de software, é uma abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica. Um framework pode atingir uma funcionalidade específica, por configuração, durante a programação de uma aplicação. Ao contrário das bibliotecas, é o framework quem dita o fluxo de controle da aplicação, chamado de Inversão de Controle.

    Resumindo

    ” Your code calls a library but a framework calls your code. “