Это очень близкие термины, и я уже встречал тексты, в которых эти понятия меняются местами, как будто в определенных ситуациях определения почти совпадают.
Какие технические определения отличают API от библиотеки или фреймворка ?
Существуют ли ситуации, в которых допускается замена этих терминов без нарушения правильного технического определения?
Библиотека — это набор элементов (функции , классы, предопределенные типы, константы, глобальные переменные, макросы и т. д.), которые можно использовать в программе для облегчения реализации этой программы.
API происходит от английского «интерфейс прикладного программирования», что означает «интерфейс для прикладного программирования». Это часть библиотеки, к которой обращается программа, использующая эту библиотеку; таким образом делая использование библиотеки независимым от деталей реализации. API может быть реализован различными библиотеками.
Фреймворк — это интегрированный набор инструментов, облегчающих разработку программного обеспечения . Может включать API и библиотеки. Но он также может включать в себя другие элементы, такие как инструменты отладки, графический дизайн, прототипирование, редактирование и т. д.
Термины API и библиотека часто используются взаимозаменяемо. Но имейте в виду, что API всегда уникален (за исключением разных версий) и что API не включает детали реализации. В то время как библиотека не обязательно должна быть уникальной и должна содержать полную реализацию. То, что API является уникальным, очень важно, это то, что позволяет вам писать программу на C++ для Linux, и эта программа без изменений работает для Mac, если используемые ею библиотеки доступны для обеих систем.
Примером библиотеки является Oracle JavaMail. Можно создать программу, которая отправляет электронную почту, напрямую запрограммировав сокеты. Но намного быстрее использовать JavaMail или любую другую почтовую библиотеку, так как эти библиотеки уже реализуют необходимую вам функциональность. Помимо того, что он быстрее, он также менее подвержен ошибкам, особенно в широко используемой библиотеке; поскольку код тестируется миллионами пользователей, и сообщество разработчиков, как правило, справится с задачей лучше, чем это может сделать отдельная команда разработчиков.
CORBA — это API. Но может быть реализация для Linux, другая для Mac и т.д.
Примером фреймворка может быть Unity3D, предлагающий набор инструментов, облегчающих разработку видеоигр.
Хорошо, что касается технических определений, с этим я не думаю, что возникнут проблемы с ответами, в остальном это может создать путаницу.
Библиотека — это набор объектов и функций, которые служат определенной цели .
Фреймворк — это набор шаблонов , которые помогут вам создать веб-сайт, приложение...
API — это интерфейс для взаимодействия других программ с вашей программой без прямого доступа.
Короче говоря, библиотека похожа на плагин, фреймворк — это скелет, а API — это та часть, которая ориентирована на визуальный слой для взаимодействия с ним.