当前位置: 首页 > article >正文

【Java 问题】基础——Java 概述

Java 概述

  • 1. 什么是 Java ?
  • 2. Java 语言有哪些特点
  • 3. JVM、JDK 和 JRE 有什么区别?
  • 4. 说说什么是跨平台性?原理是什么?
  • 5. 什么是字节码?采用字节码的好处是什么?
  • 6. 为什么说 Java 语言 "编译与解释并存"?

1. 什么是 Java ?

Java 是一门面向对象的编程语言, 不仅吸收了 C++ 语言的各种优点, 还摒弃了 C++ 里难以理解的多继承、指针等概念,因此Java 语言具有功能强大和简单易用两个特征。Java 语言作为静态面向对象编程语言的有限代表,几号地实现了面向对象理论,运行程序员以优雅的思维方式进行复杂的编程。

2. Java 语言有哪些特点

  • 面向对象 (封装、继承、多态);
  • 平台无关性,平台无关性的具体表现在于,Java 是“一次编写,到处运行”的语言,因此采用 Java 语言编写的程序具有很好的可移植性,而保证这一点的正是 Java的虚拟机机制。在引入虚拟机之后,Java语言在不同的平台 上运行不需要重新编译。
  • 支持多线程。C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线支持;
  • 编译与解释并存;

3. JVM、JDK 和 JRE 有什么区别?

JVM:Java virtual Machine,Java 虚拟机,Java 程序运行在Java 虚拟机上。针对不同系统实现的不同的JVM,因此 Java 语言可以实现跨平台。

JRE:Java 运行时环境,它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,Java命令和其他的一些基础构建。但是它不能用于创建新程序。

JDK:Java Development Kit,它是功能齐全的 Java SDK。它拥有 JRE 所拥有的一切,还有编译器 javac 和工具(如 javadoc 和 jdb)。它能创建和编译程序。

简单来说,JDK包含JRE,JRE包含 JVM。

在这里插入图片描述

4. 说说什么是跨平台性?原理是什么?

所谓跨平台性,是指 Java 语言编写的程序,一次编译后,可以在多个系统平台上运行。

实现原理: Java程序是通过 Java 虚拟机在系统平台上运行的,只要该系统可以安装相应的 Java 虚拟机,该系统就可以运行 Java 程序

5. 什么是字节码?采用字节码的好处是什么?

所谓的字节码,就是Java程序经过编译之列产生的 .class 问加你,字节码能够被虚拟机识别,从而实现Java程序的跨平台性.

Java 程序从源代码到运行主要有三步:

  • 编译: 将我们的代码 (.java) 编译成虚拟机可以识别理解的字节码 (.class)
  • 解释: 虚拟机执行java字节码, 将字节码翻译成机器能识别的机器码
  • 执行: 对应的机器执行二进制机器码

在这里插入图片描述
只需要把 Java 程序编译成Java虚拟机能识别的Java字节码,不同的平台安装对应的Java虚拟机, 这样就可以实现Java语言的平台无关性.

6. 为什么说 Java 语言 “编译与解释并存”?

高级编程语言安装程序的执行方式分为 编译型和解释型两种

简单来说, 编译型语言是指编译器针对特定的操作系统将源代码一次性翻译成可被改平台执行的机器码; 解释型语言是指解释器对源程序逐行解释成特定平台的机器码并立即执行.

Java 语言几句有编译型语言的特征, 也具有解释型语言的特征, 因为 Java 程序要经过先编译, 后解释两个步骤,由 Java 编写的程序需要先经过编译步骤, 生成字节码 (*.class 文件), 这种字节码必须在经过 JVM, 解释成操作系统能识别的机器吗, 由操作系统执行. 因此, 我们可以认为 Java 语言编译和解释并存.


http://www.kler.cn/news/319532.html

相关文章:

  • 机器学习周报(9.16-9.22)-Pytorch学习(四)
  • 昇思量子计算系列教程-龙算法
  • 【Webpack】Hash 码
  • 15.10 在k8s部署grafana-deployment并导入k8s大盘
  • 计算机视觉的应用34-基于CV领域的人脸关键点特征智能提取的技术方法
  • N诺计算机考研-错题
  • 企业EMS -能源管理系统-能源在线监测平台
  • C# .net6 开发数据采集软件(一)
  • 关于 NLP 应用方向与深度训练的核心流程
  • 【算法题】63. 不同路径 II-力扣(LeetCode)-”如果起点有障碍物,那么便到不了终点“
  • 行业人工智能研究-Python自监督方式学习图像表示算法
  • mysql表逆向实体类
  • Linux 基础IO 2
  • 网络原理之IP协议(网络层)
  • java线程Thread的组名是main就是在主线程吗?
  • LeetCode 每周算法 6(图论、回溯)
  • react:React Hook函数
  • MySQL篇(存储引擎)(持续更新迭代)
  • 杂牌鼠标侧键设置
  • C++:AB5 点击消除
  • 基于大数据的电子产品需求数据分析系统的设计与实现(Python Vue Flask Mysql)
  • 每日一题|2306. 公司命名|哈希映射、集合运算
  • FastAPI挂载静态资源
  • 单词记忆的化境:用思想的流水去淹没坚硬的石块
  • 【网络安全】网络基础第一阶段——第四节:网络协议基础---- VRRP与网络架构设计
  • 三种springboot启动时加载方式
  • 使用Renesas R7FA8D1BH (Cortex®-M85)和微信小程序App数据传输
  • 黑盒测试 | 挖掘.NET程序中的反序列化漏洞
  • 统信服务器操作系统【d版系统上Ansible工具】配置方法
  • MySQL:表的约束