直面Java 第003期
。 问:什么是平台无关性,Java是如何做到平台无关的? 解: 大家说的都很对,看来大家对这个概念掌握的很可以。我简单总结一下。 跨平台指的是一种语言在计算机上的运行不受平台的约束,一次编译,到处执行。 平台无关有两种:源代码级和目标代码级。 我们常说的跨平台,或者平台无关,指的就是目标代码,或者说是软件交付件跨平台。 C和C++具有一定程度的源代码级平台无关,表明用C或C++写的应用程序不用修改只需重新编译就可以在不同平台上运行。但是,关键是要重新编译。可是,一般软件交付都是给你个成品,对于C或者C++开发出的软件,只能运行在某个平台的。没有源码,怎么编译。 Java编译出来的是字节码,去到哪个平台都能用,只要有那个平台的JDK就可以运行,所以,Java程序的最大优势就是平台无关。对于Java,交付的就是一堆jar包或者war包,只要系统上有个Java虚拟机,就可以直接运行,这不就是跨平台了么。 我们使用的C、C++还有Java等高级语言,都需要最终被编译成机器语言,才能被计算机执行。 C语言和C++语言的编译过程是把源代码编译生成机器语言。这样机器可以直接执行。但是不同系统对同一段“机器语言”的处理结果可能是不一样的,原因可能有很多,比如CPU的指令集不同的。C语言不能实现跨平台运行,就是因为它编译出来的文件的格式,只适用于某种cpu,其他cpu无法识别。 那么Java是如何实现跨平台的呢? 我们编写的Java源码,编译后会生成一种 .class 文件,称为字节码文件。这种字节码文件需要经过JVM虚拟机,然后翻译成机器语言,才能被机器执行。 那么,由于我们可以在不同的操作系统上安装不同的JVM,而JVM封装了所有对于.class文件的处理,即JVM帮我们把字节码翻译成机器语言的过程中就已经充分考虑到对应平台的特性了。比如,一个.class文件,在不同机器上最终生成的机器语言可能是不同的,但是这种不同不需要我们关心,JVM会保证他可以正常运行,完整的表达正确的程序语义。
直面Java 第003期的更多相关文章
- 直面Java 第004期。
什么是值传递,什么是引用传递.为什么说Java中只有值传递 对于初学者来说,要想把这个问题回答正确,是比较难的.在第二天整理答案的时候,我发现我竟然无法通过简单的语言把这个事情描述的很容易理解,遗憾的 ...
- 直面Java 第002期
. Java和C++同为面向对象语言,Java和C++主要区别有哪些?双方个有哪些优缺点? 解: C++ 被设计成主要用在系统性应用程序设计上的语言,对C语言进行了扩展.对于C语言这个为运行效率设计的 ...
- java 复习003 之排序篇
由java 复习003跳转过来的C语言实现版见some-sort-algorithms 快速排序(不稳定 O(n log n)) package vell.bibi.sort_algorithms; ...
- java在编译期和运行期都做了什么
Java对象内存存储,引用传递,值传递详细图解 java对象在内存中的分配 编译过程: 编译器把一种语言规范转化为另一种语言规范的这个过程需要哪些步骤?回答这个问题需要参照<编译原理>,总 ...
- 深入分析Java的编译期与运行期
不知大家有没有思考过,当我们使用IDE写了一个Demo类,并执行main函数打印 hello world时都经历了哪些流程么? 想通过这篇文章来分析分析Java的执行流程,或者换句话说想聊聊Java的 ...
- 深入了解JVM虚拟机8:Java的编译期优化与运行期优化
java编译期优化 java语言的编译期其实是一段不确定的操作过程,因为它可以分为三类编译过程:1.前端编译:把.java文件转变为.class文件2.后端编译:把字节码转变为机器码3.静态提前编译: ...
- java 复习003
今天主要复习下数据结构的东西 树 自平衡二叉查找树 AVL树(高平衡树)(wiki) 特性:任何节点的两个子树的高度最大差别为一 时间复杂度:查找.插入和删除在平均和最坏情况下都是O(log n) 红 ...
- java实现——003二维数组中的查找
import java.util.Scanner; public class T003 { public static void main(String[] args) { Scanner in = ...
- java - day014 - 编译期,运行期
编译期 静态成员 私有变量 成员变量 运行期 非静态方法 package day1401; public class Test1 { public static void main(String[] ...
随机推荐
- 求1+2+……+n的和
题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). class Solution { public ...
- POJ 1936 All in All 匹配, 水题 难度:0
题目 http://poj.org/problem?id=1936 题意 多组数据,每组数据有两个字符串A,B,求A是否是B的子串.(注意是子串,也就是不必在B中连续) 思路 设置计数器cnt为当前已 ...
- WPF 创建自定义控件及自定义事件
1 创建自定义控件及自定义事件 /// <summary> /// 演示用的自定义控件 /// </summary> public class ExtButton : Butt ...
- [HDU4585]Shaolin
Problem 问你一个数的前驱和后继 Solution Treap模板题 Notice 注意输出那个人的编号 Code #include<cmath> #include<cstdi ...
- day20 类的约束
今日所学 : 1 .类的约束 2 .异常处理 try except raise 3. MD5加密 4. 日记处理(不要记,留一份,侧重点再用) 1 .类的约束 1) 写一个父类,父类中的某个方法要抛出 ...
- xStream解析生成xml文件学习资料
参考链接: http://www.cnblogs.com/hoojo/archive/2011/04/22/2025197.html
- npm login npm publish报错
. 把那个文件删除就好了 查看npm是淘宝的还是原始的 npm config get registry 如果是淘宝的要退回到原始的 npm config set registry=http://reg ...
- jq demo—图片翻页展示效果 animate()动画
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- JSON转化
相关链接 : http://blog.csdn.net/gchb9527/article/details/8688279 --------------------------------------- ...
- SharePoint Framework 在Visual Studio Code中调试你的本地解决方案
博客地址:http://blog.csdn.net/FoxDave Visual Studio Code不知道大家都有没有,界面清爽,编辑快速,是一个非常好的前端开发工具.本文介绍如何使用Goog ...