2013-05-02 118 views
1

我无法找到有关为什么在包中使用较短的名称或使用未命名的包(默认包)实际上使jar大小更小的信息。为什么使用未命名软件包或更小的软件包名称会使Jar变小?

我读过混淆器去掉未使用的类,并将其余的名称缩小并减小jar的大小。我实际上已经试过了我的自我,并且通过在我的一个应用程序中使用未命名的软件包,我的文件大小减少了1.2%。但是我找不到任何值得信赖的信息。我只能假设这是因为长名称引入的开销。不过,我会很感激有关如何证明这一点的任何提示。

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

这真的没有解释为什么虽然。

+0

你要买什么,如果不是*“的开销很长的名字引入了” *? – 2013-05-02 15:12:06

+2

实际上,这很简单:所有对类的引用都是使用完全限定的名称(即package + name)完成的。尽管每个类文件名只会在每个类文件中存储一次,但它被引用,具有较短的名称(即较少的数据字节)将叠加在许多类上。 'x.a'是3个字节,而'com.mycompany.product.client.android.MyFancyViewComponent'是...更多(懒得数)。 – 2013-05-02 15:12:51

+0

@dystroy我不知道在哪里添加开销。@ JoachimSauer好的谢谢,所以这个com.mycompany.product.client.android.MyFancyViewComponent发生在每一个对象? – 2013-05-02 16:33:06

回答

1

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

对于MIDlet发行版,jar文件必须具有META-INF文件夹,因此为了获得最佳空间使用效果,您的jar文件应该只有这个文件夹。你的MIDlet和所有其他类应该是默认包。与资源文件相同,将它们全部保存在文件根目录下。

可以看出在http://smallandadaptive.blogspot.com.br/2008/09/keep-it-flat.html

相关问题