本文首发于公众号: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. 并发库应用之九 & 到时计数器CountDownLatch应用

    申明:CountDownLatch好像倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当到达0时,所有等待者就开始执行. java.util.concurre ...

  2. vue入坑教程(一)

    1.脚手架搭配webpack的安装 (1)需要检查自己的电脑有没有安装node和npm 如果没有安装可以参考官网,以及安装的步骤 官方中文网地址:http://nodejs.cn/ (2)下载webp ...

  3. shell 中各种括号的作用()、(())、[]、[[]]、{}

    一.小括号,圆括号 () 1.单小括号 () 命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号, ...

  4. +function ($) { "use strict";}(window.jQuery);全面分析

    +function ($) { "use strict"; }(window.jQuery); 怎么理解? 匿名函数闭包 我们先来理一理函数表达式和函数声明的区别 函数表达式: 函 ...

  5. JS 总结----基础部分

    javascript基础:1.每个属性都可以加ID2.写函数的时候注意 == 和 = 不要写错了3.html里面怎么写js里面就怎么写,但是有一例外 className 比如oDiv.class = ...

  6. tomcat设置端口号,访问指定ip就访问指定项目

    1.修改背景: A.通常我们访问我们的web应用格式为: http://ip:端口号/项目名称 例如: http://127.0.0.1:8080/projectName B.如果想直接输入" ...

  7. 【译】Flink + Kafka 0.11端到端精确一次处理语义的实现

    本文是翻译作品,作者是Piotr Nowojski和Michael Winters.前者是该方案的实现者. 原文地址是https://data-artisans.com/blog/end-to-end ...

  8. java基础学习周计划之1--语言基础

    JAVA语言基础第一天一. 知识点:1. 认识Linux操作系统2. JAVA开发环境3. Eclipse IDE二. 关键问题(理论):1. Linux中常用命令pwd.ls.cd的作用2. 简述J ...

  9. Mac下安装git

    gti下载地址 https://git-scm.com/downloads 一步一步来就完事了.安装完以后执行 git version 查看是否更新到了该版本

  10. Django中Middleware中间件

    Django中Middleware中间件 1 Middleware中间件概述 django中间middleware实质就是一个类,django会根据自己的规则在合适的时机执行中间件相应的方法.实际上当 ...