本文首发于公众号:javaadu

003:字节码是什么?

在Java中,字节码存放于以.class结尾的二进制文件。

字节码之于Java,类似于汇编语言之于C/C++。对于C/C++语言来说,不同的平台需要不同的编译器,以应对不同的操作系统和机器指令集;对于Java来说,只需要一个编译器(javac),编译形成的字节码是一种通用的代码,可以运行在任何安装了JVM的机器上,也就实现了所谓的“一次编写、到处运行”。

使用字节码和虚拟机的语言不只有Java一种,Java是现在最出名的语言,LISP是更古老的语言(该语言主要用于人工智能和科学计算);其他使用类似于字节码的语言有Icon和Prolog

004:比较下JDK、JVM和JRE的不同

JVM是运行Java应用的虚拟机,主要模块有:类加载子系统、运行时数据区、即时编译(JIT)子系统、垃圾收集子系统等;

JRE是Java运行时环境,主要包括Java SE API(基础类库和UI类库)和Java应用的部署套件。

JDK是最大的概念,包括:JVM + JRE + Java语言 + JDK辅助工具(javac、jmap等)

005:C++和Java之间最大的不同是什么?

Java和C++的设计目标不同:(1)C++最初的设计目标是为了扩展C语言的能力,主要的应用场景是系统应用开发,跟C语言相比,C++增加了面向对象能力、异常处理、强大的资源管理能力、泛型编程、模板编程以及STL库等能力;(2)Java的设计目标是更加普遍,是纯粹的OOP语言、支持并发、更好的可移植性(跨平台能力),Java利用JVM实现了较高的安全性和可移植性。

我认为,C++和Java最主要的几个不同可以列举如下(其他语言特性的不同在此不做讨论):
| | C++ | Java |
| --- | --- | --- |
| 平台独立性 | C++是平台相关性语言 | Java是平台无关性语言 |
| 指针 | C++支持指针变量,因此我们可以将任何变量的地址存放在一个指针变量中 | Java不支持指针变量 |
| 语言级别 | C++既可以当作是高级语言,也可以当作是机器级别的语言 | Java是纯粹的高级语言 |
| 内存管理 | C++需要程序员手动管理内存的分配和释放 | Java在大多数情况下不需要关心内存的分配和释放 |

参考资料

  1. bytecode

本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。

003-005:Java平台相关的面试题的更多相关文章

  1. 面试题_ Java EE 相关的面试题

    为了做 Java EE 的朋友,这里列出了一些 web 开发的特定问题,你们可以用来准备 JEE 部分的面试: 10 大 Spring 框架面试题及答案(参见)10 个非常好的 XML 面试问题(Ja ...

  2. Java线程相关的热门面试题

    ---恢复内容开始--- 下面是Java线程相关的热门面试题,你可以用它来好好准备面试. 1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位.程序 ...

  3. java面试题(杨晓峰)---第一讲谈谈你对java平台的理解

    本人总结: 面向对象(封装,继承,多态) 平台无关性(jvm运行,class文件) 语言(泛型,lambda) 类库(集合,并发,网络,io/nio) jre(java运行环境,JVM,类库) JDK ...

  4. Java平台与内存管理

    问题及答案来源自<Java程序员面试笔试宝典>第四章 Java基础知识 4.8Java平台与内存管理 1.为什么说Java是平台独立性语言? 平台独立性是指可以在一个平台上编写和编译程序, ...

  5. java高级&资深&专家面试题-行走江湖必备-持续更新ing

    行走江湖必备一份面试题,这里给大家整理了一套.0面试官最喜欢问的问题或者出场率较高的面试题,助校招或者社招路上的你一臂之力! 首先我们需要明白一个事实,招聘的一个很关键的因素是在给自己找未来的同事,同 ...

  6. 基于java平台的常用资源整理

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  7. 这里整理了基于java平台的常用资源

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  8. Atitit  J2EE平台相关规范--39个  3.J2SE平台相关规范--42个

    Atitit  J2EE平台相关规范--39个  3.J2SE平台相关规范--42个 2.J2EE平台相关规范--39个5 XML Parsing Specification16 J2EE Conne ...

  9. java平台的常用资源

    分离领域 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.thanks. 构建 这里搜集 ...

随机推荐

  1. eclipse maven 构建简单springmvc项目

    环境:eclipse Version: Oxygen.3a Release (4.7.3a) 创建maven Project项目,目录结构 修改工程的相关编译属性 修改pop.xml,引入spring ...

  2. mysql数据库死锁的产生原因及解决办法

    这篇文章主要介绍了mysql数据库锁的产生原因及解决办法,需要的朋友可以参考下   数据库和操作系统一样,是一个多用户使用的共享资源.当多个用户并发地存取数据 时,在数据库中就会产生多个事务同时存取同 ...

  3. mybatis的sqlmapper详解

    http://blog.csdn.net/u012302681/article/details/46326877

  4. .net 工程中引用出现感叹号

    在工程中引用出现感叹号,有两个原因 原因1:  这是由于之前引用的Dll文件不见了. 解决方案: 右键有感叹号的项,然后选择 “属性” 里边有一个路径属性 这个路径就是之前这个Dll文件的路径,现在这 ...

  5. jquery遍历table为每一个单元格取值及赋值

    表格代码 <tr> <td> <input type="text" style="border: none; text-align: cen ...

  6. Ubuntu软件中心的完全启用

    新安装的Ubuntu英文版如果不做配置是无法使用Ubuntu软件中心下载或安装软件的,本文就简单介绍一下安装完Ubuntu后该做哪些配置才能完全启用Ubuntu软件中心. 安装完Ubuntu后我们要对 ...

  7. 第六章——决策树(Decision Trees)

    决策树是强大的,多功能的机器学习算法. 6.1 训练和可视化一个决策树 在iris数据集训练DecisionTreeClassifier: from sklearn.datasets import l ...

  8. jmeter使用csv进行参数化(一)

    先录制一个脚本,具体录制可以参考笔者的随笔:http://www.cnblogs.com/wuyazi/p/8889770.html 1.准备参数化文本内容:mac没有自带的txt文本编辑器,笔者是在 ...

  9. 我的Python之旅第三天

    一 编码操作 1 编码 enconde() 英文字符编码为"utf-8"时,一个字符占一个字节. s1='abcdef' b1=s1.encode('utf-8') print(b ...

  10. 安装vmtools之后任然不能在虚拟机和主机之间复制粘贴的问题

    安装vmtools之后任然不能在虚拟机和主机之间复制粘贴的问题 都是因为这个进程没有启动起来,你只需要在启动后在终端输入 "/usr/bin /vmware-user" 就可以手动 ...