JAR文件,它们不是只是膨胀和减慢Java的速度吗?
好吧,这个问题可能看起来很愚蠢,但我还是要问它。
在努力启动并运行Spring + BlazeDS项目几个小时后,我发现由于没有包含Spring等的正确依赖项,我的项目遇到了问题。我的 WEB-INF/lib 文件夹中缺少 .jar,是的,愚蠢的我。
过了一会儿,我设法将所有.jar文件都放在了它们所属的位置,并且达到了惊人的12.5MB,并且有超过30个!这让我感到担忧,但它可能是,希望不应该被关注。
Java如何操作这些JAR文件,考虑到它是压缩和编译的源代码,它们确实占用了相当多的硬盘空间。因此,这可以立即快速填充大量RAM。
我的问题是:
例如,当实例化.jar中的类时,Java是否会将整个.jar文件加载到内存中?.jar中从未被使用过的东西呢?
.jars 是否会以某种方式进行缓存,以优化应用程序性能?
当加载单个.jar时,我理解该事物位于内存中,并且可以在多个HTTP请求中使用(即在运行的服务器实例的生命周期内),与PHP不同,PHP是随着每个请求动态创建对象的,这个假设是否正确?
在使用Spring时,我想,我必须包括所有这些繁琐的.jar,我使用原生Java不是更好,至少像Hibernate这样的ORM解决方案吗?
到目前为止,Spring只是花费了额外的时间来配置,额外的硬盘空间,额外的内存,CPU消耗,所以我担心框架会花费太多的应用程序性能来获得例如,使用我的BlazeDS服务器实现的IoC。
仍然必须有ORM,一个单元测试框架和零碎的东西。快速且不负责任地使项目膨胀非常容易。
我在哪里画线?