Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么使用未命名的包或更小的包名会使Jar更小?_Java_Java Me_Package_Naming_Midp - Fatal编程技术网

Java 为什么使用未命名的包或更小的包名会使Jar更小?

Java 为什么使用未命名的包或更小的包名会使Jar更小?,java,java-me,package,naming,midp,Java,Java Me,Package,Naming,Midp,我找不到关于为什么在包上使用较短的名称或使用未命名的包(默认包)实际上会使jar变小的详细信息 我读过混淆器剥离未使用的类,并使剩余类的名称变小,这减少了jar的大小。我自己也尝试过,在我的一个应用程序中使用了这个未命名的包,文件大小减少了1.2%。但我找不到任何可信的信息来解释为什么会发生这种情况。我只能假设这是因为一个长名称引入的开销。不过,我还是希望你能给我一些关于如何证明这一点的建议 最初,我是从这份文件中得到这个想法的: 但这并不能解释为什么。Jar文件是Zip文件,具有另一个扩展名和

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

我读过混淆器剥离未使用的类,并使剩余类的名称变小,这减少了jar的大小。我自己也尝试过,在我的一个应用程序中使用了这个未命名的包,文件大小减少了1.2%。但我找不到任何可信的信息来解释为什么会发生这种情况。我只能假设这是因为一个长名称引入的开销。不过,我还是希望你能给我一些关于如何证明这一点的建议

最初,我是从这份文件中得到这个想法的:


但这并不能解释为什么。

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

对于MIDlet发行版,jar文件必须具有META-INF文件夹,因此,为了获得最佳空间利用率,您的jar文件应该只有此文件夹。您的MIDlet和所有其他类都应该在默认包中。与资源文件相同,将所有文件都保留在文件根目录下


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

对于MIDlet发行版,jar文件必须具有META-INF文件夹,因此,为了获得最佳空间利用率,您的jar文件应该只有此文件夹。您的MIDlet和所有其他类都应该在默认包中。与资源文件相同,将所有文件都保留在文件根目录下


中所示,如果不是“长名称引入的开销”,您在寻找什么?事实上,这非常简单:所有对类的引用都是使用它们的完全限定名(即package+name)完成的。尽管每个类名在引用它的每个类文件时只存储一次,但名称较短(即数据字节数较少)会在许多类中累积
x.a
是3个字节,而
com.mycompany.product.client.android.MyFancyViewComponent
是。。。更多(懒得计数)。@dystroy我不确定开销是添加到哪里的。@Joachimauer好的,谢谢,所以这个com.mycompany.product.client.android.MyFancyViewComponent会发生在每个对象上?如果不是“一个长名称引入的开销”,你在寻找什么?很简单,实际上:所有对类的引用都是使用它们的完全限定名(即package+name)完成的。尽管每个类名在引用它的每个类文件时只存储一次,但名称较短(即数据字节数较少)会在许多类中累积
x.a
是3个字节,而
com.mycompany.product.client.android.MyFancyViewComponent
是。。。更多(懒得计数)。@dystroy我不确定开销是添加到哪里的。@Joachimauer好的,谢谢,那么com.mycompany.product.client.android.MyFancyViewComponent会发生在每个对象上?