军工,即军事工业,是工业领域的一个分支。工业控制,必然是C/C++的主战场。工业控制,讲究的是极高的稳定性,稳定压倒一切。同时,还讲究实时性。在控制过程中,一旦出现不稳定或大的延时,后果可能就是致命的。军工,那要求更加严格,简直就是性命攸关!

游戏有时也有类似的特点,但是出现问题,大不了就输一局比赛,损失一件高端游戏装备,这与军工的损失完全不在一个重量级。

而Java广泛用于应用级开发,特别是web平台和手机app。哪怕是在线支付,对于稳定性和实时性的要求也没有那么高。经常我们遇到服务不可用之类的错误,“请刷新重试”。关系不大,多刷新几下就好了嘛。事务机制基本能保证不会乱扣钱,但是保证不了一次性成功以及高度的实时性。

而在工业控制中,关键操作可不敢“刷新重试”。在类似驾驶的控制中,关键指令延迟0.1秒可能都是致命的。

说了这么多,这与C/C++和Java有什么关系的?

两者最大的区别就是:Java是带虚拟机的,是带垃圾回收的,而C/C++不带。垃圾回收往往是不可控的,不知道什么时候就执行了垃圾回收,这个时间可能很短,也可能很长。在垃圾回收时,就会带来卡顿。Java虽然也有运行时编译、“预热”机制,但都是难以控制的,具有不确定性。说的直白点,你把一切希望都寄托到了Java虚拟机(JVM)。而对于工业控制,尤其是军工,肯定尽量要求一切要尽在掌控中。

对于要求最高的控制场景,那都不能用windows或常规Linux,因为它们是分时系统,是多任务的,是非实时的。这时候,可能最简单的才是最可靠的。单任务、单进程、单线程,去除一切用不到的功能。连声卡、显卡、网卡、硬盘/SD卡,都不是必需的。甚至更夸张一点,连操作系统都没有!

windows、普通的Linux,能做到10毫秒的精度。定制的嵌入式系统,能做到毫秒级的精度。而高度优化的,不带操作系统的板子,甚至可以做到微秒级别的实时控制。

注意一下,光在真空中1微秒只传输300米。最极端的,最快的控制是最原始的机械紧急停止按钮。它的延迟恰好就是光在线路中的传输时间。所以大家就能明白,为什么越简单越可靠越快。

有了这些基础,大家就能明白,在非常“低级”的系统中,只有汇编和C可以运行起来,虚拟机和解释器是跑不动的。就算跑起来,也是很慢的,很消耗资源的。

Java,其底层就是用C语言写的。大家若不相信,请马上去阅读Java源代码中有关压缩、JPG图像、科学运算(sin、cos、log、pow等)的部分。另外虚拟机也是用C写的。所以理论上来说,只要是Java能做到的,特别是性能方面,C语言都可以做到。

对于业务系统,Java是非常合适的,开发效率高,生态系统好。但是对于军工,开发效率要让位于执行效率以及可靠性、实时性、低功耗。人们愿意花费更多的研发时间去开发这样的系统,哪怕是重复造轮子也在所不辞,因为这是性命攸关的,有时甚至是不计成本的。

c++接近汇编效率,基本没有延迟,有bug也是蓝屏死机类似底层严重故障。而java是个半编译语言,它依靠解释器,它不一定能及时运行。如果用来编写碰撞检测估计你更倾向于汇编或能操作CPU的语言,所有的都在预料的掌控下。这就是君工和行业生产不淘汰C++。

