当前位置: 首页 > 面试题库 >

Java-如何减少第三方jar的大小以减少应用程序的大小

梁宪
2023-03-14
问题内容

我正在开发一个 Java Web应用程序 ,其中包括 一个applet 。该小程序依赖于两个jar文件:

  • JFreeChart(用于在客户端绘制图) -1.7
    mb(jar文件的大小)
  • MySqlJdbcConnector(用于将在客户端捕获的数据存储到远程数据库)-. 7 mb(JAR文件的大小)

现在,问题是上述两个jar文件的大小。我的小应用程序jar (myApplet.jar) 的总大小为 2.5 mb ,其中有 2.4
mb
是因为上述两个jar文件。

我没有在这些jar文件中使用所有类。具体来说,对于 jfreechart ,我使用的是该库中很少的类。

============================ 问题 =================== ===================

Q1。 为了创建 myApplet.jar
文件,我要做的是解压缩两个jar文件(jfreechart和mySQLJdbcConnector),然后将解压缩后的jar文件版本与applet代码的源代码打包在一起以创建一个单独的jar文件(
即myApplet.jar)。 用您的applet代码打包第三方jar文件是否正确?有什么方法可以优化此效果?

Q2。 我试图找到我在应用程序中使用的jfreechart库类的依赖关系,以便仅将那些依赖关系打包在 myApplet.jar中。
为此,我使用DependencyAnalyzer查找所有类的依赖项。但是后来我发现很难手动执行此操作,因为每个类(我在应用程序中使用的jfreechart类)都具有很多依赖关系,并且我正在使用约15个jfreechart类,因此对每个类执行此操作将非常困难。那么对此有什么建议吗?

Q3。 开发人员遇到这种情况是否很常见,还是因为我必须这样做而错过了某些东西?


问题答案:

A1:

您可以创建一个ant脚本或使用Eclipse或任何其他IDE自动打包您的applet。但是你的方法也是正确的

A2:

我不会手动做这些事情。查找传递依赖关系非常复杂。也许 darioo 的答案是一种更好的方法。

A3:

这确实很普遍。一些提示:

您始终可以在没有调试信息的情况下重新构建那些第三方库。那会稍微减少那些库的大小。

另一方面,也许您不应该将小程序直接连接到数据库。您可以创建一个RMI接口(或类似的接口)以将SQL和结果数据传输到实际执行SQL的应用服务器。如果您未在安全的Intranet中运行小程序,则这是小程序的重要安全方面。



 类似资料:
  • 问题内容: 有什么办法可以减少jar文件的大小? 我想要一个减少未使用依赖性的工具。 我使用Maven进行依赖管理。 问题答案: 从Maven的角度来看,JAR文件通常不包含依赖项。因此,您必须在谈论: WAR或EAR或类似文件, 通过合并大量JAR文件而产生的所谓的UberJAR文件;例如使用Maven阴影插件,或 依赖比Maven模块更精细。 在前两种情况下,可以通过在依赖关系规范或war或s

  • 我有一个应用程序,它使用大量的内存来区分两个潜在的巨大(100k)目录的内容。对我来说,这样的操作会占用大量内存是有道理的,但是一旦我的 diff'ing 操作完成,堆的大小就会保持不变。 我基本上有实例化类的代码,用于存储源和目标上每个文件的文件名、文件大小、路径和修改日期。我将添加、删除和更新保存在其他数组中。然后,我我的源数组和目标数组(现在可能每个都是100k),只剩下相对较小的添加、删除

  • 问题内容: 我们将Java 6 JRE与我们的应用程序安装程序捆绑在一起,以便可以在任何计算机上运行,​​但这会使应用程序变得更重。因此,我们计划减小JRE的大小。如果有人完成了此类任务,您能否提供指导以继续前进? 问题答案: 查看JRE目录中的README文件。“可选文件和目录”部分列出了一些文件(如果将它们与应用程序打包在一起,可以从Oracle / Sun JRE中删除)。 创建安装时,我使

  • 问题内容: 我已经为Java项目开发了一个模块。该模块取决于外部库()。问题是,该文件比整个项目本身(14 MB)大两倍。我仅使用库中类的一小部分。该模块现已完成,将来没有人会对其进行扩展。有没有一种方法可以将相关类仅提取给某些类,以便其他人不必下载所有这些额外的内容? 问题答案: ProGuard之类的混淆工具通常提供从jar文件中删除未使用的类(甚至字段和方法)的功能。但是,您必须小心确认所有

  • 问题内容: 我有一个超过40MB的简单tomcat pyinstaller exe。 我的exe示例: 40MB +似乎有点矫kill过正。 如何尽可能减少这种情况? 一种方法: 但是考虑到排除列表的大小,这是不切实际的。 如何为pyinstaller选择一个文件夹,以从中获取模块并排除其他所有内容,所以我的应用程序可能很小? 规格文件: 这也值得一提。默认情况下,Pyinstaller不会检测到

  • 问题内容: 我正在运行的代码将创建包含多个用户定义类的大对象,然后必须对其进行序列化以供以后使用。据我所知,只有酸洗才能满足我的需求。我一直在使用cPickle来存储它们,但是它生成的对象大约是40G,来自运行在500 mb内存中的代码。序列化的速度不是问题,但是对象的大小是问题。我可以使用任何技巧或替代方法来使泡菜变小吗? 问题答案: 如果您必须使用pickle并且没有其他序列化方法对您有用,那