English 中文(简体)
反向域名对java包装结构的重要性
原标题:What is the significance of the reverse domain name for java package structure
  • 时间:2010-03-19 05:33:57
  •  标签:
  • java
  • package

Why do we use reverse domain name like com.something. or org.something. structure for java packages? I understand this brings in some sort of uniqueness, but why do we need this uniqueness?

最佳回答

全球独一无二的包裹名称避免点名不同来源的图书馆之间的碰撞。 域名登记册不是创建新的全球名称中央数据库,而是使用。 摘自JLS:

The suggested convention for generating unique package names is merely a way to piggyback a package naming convention on top of an existing, widely known unique name registry instead of having to create a separate registry for package names.

问题回答

我们为什么扭转了这一局面: 你们有两项重要的一揽子计划,一套会计计划,一套图表。 如果你直截了当地说明这些内容:

accounting.mycompany.org
graphics.mycompany.org

然后,这意味着有一套主要的<代码>账面包,其中一小节为<代码>mycompany,另一小节为<<> > 包装称为<代码>org。 然而,你希望:

org.mycompany.accounting
org.mycompany.graphics

这更有意义。 在各组织的所有一揽子计划(org)中,请特别参看mycompany,并有两个分包:accounting

正如你所说的那样,作为一揽子基本名称的相反域名确保了独一无二。 有两个公司,例如DN.com和例如.org,这两个公司都在其框架内界定了雇员类别。 现在,如果你利用这两个框架,你将无法确定你想要在你的法典中使用哪些标准,但如果这些框架在包裹中加以界定的话。 例如,你可以具体告诉编辑员/司法鉴定人,你指的是哪一类。 如果对独一无二的包裹不作定义,则将出现汇编错误或操作错误,例如,如果你正在使用固定雇员类别,但org雇员类别首先从班次中装上,你会遇到操作错误,因为两个雇员类别可能没有相同的结构。

The uniqueness is needed for Class Loading.

It helps by avoiding naming collisions. If there are classes with same package name and class name, Collision will occur while trying to load the classes.

This generally happens if there are multiple libraries(jar) that contain classes with same names.

Also see this.

如果你需要把你的代码与第三方软件结合起来,或将其提供给其他人员,则你需要独一无二。 如果你不遵循规则,你就会增加这样的风险:在某个时候,你会发生一类点命名的碰撞,而且你将需要重新命名你的班级,以解决这一问题。 更糟糕的是,你的客户必须重新命名法典。

如果守则是作为某一组织不同项目的一部分编制的,也适用。

正如你所说的那样,它带来了独一无二之处,特别是在与第三方法典合作时,需要这样做。 例如,认为你正在使用图书馆I ve。 我先使用了一揽子“foo”,并在那里有一个叫Bar的班子。 现在,如果你也使用“foo”这一一揽子名称,而且你有一个称为Bar的类别,这意味着你的执行将压倒我的执行,使我无法执行。 另一方面,如果我的一揽子计划是“com.mydomain.foo”,我是在那里的律师协会,那么你就可以在你的一个班子中自由使用律师协会的名称,而且这两个班子仍然可以单独确定和使用。

为什么将相反的域名作为一揽子名称? 我猜测,这只是一项公约,以确保每个人都使用独特的名称空间,因为你不应在你的包裹名称中使用他人。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签