【问题标题】:Why does using the unnamed package or smaller package names makes the Jar smaller?为什么使用未命名的包或更小的包名会使 Jar 更小?
【发布时间】:2013-05-02 15:10:23
【问题描述】:

我找不到太多关于为什么在包上使用较短的名称或使用未命名的包(默认包)实际上会使 jar 大小更小的信息。

我已经阅读了混淆器会去除未使用的类并使剩余类的名称更小,这会减小 jar 的大小。而且我实际上已经亲自尝试过,通过在我的一个应用程序中使用未命名的包,我的文件大小减少了 1.2%。但我找不到任何关于为什么会发生这种情况的可靠信息。我只能假设这是因为长名称引入的开销。我仍然会很感激有关如何证明这一点的任何提示。

最初我是从这个文档中得到这个想法的:http://carfield.com.hk/document/java/articles/Efficient_MIDP_Programming.pdf

这确实没有解释为什么。

【问题讨论】:

  • 如果不是“长名称带来的开销”,您在寻找什么
  • 嗯,实际上很简单:所有对类的引用都是使用它们的完全限定名称(即包+名称)完成的。虽然每个类名只会在每个类文件中存储一次,但它被引用它,具有较短的名称(即更少的数据字节)将在许多类中加起来。 x.a 是 3 个字节,而 com.mycompany.product.client.android.MyFancyViewComponent 是……更多(懒得数)。
  • @dystroy 我不确定在哪里增加了开销。@JoachimSauer 好的,谢谢,所以这个 com.mycompany.product.client.android.MyFancyViewComponent 发生在每个对象上?

标签: java java-me package naming midp


【解决方案1】:

Jar 文件是带有另一个扩展名和一个名为 META-INF 的特殊(和可选)文件夹的 Zip 文件。对于每个文件或文件夹,都有一个相关联的标题。由于标头占用了 jar 的一些空间,因此您最好在其中保留较少的文件,但如果您已经将其降至最低限度,则将所有这些文件保留在根目录中。

对于 MIDlet 分发,jar 文件必须有 META-INF 文件夹,因此,为了获得最佳空间使用,您的 jar 文件应该只有这个文件夹。您的 MIDlet 和所有其他类应该在默认包中。资源文件也一样,都放在文件根目录下。

http://smallandadaptive.blogspot.com.br/2008/09/keep-it-flat.html中所见

【讨论】:

    猜你喜欢
    • 2012-09-14
    • 2017-08-26
    • 2011-12-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多