大家好,今天小编关注到一个比较有意思的话题,就是关于军用java语言的问题,于是小编就整理了2个相关介绍军用Java语言的解答,让我们一起看看吧。
为军工行业不用java,而是选择继续用c++?
首先是安全问题。
Java是一个庞大的生态。在jvm(java的运行虚拟机)这个大基础之上还有无数框架、中间件。比如springboot、kafka等等。这里面99%的代码贡献者都是老外。庞大的代码量和复杂的设计体系使得即使开源的项目,要隐藏一些后门都是极为容易的事情。与之相反,想要找出这些后门难如登天(做过软件开发的人就知道,自己亲手写的代码,项目一旦变得庞大,想要找出特定场景才出现的BUG有多难)。开源的项目的风险都不可控,不开源的部分就更不用讲了。因此,Java生态体系无法达到军工要求的安全级别,项目中每一个第三方都可能成为风险源。Jvm能不能保证安全都还是一个巨大的问题。
其次是稳定性问题。
得益于Java生态的完善,有大量的框架的组件可以使用,就使得在Java上做任何项目,程序员第一件事就是想找有无可用的现成框架或者组件,自己动手写一些复杂的算法必要性越来越低,底层能力越来越差,至少90%的java程序员是胶水程序员,负责组合各种第三方,然后做一些简单的业务逻辑。第三方的框架和组件的代码质量和可靠性无法评估。大量使用框架带来的问题就是臃肿,框架为了追求更广泛的适用性,会做很多兼容和妥协。极端情况下C++的程序只要几KB大小就能实现的功能,java得带上Jvm不说,打包个就可能几十MB。套用一句真理:代码量越大,稳定性越差。
再次是C++的优点。
C++可以开发最低层的应用,例如直接和硬件打交道的驱动,几乎没有不可以实现的功能。用C++做开发最大的问题是,可以用的现成东西比较少,凡是想要做啥功能都要自己动手。开发界有一句古话“不要重复造轮子”,但是C++就是造轮子的工具,所以用C++开发就得自己造轮子。相当于工业母机床,想造什么都根据需要来实现。从国家安全的角度考虑,军工信息化应该有自己的一套生态。这一套生态环境应该是封闭的,由军工人一代一代累积下来的。
综上,个人认为,军工不可能淘汰C++,随着军工信息化生态的完善,被淘汰的更有可能是Java。当然,这个过程最难的就是人材的培养,越封闭的系统,人材越难得。
C++才是计算机高级语言终极形态,其他都是为了简化人的使用难度,降低了下来的。太难太抽象的语言,不适合一般人学习使用。C++的各种开发包和架构也都是按人使用方便构建桥梁。
某语言天天喊着人多势众就觉得要一统天下了。其实某语言只在单位的审批流,电商这些这些请求延迟应用需求是几秒级别的应用场景。对于实时性要求高,可靠性要求高的环境。某语言基本绝迹。这表现在车床控制,武器控制,医疗设备,甚至绝大多数3D游戏。某语言基本是绝迹的。
jvm会自动GC回收,引起短暂的挂起,c++内存是编码自己控制的,不会存在这种情况,军工类对实时要求极高,不允许有误差,这是一个原因。还有系统底层一般会用C语言,这也是一个原因
四大编程语言之父?
linux之父--林纳斯·托瓦兹
python之父--Guido van Rossum
c++之父--Bjarne Stroustup
c#之父--安德斯·海尔斯伯格
php之父--雷斯莫斯·勒道夫
Ruby之父--松本行弘
Perl之父--Larry Wall
JavaScript之父--布兰登·艾奇
到此,以上就是小编对于军用java语言的问题就介绍到这了,希望介绍关于军用java语言的2点解答对大家有用。