标题 ##Java的“跨平台”特性

言下之意,C、C++是不具备“跨平台”特性的(严格来说,也不是这么回事)。那为什么呢?想想。

先解释一下: “跨平台”。这里的“平台”就是指我们常用的操作系统,如Windows/Linux/Mac。“跨平台”就是指能在不同的平台上使用。

Java“跨平台”特性的实现原理如下:.java文件,经过Java编译器编译,形成字节码文件——.class,这种.class文件可以运行在JVM上,而JVM可以被安装到不同的平台,这就带来了Java的跨平台特性。

应当说明的是:.class文件这种字节码文件,基于Unicode的字节码是不依赖于特定的计算机硬件架构,不是严格的二进制文件,而.cpp文件经过C++编译器编译后,形成的.obj文件,是一种纯二进制的机器指令。

其实Java、C/C++都是具有跨平台的特性,需要看这个“跨平台”,你如何理解?

C/C++语言本身是跨平台的,这是从“源码编译”的角度来看,但其应用程序.exe不是。比如:你的C/C++程序只使用C标准的输入输出,那么源代码也是跨平台的,只要用对应平台的编译器编译就可以运行,如果你使用了平台专有的API,那么它就不能跨平台,比如WINDOWS窗口程序,就调用了WINDOWS的创建窗口,显示窗口等API(这些调用并不一定在你自己的代码中),Linux是没有这些API的,所以就无法编译更无法运行。标准的C/C++本身都是硬件无关的,但是标准C/C++往往不够用, 于是一些人就会直接用Linux或windows的C/C++接口,这样做不符合现代设计模式,导致程序脆弱,跨平台就更别提了,正确的做法应当是用C/C++调用跨平台库,由跨平台库承担处理平台差异的细节。

C++创始人曾经这样说:“JVM造了一个新的平台,让所有Java程序只能在这个平台上运行,而C和C++的代码可以在几十个不同的平台上运行,从这个角度而言,C和C++是才是真的跨平台的,而Java不是。”当然,你也可以认为,Java的确只是在其唯一的平台上——JVM上运行的。

正所谓:C语言是“一次编写,到处编译”;Java是“一次编译,到处运行”。

注:以上说得有点乱,其实大部分都是自己整合别人的经验而来,主要是自己理解不够的原因,目的是为了通俗地说明问题。

Java的“跨平台”特性相关推荐

  1. java的跨平台特性是指_如何理解JAVA的跨平台特性

    1.java的跨平台,是指java在运行时是凌驾于os之上,是在jvm中运行的,跟os没有直接联系. 2.java跨平台主要是由java的编译方式决定的,因为java是通过jvm先编译再执行,它编译的 ...

  2. 到底什么是面向对象,面试中怎么回答。面向过程和面向对象的区别是什么。java跨平台特性以及java和C++的区别。面向对象的三大特性——封装、继承和多态。面向对象的高拓展性以及低耦合度怎么体现?

    Java语言具有的特点:面向对象.跨平台.多线程以及网络编程 1. 和C++的区别 1.1 Java隐蔽了C++的指针,避免指针直接操作,程序更加安全. 1.2 Java类继承只能单继承,避免了C++ ...

  3. Java笔记-01(Java语言的特性、JDK、JRE、JVM三者之间的关系和Java重点术语)

    1.Java语言的特性 1.1.简单性在Java语言当中真正操作内存的是:JVM(Java虚拟机)所有的java程序都是运行在Java虚拟机当中的.而Java虚拟机执行过程中再去操作内存.对于C或者C ...

  4. Day01 学习Java(四大特性、数据类型、运算符)

    一.Java初识 四大特性:跨平台.自动垃圾回收.面向对象.多线程 编译型语言 : 运行效率高,但是跨平台性能差 解释型语言 : 运行效率低,但是跨平台性能好 静态语言 : 创建变量的时候,必须先指定 ...

  5. java入门之---特性和优势

    ** java小白在线写博客的第一天!!!** 一.特性 1. 简单些 java相对于c++来说要语法简单,因为java是从c和c++里面衍生出来的一门语言,它没有c++的头文件和指针运算,解决了c+ ...

  6. java11 是长期支持_这里有你不得不了解的Java 11版本特性说明

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  7. Java这个高级特性-泛型,很多人还没用过!

    点击关注公众号,Java干货及时送达 泛型是 Java 的高级特性之一,如果想写出优雅而高扩展性的代码,或是想读得懂一些优秀的源码,泛型是绕不开的槛.本文介绍了什么是泛型.类型擦除的概念及其实现,最后 ...

  8. Java这个高级特性,很多人还没用过!

    点击关注公众号,Java干货及时送达 泛型是 Java 的高级特性之一,如果想写出优雅而高扩展性的代码,或是想读得懂一些优秀的源码,泛型是绕不开的槛.本文介绍了什么是泛型.类型擦除的概念及其实现,最后 ...

  9. IntelliJ IDEA 使用 Java 11新特性以及Java 8 以来的Java 11新特性介绍

    文章目录 Java 11 安装 IDEA 设置 特性1:lambda表达式中允许使用var 特性2: String新增REPEAT 方法,方便拷贝字符串 特性3: 文件读写更方便:readString ...

  10. Java的三大特性之继承

    此处我会分为这几个部分来理解继承是怎么样的: 1.区分封装.继承和多态 2.区分限定词的范围 3.区分隐藏.覆盖.重载 4.继承的理解 5.一道面试题的原型 --------------------- ...

最新文章

  1. 计算密码子频率的代码R语言_密码子使用频率表
  2. 找出两个字符串中最长的相同子字符串
  3. Python接口自动化实战 ( 第一阶段) - 封装接口请求类和异常处理
  4. 转:自定义谷歌地图配色方案
  5. Java 实现排序
  6. mysql安装主从配置_MySQL安装与主从配置
  7. [js] 写一个方法获取图片的方向
  8. 深入理解JavaScript系列:This? Yes,this!
  9. [USACO09HOL]假期绘画Holiday Painting
  10. 深度linux专业版,用Deepin 15.5 SP2专业版的不要换源更新,否则会成为未授权版本...
  11. Windows10批处理文件中用regedit导入注册表文件失败的原因和解决办法
  12. java 工作流框架都有哪些_java工作流框架有哪些?哪个比较好?
  13. LeetCode 每日一题331. 验证二叉树的前序序列化
  14. flash迷宫游戏教程
  15. 16天记住英语7000个单词,300个句子
  16. 使用pydicom读取dicom文件,并对文件做一些简单操作
  17. HTTP:Form表单的交互与抓包
  18. Java的GUI编程---Swing介绍
  19. 当指挥中心有了“最强大脑”
  20. 文件操作(全类型通用)

热门文章

  1. instagram动态网页图片内容爬取(一)
  2. CSS - 让整个页面变成灰色(一行代码)
  3. web网站整体变灰色仅仅需要两行代码
  4. 锁屏中如何实现屏蔽home键
  5. 8. 数仓开发之 DIM 层
  6. Cocos2d-x面试题
  7. ubuntu与windows双系统的启动项丢失
  8. Red5 支持https和rtmps
  9. 华硕服务器 bios 内存 1333 显示 800,华硕服务器bios设置
  10. dis ospf peer 输出