首页 > 编程语言 >03_Java筑基之Java编程基础

03_Java筑基之Java编程基础

时间:2022-12-23 14:35:46浏览次数:39  
标签:03 Java 虚拟机 筑基 跨平台 JVM CPU 运行

03_Java筑基之Java编程基础

我们是学习软件开发的,必然离不开计算机,所以在进行学习之前,首先要了解一些必要的计算机基础知识.

一. 计算机基础

1. 计算机

电子计算机,也就是我们俗称的电脑,是一种能够按照程序自动运行,自动、高速处理海量数据的现代化智能电子设备,它由硬件和软件所组成,而一台没有安装任何软件的计算机被称为裸机.

2. 硬件

在一台计算机中,有如下几个核心硬件.

①.CPU: 是一台计算机的运算核心和控制核心,其功能主要是解释计算机指令以及处理计算机软件中的数据. CPU由运算器、控制器、寄存器、高速缓存及实现它们之间联系的数据、控制及状态的总线构成. 作为整个系统的核心, CPU 也是整个系统最高的执行单元,因此CPU已成为决定电脑性能的核心部件,很多用户都以它为标准来判断电脑的档次.CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed). 该时钟速度越快,时间段内执行的指令就越多,目前酷睿是2G-3G(1G是10000Mhz). 例如,2MHz(200万次/秒),3GHz(三十亿次/秒).

②.内存: 是数据与CPU进行沟通的桥梁,计算机中所有程序的运行都是在内存中进行的,内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据.

③.存储设备: 内存不能长久保存数据(非ROM),断电时信息就丢失,程序和数据都会被保存在存储设备中(例如硬盘),当程序和数据需要使用时,再加载进内存. 注意: 内存读取和写入的速度要比存储设备快的多.
存储设备主要有: 磁盘驱动器(硬盘),光盘驱动器(cd dvd) USB闪存(U盘)等.

存储器的计量单位包括位和字节:

8bit   —— 1 Byte
1024B  —— 1 KB
1024KB —— 1 MB
1024MB —— 1 GB
1024GB —— 1 TB
1024TB —— 1 PB

④.输入输出设备: 鼠标/麦克风,键盘/打印机/显示器等.

3. 软件

软件的概述: 按照一定顺序组织的计算机数据与指令的集合.

软件 = 数据+指令+文档.

软件的本质: 提高人与计算机交流效率,方便人与机器交互.

3.1 计算机软件分类

系统软件

例如: Widows,Linux,Unix,Mac等

应用软件

例如: QQ、WPS、微信、Office等

4. 软件开发

我们所谓的软件开发,其实就是学习如何制作软件.

5. 计算机编程语言

计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类.

常见的编程语言有Java,C,C++,C#,PHP,Python,VB等.

三. Java应用程序的运行机制

1. 高级编程语言运行机制分类

①.编译型: C,C++,Pascal等;

②.解释型: Basic,JavaScript等;

③.Java语言是两种类型的结合,也就是先编译,再解释执行.

2. Java程序开发的三个阶段

03_Java筑基之Java编程基础_跨平台

①.编写源程序阶段:我们平时利用记事本,Eclipse,Ideal等工具进行Java程序的开发,生成.java源码文件;

②.编译源程序阶段:由编译器对.java文件进行编译,生成.class字节码文件;

③.运行阶段:JVM虚拟机将.class字节码文件加载进虚拟机中运行.

四. Java语言重要特性之跨平台

1. 跨平台

平台就是指计算机操作系统,而跨平台是软件开发中一个重要的概念,即不依赖于操作系统,也不依赖具体的某一种硬件环境,在一个操作系统下开发的应用,放到另一个操作系统下依然可以运行.

2. Java的跨平台特性

“Write Once, Run Anywhere”,
Java的跨平台是相对于其他编程语言而言的,通过Java语言编写的应用程序可以在不同的系统平台上运行. 一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码.比如在Windows系统中编译的C语言程序,在Linux下是不能运行的,需要重新编译成Linux下的目标程序;当然在Linux下编译的C语言程序,在Windows下也不能运行. 而Java语言在不同平台上运行时不需要重新编译.

3. Java虚拟机(JVM)

