基础篇(-1)-java特点、JDK、JRE、JVM区别、字节码编译、跨平台、程序运行

news2024/10/2 14:35:01

文章目录

      • 1.Java的特点有哪些?
      • 2.JDK和JRE和JVM的区别
      • 3.Java为什么采用字节码编译?
      • 4.什么是跨平台?
      • 5.Java程序从源代码到运行需要三步?

1.Java的特点有哪些?

Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种“以对象为导向”的方式。

  1. 面向对象;它对对象中的类、对象、继承、封装、接口、包等均有很好支持。
  2. 平台无关性;在引入虚拟机之后,Java语言在不同平台上运行不需要重新编译。
  3. 简单性。Java语言的语法和C语言和cpp很相近,更易上手,对于Java,它舍弃了很多cpp中难以理解的特性,如操作符的重载和多继承等,Java没有指针,加入了垃圾回收机制,解决了管理内存的问题。
  4. 解释执行;程序再Java平台运行时会被编译为字节码文件,然后可以在有Java环境的系统上运行
  5. 支持多线程;Java语言的一大特性,任何一个线程都有自己的run()方法,要执行的方法就写在run()方法体内。
  6. 分布式;Java 语言支持 Internet 应用的开发,在 Java 的基本应用编程接口中就有一个网络应用编程接口,它提供了网络应用编程的类库,包括 URL、URLConnection、Socket 等。Java 的 RIM 机制也是开发分布式应用的重要手段。
  7. 健壮性;Java 的强类型机制、异常处理、垃圾回收机制等都是 Java 健壮性的重要保证。对指针的丢弃是 Java 的一大进步。另外,Java 的异常机制也是健壮性的一大体现。
  8. 高性能;Java 的高性能主要是相对其他高级脚本语言来说的,随着 JIT(Just in Time)的发展,Java 的运行速度也越来越高。
  9. 安全性;Java 通常被用在网络环境中,为此,Java 提供了一个安全机制以防止恶意代码的攻击。除了 Java 语言具有许多的安全特性以外,Java 还对通过网络下载的类增加一个安全防范机制,分配不同的名字空间以防替代本地的同名类,并包含安全管理机制。
  10. 一次编写,到处执行

2.JDK和JRE和JVM的区别

Java Development Kit (JDK ) 是用于开发 Java 应用程序和小程序的软件开发环境。它包括 Java 运行时环境 (JRE)、解释器(JVM)/加载器 (Java)、编译器 (javac)、归档器 (jar)、文档生成器 (Javadoc) 以及 Java 开发所需的其他工具

JRE代表“Java 运行时环境”,也可以写成“Java RTE”,它由Java 虚拟机 (JVM)、核心类和支持文件组成

三者的包含关系如下图:

image-20230216174858310

  • JDK(Java Development Kit)是一个提供开发和执行(运行) Java程序环境的工具包。JDK 是一个工具包(或包),**包括:**开发工具(提供开发Java程序的环境),JRE(执行你的 java 程序)。
  • JRE(Java Runtime Environment)是一个安装包,它提供了一个环境,只在你的机器上运行(而不是开发) java程序(或应用程序)。
  • JVM(Java 虚拟机) 是 JDK 和 JRE 的一个非常重要的部分,因为它包含或内置在两者中。无论你使用 JRE 还是 JDK 运行的 Java 程序都会进入 JVM,而 JVM 负责逐行执行 Java 程序,因此它也被称为解释器。负责解释执行字节码文件,它是Java实现跨平台的核心,不同平台的JVM是不同的,但是他们都提供了相同的接口。JVM是Java程序跨平台的关键部分,只要为不同平台实现了相同的虚拟机,编译后的Java字节码就可以在该平台上运行。

3.Java为什么采用字节码编译?

在 Java 中,JVM 可以理解的代码就叫做 字节码 (即Java源代码经过虚拟机编译器编译后扩展名为.class 的文件),它不面向任何特定的处理器,只面向虚拟机。Java 语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的问题,同时又保留了解释型语言可移植的特点。由于字节码可以跨平台运行,因此在编写 Java 程序时可以避免考虑不同操作系统之间的差异,这样就可以在任何支持 JVM 的平台上运行 Java 程序。所以 Java 程序运行时比较高效,由于字节码是一种中间表示,因此编译器可以对它进行优化,使得生成的字节码比原始的源代码更高效。

