一种语言是轻是重,可能会影响到使用者的选型;同时,语言的轻和重有很多度量的维度。本文通过几个方面对比,看看JVM是否有想象中的那么重。
如何来度量?
这些问题可以让我们抛开一些偏见,从多个方面来度量JVM。
认为JVM重的第一个原因是前期安装成本比较高。相比于下载大小只有大约15MB左右的Node和Ruby安装包,JDK下载大小大约为200MB。但是,这仅仅是表面上的,对于Node和Ruby,系统上还必须安装C编译器,这就得再加上几百兆空间。甚至在生产环境也需要一个编译器!
Node和Ruby实际需要的总大小被依赖的每个小部分分解了,如果将这些部分都统计起来,还不如单独下载200MB的包比较高效,更别说在依赖上花费的时间了。
JVM运行速度很快,甚至可以说是最快的运行时框架之一。随着时间的推移,JVM运行的速度更快,更轻便。上千个工程师致力于优化JVM,甚至有人已经为其贡献了21年的代码。
JVM支持原生线程、多个内核,并且能够通过各种配置修改JVM行为,或者只使用默认配置。其中可能必须要了解的配置是如何设置JVM的内存,以控制JVM在限定环境下发挥它的作用。
通常情况下,部署一个Java应用程序只需执行java -server -Xmx512m app.jar。如果这还不够,可以参考使用其他参数。
对于Java应用程序,如果使用Maven作为其依赖管理程序,所有依赖都会下载到~/.m2目录。以下这个示例,是结果经过了9个月的Clojure开发,仅仅积累了1010MB依赖,甚至都不到1G空间。
$ du -sh /usr/local/opt/rbenv/versions/2.3.3 ~/.nvm/versions/node/v6.9.1 ~/.m2
690M /usr/local/opt/rbenv/versions/2.3.3
232M /Users/kenneth/.nvm/versions/node/v6.9.1
1010M /Users/kenneth/.m2
上述示例中,Ruby目录为全新安装,其中内容只有一个博客和一个简单工程。这些依赖占用了近700MB依赖存储。
Node相关目录只安装了ember、docpad和bower,总大小超过200MB。
通常情况下Java应用构建结果为Jar或者War包。其中Jar包包含了应用程序运行所需要的所有文件,而War包一般需要一个应用服务器(如Tomcat、Jetty等)。
对于Jar文件,我们只需要简单的将JAR文件放置到需要部署的机器上,让JVM执行它即可。而War包,也只需要放置到应用服务器对应目录中。当前,也可以简单的将HTTP服务端代码整合到Jar包中,类似于目前流行的微服务应用(如Springboot)。而且,至少Java应用不需要在生产环境机器上运行apt-get install build-essentials。
归功于Java生态的发展,开发基于Java的应用有一系列工具。例如通过Maven,我们可以方便的管理Java应用的依赖,并通过其插件,得到最终构建出来的Jar包或者War包,甚至直接运行。通过IDE,可以方便的进行代码补全、应用启停、断点调试等操作。
另外,JVM可以很方便的通过启动参数配置内存使用,在开发机器上和实际生产机器上使用不同的参数,降低本地调试成本。同时,Java还定义了JDWP(Java Debug Wire Protocol),支持运行时替换代码,而无需每次修改都重新编译,重新启动。
判断JVM是否重需要非常小心。作为一种语言,判断Java语言优劣需要各方面评判,但是JVM可以单独剥离出来讨论。
很多人都认为JVM是个巨大的怪兽。不过归功于诸多大神的支持,使得我抛弃了之前的观点。
不过,本文没有“Node语言终结”或者“Ruby语言终结”的意思,仅仅是通过一些角度给出一些观点,读者可以借此考虑消除自己常用语言的膨胀。

原文来自:InfoQ
声明:所有来源为“聚合数据”的内容信息,未经本网许可,不得转载!如对内容有异议或投诉,请与我们联系。邮箱:marketing@think-land.com
基于大模型能力构建的文本审核服务,能够高效精准地识别各类文本违规内容。与传统文本内容安全审核方案相比,具备更强大的语言理解与分析能力,能精准识别复杂、隐晦的违规内容,突破了传统模式的局限。
基于图片审核大模型服务,能够全方位识别图片中的色情、性感、涉政、暴恐、违禁、宗教、引流广告、不良等违规内容,并支持返回大模型的审核结果。结合大模型和专家小模型,提供更细粒度的标签(如色情细分、具体行为、特定物体等),识别范围更广、标签更丰富。 综合效果最佳,适合对误判率、漏判率都有较高要求的场景。
针对AIGC场景,检测AIGC生成的图片是否存在违规或者不宜传播的内容。建议AIGC生成的图片都进行该项检测。
检测图片是否疑似由AI生成合成、图片是否含有AI生成合成隐式标识(如果有隐式标识时支持返回图片AIGC元数据信息)。
根据身份证/手机号进行核验号码是否有涉险诈骗风险。