Java的“跨平台”特性
标题 ##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的“跨平台”特性相关推荐
- java的跨平台特性是指_如何理解JAVA的跨平台特性
1.java的跨平台,是指java在运行时是凌驾于os之上,是在jvm中运行的,跟os没有直接联系. 2.java跨平台主要是由java的编译方式决定的,因为java是通过jvm先编译再执行,它编译的 ...
- 到底什么是面向对象,面试中怎么回答。面向过程和面向对象的区别是什么。java跨平台特性以及java和C++的区别。面向对象的三大特性——封装、继承和多态。面向对象的高拓展性以及低耦合度怎么体现?
Java语言具有的特点:面向对象.跨平台.多线程以及网络编程 1. 和C++的区别 1.1 Java隐蔽了C++的指针,避免指针直接操作,程序更加安全. 1.2 Java类继承只能单继承,避免了C++ ...
- Java笔记-01(Java语言的特性、JDK、JRE、JVM三者之间的关系和Java重点术语)
1.Java语言的特性 1.1.简单性在Java语言当中真正操作内存的是:JVM(Java虚拟机)所有的java程序都是运行在Java虚拟机当中的.而Java虚拟机执行过程中再去操作内存.对于C或者C ...
- Day01 学习Java(四大特性、数据类型、运算符)
一.Java初识 四大特性:跨平台.自动垃圾回收.面向对象.多线程 编译型语言 : 运行效率高,但是跨平台性能差 解释型语言 : 运行效率低,但是跨平台性能好 静态语言 : 创建变量的时候,必须先指定 ...
- java入门之---特性和优势
** java小白在线写博客的第一天!!!** 一.特性 1. 简单些 java相对于c++来说要语法简单,因为java是从c和c++里面衍生出来的一门语言,它没有c++的头文件和指针运算,解决了c+ ...
- java11 是长期支持_这里有你不得不了解的Java 11版本特性说明
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- Java这个高级特性-泛型,很多人还没用过!
点击关注公众号,Java干货及时送达 泛型是 Java 的高级特性之一,如果想写出优雅而高扩展性的代码,或是想读得懂一些优秀的源码,泛型是绕不开的槛.本文介绍了什么是泛型.类型擦除的概念及其实现,最后 ...
- Java这个高级特性,很多人还没用过!
点击关注公众号,Java干货及时送达 泛型是 Java 的高级特性之一,如果想写出优雅而高扩展性的代码,或是想读得懂一些优秀的源码,泛型是绕不开的槛.本文介绍了什么是泛型.类型擦除的概念及其实现,最后 ...
- IntelliJ IDEA 使用 Java 11新特性以及Java 8 以来的Java 11新特性介绍
文章目录 Java 11 安装 IDEA 设置 特性1:lambda表达式中允许使用var 特性2: String新增REPEAT 方法,方便拷贝字符串 特性3: 文件读写更方便:readString ...
- Java的三大特性之继承
此处我会分为这几个部分来理解继承是怎么样的: 1.区分封装.继承和多态 2.区分限定词的范围 3.区分隐藏.覆盖.重载 4.继承的理解 5.一道面试题的原型 --------------------- ...
最新文章
- 计算密码子频率的代码R语言_密码子使用频率表
- 找出两个字符串中最长的相同子字符串
- Python接口自动化实战 ( 第一阶段) - 封装接口请求类和异常处理
- 转:自定义谷歌地图配色方案
- Java 实现排序
- mysql安装主从配置_MySQL安装与主从配置
- [js] 写一个方法获取图片的方向
- 深入理解JavaScript系列:This? Yes,this!
- [USACO09HOL]假期绘画Holiday Painting
- 深度linux专业版,用Deepin 15.5 SP2专业版的不要换源更新,否则会成为未授权版本...
- Windows10批处理文件中用regedit导入注册表文件失败的原因和解决办法
- java 工作流框架都有哪些_java工作流框架有哪些?哪个比较好?
- LeetCode 每日一题331. 验证二叉树的前序序列化
- flash迷宫游戏教程
- 16天记住英语7000个单词,300个句子
- 使用pydicom读取dicom文件,并对文件做一些简单操作
- HTTP:Form表单的交互与抓包
- Java的GUI编程---Swing介绍
- 当指挥中心有了“最强大脑”
- 文件操作(全类型通用)