4.什么是跨平台?

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

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

机,该系统就可以运行java程序。

5.Java程序从源代码到运行需要三步?

image-20230217102228671

  • JDK 用于开发,JRE 用于运行java程序 ;如果只是运行Java程序,可以只安装JRE,无序安装JDK。
  • JDk包含JRE,JDK 和 JRE 中都包含 JVM。
    安装JRE,无序安装JDK。
  • JDk包含JRE,JDK 和 JRE 中都包含 JVM。
  • JVM 是 Java 编程语言的核心并且具有平台独立性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/352514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windwos安装spring-cloud-alibaba-nacos

windwos安装spring-cloud-alibaba-nacos前言一、预备环境二、下载源码或者安装包1.启动2.关闭总结前言 这个快速开始手册是帮忙您快速在您的电脑上,下载、安装并使用 Nacos。 一、预备环境 Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos&#x…

[ vulhub漏洞复现篇 ] Drupal Core 8 PECL YAML 反序列化任意代码执行漏洞(CVE-2017-6920)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

Django框架进阶版

一、Django介绍 1.起源 2005年发布,采用python语言编写的。 早期Django主要做新闻和内容管理 重量级python web框架,配备了大量组件 2.组件 包含组件如下 基本配置文件/路由系统 MTV设计模式 Cookies和Session 分页和发邮件 Admin管理后台 3…

2023美赛A题完整数据!思路代码数据数学建模

选取内蒙古河套灌区(典型干旱区)2010-2020年气温,降雨,蒸散发和水汽压月数据 包括四种主要作物及其占比 内容截图如下: 链接为:https://www.jdmm.cc/file/2708703 同时还提供参考代码和参考文章的选项~…

格式化字符串

组包&#xff1a;按照需要的格式组成字符串解包&#xff1a;解析特定格式的数据网络信息传输解析字符串的格式使用较多&#xff01;1、sprintf用于组包将零散的数据格式按照固定的格式组成字符串#include <stdio.h> int sprintf(char *str, const char *format, ...); …

博客排名的影响是什么? 说明优点、注册方法和推荐网站

如果您经营博客&#xff0c;您是否在博客排名网站上注册&#xff1f;博客排名网站是以排名格式介绍各种注册博客的网站。如果您注册博客&#xff0c;您将有更多机会被人们看到&#xff0c;并且可以期望增加访问权限。对于那些刚刚打开博客并担心访问量不会轻易增加的人来说&…

王道考研——计算机网络(第一章 计算机网络体系结构)

1.0认识计算机网络 在下载电影&#xff08;不会出现乱序问题&#xff09;和微信收发消息&#xff08;比如表情包乱序了&#xff09;所使用的协议是不同的 1.1-1概念和功能 &#xff08;1&#xff09;计算机网络的概念 &#xff08;2&#xff09;计算机网络的功能 &#xff08;…

酸回收树脂的应用

酸洗废水 在轧钢、金属表面处理、电子元件制造等过程中需要清除钢材表面氧化铁皮而使用酸进行酸洗&#xff0c;酸洗过程中会产生废酸液和酸洗废水。 这些废酸产量大、酸度高&#xff0c;而且由于酸洗废水来自钢铁和金属表面处理的清洗水&#xff0c;水中含有多种重金属离子&am…

2023年美赛F题

关键点1.绿色GDP(GGDP)是否比传统GDP更好好的衡量标准?2.如果GGDP成为经济健康的主要量标准&#xff0c;可能会对环境产生什么影响?3建立一个简单的模型&#xff0c;估计GGDP取代GDP作为经济健康的主要衡量标准&#xff0c;对减缓气候变化产生的影响。4.GGDP取代GDP可能会遇到…

复旦-华盛顿大学EMBA项目二十年20人丨赵中华:“拓荒”新天地

复旦大学-华盛顿大学EMBA项目20周年校友系列访谈。      从业十八载&#xff0c;赵中华的身上始终葆有一种开拓创新的拼劲和韧劲。身为德国威卡集团计量校准事业部中国区销售总监&#xff0c;他认为无论是在开辟新市场时勇敢接受不确定性带来的挑战&#xff0c;还是在遭遇新…

