[初始java]——java为什么这么火,java如何实现跨平台、什么是JDK/JRE/JVM

news2024/11/28 16:46:01

java的名言:

”一次编译、到处运行“

一、编译语言与解释语言

编译:

是将整份源代码转换成机器码再进行下面的操作,最终形成可执行文件

解释:

是将源代码逐行转换成机器码并直接执行的过程,不需要生成目标文件

java是半编译半解释型语言,由java编译器编译成字节码文件、jvm解释运行

像C、C++都是编译语言,JavaScript、PHP、python是解释型语言

所以C程序每次运行前都要重新编译源文件、JavaScript只要选中你要运行的几行代码就好了

二、认识JDK、JVM、JRE

    JDK是Java开发工具包,它包含了JVM和Java的开发工具,如编译器、调试器、文档生成器等。JDK还包含了Java的标准类库,开发人员可以使用这些类库来实现各种功能。

    JVM是一个虚拟机,它提供了一个独立于硬件和操作系统的运行环境,使得Java程序可以在不同的操作系统上运行(就像手机模拟器一样,安装了模拟器可以在任何电脑的操作系统下运行手机上的程序)。JVM可以解释Java字节码并将其翻译成机器语言,从而执行Java程序。JVM还提供了垃圾回收、内存管理等功能,使得Java程序开发变得更加方便和安全。

    JRE是Java的运行环境,它包含了JVM和Java的运行时库。JRE不包含Java的开发工具,仅包含Java的运行时库。如果要运行Java程序,只需要安装JRE即可。

总结:只要开发java程序,就要用JDK,只运行java字节码文件,有JRE即可,所以说在你电脑上的一份java代码,编译生成字节码文件后,我只要有JRE,就可以直接运行。

三、java的跨平台性

Java的跨平台性就是由JVM实现的,无论什么操作系统,我只要有JVM,你的字节码文件的执行结果就是一样的,因为字节码文件是已经编译好的二进制文件

四、第一个java程序

例如:

打印Hello world,可以试着敲一下

e1f867ec6e3c4df790027f9ba07c3b9b.png

f57d11d380304186b9e691116d76cfbf.png

javac 编译文件、生成字节码文件(.class)

e99ba074e2dd42ab94fa55c225b1893d.png 

 java运行字节码文件,输出hello world

cd25a32e604f4474aa225c4327700527.png

我删除源文件,还是可以运行字节码文件的

e4da53910be24eaca3508d32a22f8c69.png

 

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

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

相关文章

10.14~10.15verilog操作流程与Block Design

后面的那个是延时精度 verilog文件结构 文件名称与写的模板没有关系,这个文件名为P1,但模板名为andgate 但是如果是仿真文件,就需要开头的模板名和仿真文件名相同 .v是源文件,设计文件 .v在设计与sim里都有,静态共享&#xff0…

卡顿分析与布局优化

卡顿分析与布局优化 大多数用户感知到的卡顿等性能问题的最主要根源都是因为渲染性能。Android系统每隔大概16.6ms发出VSYNC信 号,触发对UI进行渲染,如果每次渲染都成功,这样就能够达到流畅的画面所需要的60fps,为了能够实现60fp…

CISA 彻底改变了恶意软件信息共享:网络安全的突破

在现代网络安全中,战术技术和程序(TTP)的共享对于防范网络事件至关重要。 因此,了解攻击向量和攻击类型之间的关联如今是让其他公司从其他公司遭受的 IT 事件中受益(吸取经验教训)的重要一步。 美国主要网…

多模态大模型升级:LLaVA→LLaVA-1.5,MiniGPT4→MiniGPT5

Overview LLaVA-1.5总览摘要1.引言2.背景3.LLaVA的改进4.讨论附录 LLaVA-1.5 总览 题目: Improved Baselines with Visual Instruction Tuning 机构:威斯康星大学麦迪逊分校,微软 论文: https://arxiv.org/pdf/2310.03744.pdf 代码: https://llava-vl.…

无法解析符号 ‘SpringBootApplication’

刚打开一个项目出现"SpringBootApplication"无法解析: 通过以下步骤,修改maven路径即可: 文件---->设置(File--->Settings) 构建、执行、部署--->构建工具--->Maven--->Maven主路经&#xf…

07-ConfigurationClassPostProces的解析

文章目录 如何解析Component,Service,Configurationd,Bean,Import等注解1. 源码描述2. 类继承结构图3. 解析流程4. 具体的注解解析 如何解析Component,Service,Configurationd,Bean,Import等注解 1. 源码描述 BeanFactoryPostProcessor used for bootstrapping processing of…

论文笔记[156]PARAFAC. tutorial and applications