java 军工_为什么军工行业不用java而是选择继续用c(对于业务系统Java是非常合适的而不带操作系统的板子甚至可以做到微秒级别的实时控制)...相关推荐

  1. 银行客户业务系统(JAVA,JSP,SQLSERVER)

    银行客户业务系统(JAVA,JSP,SQLSERVER) 银行客户业务系统(JAVA,JSP,SQLSERVER)(毕业论文13620字以上,共23页,程序代码,MySQL数据库) [运行环境]  M ...

  2. amd cpu不能在cmd环境下运行java代码_「我们一起学Java02」JDK、JRE、JVM简介,Java开发平台的搭建...

    Hello,各位头条的读者大家好!接下来一段时间小编将和大家一起学习Java,"我们一起学Java"专题将会持续更新,欢迎大家关注.这里是"我们一起学Java" ...

  3. java书籍_腾讯大牛每天都要花一小时读的这11本java电子书籍,你还不看?

    最近有小伙伴私信想要一些电子书 今天小编为大家整理出来了这11本java必学书籍大家快学起来吧! 第一本代码整洁之道Clean Code 内容提要 软件质量,不但依赖于架构及项目管理,而且与代码质量紧 ...

  4. 十进制转化为二进制java代码_【模板小程序】任意长度十进制数转化为二进制(java实现)...

    妈妈再也不用担心十进制数过大了233 import com.google.common.base.Strings; import java.math.BigInteger; import java.u ...

  5. java画图颜色_手绘板,多种颜色选择。我抄的《疯狂java讲义》的,包我乱导的,但代码能用。...

    [java]代码库import javax.swing.*; import java.awt.image.*; import java.awt.datatransfer.*; import javax ...

  6. 码云上面优秀的java项目_秒建一个后台管理系统?用这5个开源免费的Java项目就够了...

    以下推荐项目都是码云上的优质项目,并且都是项目快速开发脚手架,代码质量什么的无法保证能有多好,毕竟很多也是个人开发,或多或少也有个人色彩影响. 不过既然开源出来,这么多人参与,一般情况下项目整体质量可 ...

  7. 监考安排系统java代码_基于jsp的监考安排与查询-JavaEE实现监考安排与查询 - java项目源码...

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的监考安排与查询, 该项目可用各类java课程设计大作业中, 监考安排与查询的系统架构分为前后台两部分, 最终实现在 ...

  8. java汽车票_基于jsp的网上汽车票订票-JavaEE实现网上汽车票订票 - java项目源码

    基于jsp+servlet+pojo+mysql实现一个javaee/javaweb的网上汽车票订票, 该项目可用各类java课程设计大作业中, 网上汽车票订票的系统架构分为前后台两部分, 最终实现在 ...

  9. c语言制作java虚拟机_【C/C+】虚拟机实现:用C语言来写Java虚拟机

    前言:本篇文章除了能够让你了解到虚拟机的工作原理外,还可以让你了解到较低级别的编程过程. 由于我喜欢在较低级别(Low-level)的应用中(编译器,解释器,解析器,虚拟机等等)工作,所以我觉得写一篇 ...

最新文章

  1. OpenCV | OpenCV将图像转换成黑白图像(二进制)
  2. 阿里云发布Quick BIV3.0,人人都能轻松进行在线数据分析
  3. 简单的图像去噪的实现和验证码识别
  4. mybatis入门(六)----高级映射(一对一,一对多,多对多)
  5. HDU2044一只小蜜蜂(递推)
  6. 行业场景智能应用,解锁边缘计算时代新机遇
  7. java hibernate dto_java – 正确使用Entity和DTO在Restful Web服务中...
  8. MySQL—赋权(grant)和回收权限(revoke)
  9. 最快配置本地Yum仓库
  10. SpringBoot(13)--- 数据库操作(集成MyBatis)
  11. 【转载】web.xml中的classpath和classpath*
  12. Mysql 存储过程实现订单流水号
  13. android自定义ViewPager之——水平滑动弹性效果
  14. 2021广东工业大学837信号与系统真题自编答案
  15. Win10投影到此电脑用不了
  16. chrome插件推荐:FaWave(发微)
  17. 老徐WEB:js入门学习 - javascript变量的数据类型
  18. 事件委托(代理)的理解
  19. 饥饿游戏3:嘲笑鸟(上)[The Hunger Games:Mockingjay - Part 1]
  20. 电话号码正则表达式手机固话分机

热门文章

  1. windows 系统日志
  2. python详细安装教程-python安装教程 Pycharm安装详细教程
  3. 免费python课程排行榜-Python爬虫学习排行榜
  4. python基础知识-一篇文章搞定Python全部基础知识
  5. python爬虫怎么赚钱-python爬虫怎么赚钱
  6. python有什么用-python都可以做什么用
  7. 30岁学python有前途吗-我30岁了,转行学编程可以吗? 排除法告诉你答案
  8. python语言入门-分分钟入门python语言
  9. 只有10万元预算买畅销SUV自动车型您选谁?
  10. scrolling=no 无法根据坐标获取元素_提高三坐标测量精度,要记住这几招