打印不同的图形-课后程序(JAVA基础案例教程-黑马程序员编著-第四章-课后作业)

【案例4-1】打印不同的图形 记得 关注&#xff0c;收藏&#xff0c;评论哦&#xff0c;作者将持续更新。。。。 【案例介绍】 案例描述 本案例要求编写一个程序&#xff0c;可以根据用户要求在控制台打印出不同的图形。例如&#xff0c;用户自定义半径的圆形和用户自定义边长的…

MyBatis-Plus快速入门篇

入门篇1.快速入门1.1数据库准备1.2创建SpringBoot工程&#xff0c;引入MyBatis-Plus和MySQL依赖&#xff0c;可以使用 Spring Initializer快速初始化一个 Spring Boot 工程1.3编写DataSource相关配置&#xff08;配置MySQL数据库连接&#xff09;1.4编码1.5测试2.使用MybatisPl…

【论文阅读】Frustratingly Simple Few-Shot Object Detection

从几个例子中检测稀有物体是一个新出现的问题。 先前的工作表明Meta-Learning是一种有希望的方法。 但是&#xff0c;微调技术很少引起注意。 我们发现&#xff0c;在稀有类上只对现有探测器的最后一层进行微调对于 Few-Shot Object Detection至关重要。 这样一种简单的方法在当…

Yaklang XSS 检测启发式算法(被动扫描插件)

背景 上一篇介绍了XSS 启发式检测基础设施&#xff0c;本篇通过yak提供的基础设施编写一个xss检测插件。 本次xss靶场使用pentesterlab的xss靶场。 环境部署 git clone https://github.com/yaklang/vulinone cd php-web-for-pentester docker-compose up -d编写思路 参考上…

matlab-汽车四分之一半主动悬架模糊控制

1、内容简介汽车四分之一半主动悬架模糊控制651-可以交流、咨询、答疑2、内容说明半主动悬架汽车 1/4 动力学模型建立 本章主要对悬架类型进行简要介绍&#xff0c;并对其进行对比分析&#xff0c;提出半主动悬架的优越性&#xff0c;论述半主动悬架的工作原理&#xff0c;并对…

语音播报警示器技术要求

功能概述&#xff1a; 本系统采用30W太阳能板给12AH铅酸胶体电池充电&#xff1b;通过人体红外探测传感器&#xff0c;能感应到12米范围内有人有车经过&#xff0c;就触发播报防火宣传的语音&#xff0c;并且大红闪灯同步闪烁警示&#xff1b;高清双侧宣传牌&#xff0c;宣传内…

XSS注入基础入门篇

XSS注入基础入门篇1.XSS基础概念2. XSS的分类以及示例2.1 反射型XSS2.1.1 示例1&#xff1a;dvwa low 级别的反射型XSS2.1.2 攻击流程2.2 DOM型XSS2.2.1 示例2&#xff1a;DOM型XSS注入1.环境部署2.基础版本3.进阶绕过2.3 存储型XSS2.3.1 示例1&#xff1a;dvwa low示例2.3.2 攻…

WebADI - 参数的使用

* 本文仅供交流分享&#xff0c;不作为专业指导 最近研究了一下WEBADI文档下载的参数&#xff0c;由于网上这块资料较少&#xff0c;所以专意分享下我的笔记。 准备 集成器&#xff1a;BHSC_EMP_ADI 表值集&#xff1a;BHSC_DEPT_LOV&#xff08;值&#xff1a;dname&#x…

c++学习笔记-提高编程-模板(哔站-黑马程序员c++教学视频)

目录 1、模板概念 2、模板特点 3、模板语法 3.1编程思想&#xff1a;泛型编程 3.2两种模板方法&#xff1a; 3.2.1 函数模板 3.2.2 类模板 1、模板概念 通用的模具&#xff0c;提高代码复用性 2、模板特点 不可以直接使用&#xff0c;只是一个框架&#xff1b;模板的…

JMeter 做接口性能测试,YYDS

简介 本文由xmeter君写给想了解性能测试和JMeter的小白&#xff0c;适合对这两者了解很少的同学们&#xff0c;如果已经有使用经验的请绕道&#xff0c;别浪费时间:-) 我们将介绍JMeter的使用场景&#xff0c;如何安装、运行JMeter&#xff0c;以及开始一个最最简单的测试。 …