Java Virtual Machine(JVM), 是一个软件模拟的计算机,它相当于一个计算机系统(操作系统+硬件环境),而Java解释器则相当于CPU. 我们可以把Java源程序与C源程序进行对比,Java源程序编译后生成的字节码(.class)相当于C源程序编译后的二进制可执行文件(.exe).

.exe文件直接在Windows操作系统下运行;

.class字节码文件是运行在JVM虚拟机上,并不是直接运行在Windows系统上,而JVM虚拟机分为Windows版,Linux版,Mac版;

03_Java筑基之Java编程基础_Java_02

Java解释器相当于运行Java字节码的“CPU”,但该“CPU”不是通过硬件实现的,而是用软件实现的. Java解释器实际上就是特定的平台下的一个应用程序.只要实现了特定平台下的解释器程序,Java字节码就能通过解释器程序在该平台下运行,这是Java跨平台的根本. 当前,并不是在所有的平台下都有相应Java解释器程序,这也是Java并不能在所有的平台下都能运行的原因,它只能在已实现了Java解释器程序的平台下运行.
03_Java筑基之Java编程基础_其他_03

Java跨平台的原理: Java的跨平台是通过Java虚拟机(JVM)来实现的.

03_Java筑基之Java编程基础_其他_04

也就是说我们可以在Windows,Linux,Mac等任意系统中编写Java程序,并生成.class字节码文件,但是要想实现跨平台,需要安装Windows,Linux,或者Mac等系统他们自己对应版本的JVM虚拟机,然后把字节码文件放到不同系统下的JVM虚拟机来运行,这样就实现了所谓的跨平台.

注意:

Java是跨平台的,但JVM是不跨平台的,不同的操作系统有不同版本的JVM!
 

标签:03,Java,虚拟机,筑基,跨平台,JVM,CPU,运行
From: https://blog.51cto.com/u_7044146/5965615

相关文章

  • java反射--PropertyDescriptor类:(属性描述器)、Introspector类
    博客后台-博客园(cnblogs.com)packagecom.peidasoft.instrospector;importjava.beans.BeanInfo;importjava.beans.Introspector;importjava.beans.Prop......
  • 教你用JavaScript实现随机点名器
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript相关知识,做一个随机点名的案例。你可以通过点击开始按钮控制上方名字的闪动,点击停止按......
  • Java8 新特性之Instant 时间戳类
    一、Instant简介Instant类是Java8 中补充的一个 时间戳类,nstant 可以使用静态方法 now()或者of()方法来创建一个实例对象。Instant类 是Java8中补充的一个时间......
  • 教你用JavaScript实现背景图像滑动
    案例介绍欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个背景图像滚动效果。滚动鼠标背景图像缩小,下方滑动出现文字。通......
  • Java 的垃圾回收机制的题目
    Java语言中垃圾回收的优点和原理,并考虑2种回收机制。  答案:Java语言中一个显著的特点就是引入了垃圾回收机制,使C++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序......
  • 153-Illegal mix of collations for operation 'UNION'
    使用unionall查询,报错:Illegalmixofcollationsforoperation'UNION'相同字段的编码为utf8_general_ci与utf8_unicode_ci,就会报Illegalmixofcollationsfor......
  • Java和vue开发的橱柜定制系统家具定制系统
    简介橱柜定制家具定制系统。用户查看家具样本,进行预约下单,后台人员根据用户的要求给出效果图和方案,以及报价,填写上门时间。管理员上门测量和用户确定好需求后上传协议,此时......
  • java和vue的学生健康管理系统疫情打卡系统
    需求:关注学生健康数据以及疫情打卡系统分两个角色:学生和管理员演示视频https://www.bilibili.com/video/BV1iD4y1h74F/?share_source=copy_web&vd_source=ed0f04fbb7131......
  • xxl-job使用openfeign,报空指针异常(java.lang.NullPointerException)
    当使用xxl-job调用项目时,如果刚好使用了feign中间件调用微服务接口,会报空指针异常可以在代码前面加一句:RequestContextHolder.setRequestAttributes(newServletReques......
  • Java语言 打印九九乘法表
    第一步:先打印出一列for(inti=1;i<=9;i++){System.out.println(1+"*"+i+"="+(1*i));}第二步:把固定的1用一个循环包起来,但是有重复for(intj=......