原文下载:https://www.sciencedirect.com/science/article/abs/pii/S0169743997000324 摘要 本文介绍了PARAFAC的多维分解方法及其在化学计量学中的应用。PARAFAC是PCA对高阶数组的推广,但该方法的一些特性与普通的二维情况截然不同。例如,…

O2O优惠券预测

O2O优惠券预测 赛题理解赛题类型解题思路 数据探索理论知识数据可视化分布 特征工程赛题特征工程思路 模型训练与验证 赛题理解 赛题类型 本赛题要求提交的结果是预测15 天内用券的概率,这是一个连续值,但是因为用券只有用与不用两种情况,而…

IDEA中为Maven配置使用vpn工具连接的网络

IDEA中为Maven配置使用vpn工具连接的网络 在电脑上使用VPN工具连接上特定网络后,发现idea中使用maven工具还是无法访问相关的网络,这时需要在idea中进行相关配置,开启ipv4代理 -Djava.net.preferIPv4Stacktrue maven配置 这时,…

JavaScript基础知识13——运算符:一元运算符,二元运算符

哈喽,大家好,我是雷工。 JavaScript的运算符可以根据所需表达式的个数,分为一元运算符、二元运算符、三元运算符。 一、一元运算符 1、一元运算符:只需要一个表达式就可以运算的运算符。 示例:正负号 一元运算符有两…

Golang 协程 与 Java 线程池的联系

Golang 协程 与 Java 线程池的联系 引言Java 线程池缺陷Golang 协程实现思路0.x 版本1.0 版本1.1 版本Goroutine 抢占式执行基于信号的抢占式调度 队列轮转系统调用工作量窃取GOMAXPROCS设置对性能的影响 小结 引言 如何理解Golang的协程,我觉得可以用一句话概括: …

【大数据】Hive SQL语言(学习笔记)

一、DDL数据定义语言 1、建库 1)数据库结构 默认的数据库叫做default,存储于HDFS的:/user/hive/warehouse 用户自己创建的数据库存储位置:/user/hive/warehouse/database_name.db 2)创建数据库 create (database|…

c#设计模式-行为型模式 之 备忘录模式

🚀简介 备忘录模式(Memento Pattern)是一种行为型设计模式,它保存一个对象的某个状态,以便在适当的时候恢复对象。所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象…

Android 14 正式发布,已经在 AOSP 中上线

本心、输入输出、结果 文章目录 Android 14 正式发布,已经在 AOSP 中上线前言总结主要更新内容机型支持优化性能的数据体现字体放大、多媒体支持加强Android 14 增加了对 10 位高动态范围 (HDR) 图像的支持提供了新的图形和尺寸管理用户体验 与隐私安全弘扬爱国精神Android 14…

Vue3 + Nodejs 实战 ,文件上传项目--实现拖拽上传

目录 1.拖拽上传的剖析 input的file默认拖动 让其他的盒子成为拖拽对象 2.处理文件的上传 处理数据 上传文件的函数 兼顾点击事件 渲染已处理过的文件 测试效果 3.总结 博客主页:専心_前端,javascript,mysql-CSDN博客 系列专栏:vue3nodejs 实战-…

【JVM】JVM的内存区域划分

JVM的内存区域划分 堆Java虚拟机栈程序计数器方法区运行时常量池 堆 程序中创建的所有对象都保存在堆中 Java虚拟机栈 Java虚拟机栈的生命周期和线程相同,描述的是Java方法执行的内存模型,每个方法在执行的时候都会同时创建一个栈帧用于存储局部变量表,操作栈,动态链接,方法…

C语言 —— 结构体

生活中有许多复杂对象是无法用基本数据类型来描述的, 于是为了描述复杂对象, C语言就会使用到结构体. 1. 结构体的声明与定义 1.1 结构的基础知识 结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。 1.2 结构的声明与定义 struct tag {…

vue3后台管理框架之基础配置

配置vite.config.js import { defineConfig } from viteimport vue from @vitejs/plugin-vueexport default defineConfig(({ command, mode }) => {//const env = loadEnv(mode, process.cwd(), ) //获取环境变量return {// 打包devbase: ./,// 开发环境server: {port: 50…

Spring framework Day11:策略模式中注入所有实现类

前言 什么是策略模式? 策略模式(Strategy Pattern)是一种面向对象设计模式,它定义了算法族(一组相似的算法),并且将每个算法都封装起来,使得它们可以互相替换。策略模式让算法的变…

LeetCode【17】电话号码的字母组合

题目: 思路: 参考:https://blog.csdn.net/weixin_46429290/article/details/121888154 和上一个题《子集》的思路一样,先画出树结构,看树的深度(遍历层级),树的宽度(横向…