По мне так фреймворк это некий каркас приложения. Более invasive, нежели простая библиотека. Взять, например, Spring MVC framework. Да, это набор библиотек, скомпилированного кода. Но, чтобы воспользоваться благами спринга, ваш код надо будет структурировать определенным образом (чтобы заработал Контроллер вы должны одеть его нужными аннотациями, из методов возвращать заданные фреймворком данные и т.д.)
Библиотека же, это просто набор прикладных утилит решающих одну определенную задачу. Например, библиотека Log4j. Несет единственную функциональность в виде логирования. Ваш код остается всё тем же вашим кодом. Вам не надо строить свои классы определенным образом. Вам не надо возвращать специальные значения. Вам достаточно добавить поле logger, создать логер и логить. Функциональность изначального кода осталась без изменений. Прибавилась только фукция логирования.