我想知道这些东西之间是否存在真正的技术差异,或者差异是否只是语义上的?在我看来,它们都只是存储其他文件的地方。
背景:我正在学习Java
致以最美好的祝愿,
帕特里克
关于库、存储库、包和文件夹之间的区别:
库是一组打包在一起以方便使用的功能。库和框架或引擎之间没有太大区别,它们都实现相似的功能,区别在于微妙的语义。
库通常打包为 JAR 或 Maven 工件,以便其他最终用户可以轻松使用它们。
A
package
在 Java 中是 namespace
的另一个名称。包的作用是消除类的歧义并组织它们。是的,当您在 IDE 中编程时,它们会 1:1 映射到文件系统中的文件夹 - 但这只是一个实现细节。例如,在 C# 中,命名空间不会 1:1 映射到文件夹。
存储库再次不明确。存储库是存储某些内容的位置。就源代码而言,这通常是版本控制的存储库,例如 git 存储库、mercurial 存储库或 svn 存储库。
但是还存在其他类型的存储库。例如,Maven 存储库托管 machen 工件 - 可以用作 POM 中的依赖项。
总的来说,您会在很多地方找到存储库这个词。它是存放物品的地方的通用术语。例如,这可以是您自己的代码中的
UserRepository
。将 XXXRepository
作为类名并不罕见。
文件系统上的文件夹只是达到目的的一种手段,就像键值存储和 SQL 数据库一样。它们不是 Java 开发人员通常关心的组织单位,除非在实际执行文件 I/O 时。
虽然它们都保存/存储东西,但差异可以总结为:
希望它有助于澄清! :)
通常所说的
library
通常是一组功能,您可以使用导入语句将其导入到软件中,如下所示:
import coolLibrary
您这样做是为了不必自己实现该功能。顺便说一下,在不同的上下文/编程语言中,有不同的术语。
A
repository
是存放代码和相关资源的地方。这可以位于您的本地文件系统或在线文件系统上。与文件夹的区别在于,存储库(其功能由 git
等工具提供)通常附带一些归档和版本控制工具。
A
package
只是 Java 中一组相关的类。它们用于组织项目。您选择的 IDE 将允许您使用它。