Java语言特性、加载与执行
【开源、免费、纯面向对象、跨平台】
简单性: 相对而言,例如,Java是不支持多继承的,C++是支持多继承的,多继承比较复杂;C++ 有指针,Java屏蔽了指针的概念。所以相对来说Java是简单的。
Java底层是C++实现的。
面向对象:Java是纯面向对象的,更符合人的思维方式,更容易理解。
可移植行: Java 语言可以做到一次编译,到处运行。也就是说Java程序可以再windows操作系统上运行,不做任何修改,同样的java程序可以放到Linux系统上运行。或者叫做(跨平台)
健壮性:自动垃圾回收机制(GC)有关,Java语言执行过程中产生的垃圾是自动回收的,不需要哦程序员关心。
多线程
安全性
。。。。。。
Java 的加载与执行
Java程序的运行包括两个非常重要的阶段
-- 编译阶段 :主要任务是检查Java源程序是否符合Java语法,符合Java语法则能够生成正常的字节码文件,否则无法生成字节码文件。
字节码中不是纯粹的二进制,这种文件无法直接在操作系统中运行。
编译阶段的过程:
1. 程序员需要再硬盘某个位置<随意位置>新建一个.java扩展名的文件,改文件被称为Java源文件,源文件当中编写的Java源代码/源程序。而这个源程序是不能随意编写的,必须符合Java语法规则<Java语法规则是固定的>。
2. Java程序员需要使用JDK当中自带的javac.exe命令进行Java程序的编译。javac在Dos命令窗口中使用 (javac xxx.java)。一个java源文件可以编译生成多个.class文件。字节码文件/class文件是最终要执行的文件,所以说,当class文件生成之后,java源文件删除,并不会影响java程序执行。但一般不要删除java源文件,因为class文件最终执行效果可能不是我们想要的,那么这时候,需要再重新修改源文件,然后将java源程序重新编译生成新的calss文件,然后运行新的class程序,生成新的效果。
编译后的class文件,可以拷贝到其他操作系统当中运行(跨平台)。
(Javac是一个java编译工具/命令)
-- 运行阶段 :【可以再其他操作系统中,跨平台】
jdk安装之后,除了自带的一个javac.exe之外,还有铃外一个工具/命令叫做java.exe,该工具主要负责运行阶段。
Java.exe在dos窗口中用,使用方式是 java <类名>(如硬盘有a.class文件 java a)
.java(源文件) --> .class(字节码文件)
1. 打开dos 命令窗口 -->2. 输入java A --> 3. java.exe会启动Java虚拟机(JVM),JVM会启动类加载器ClassLoader --> 4. ClassLoader会去硬盘上搜索A.class文件,找到该文件则将该字节码文件装载到JVM当中 --> 5. JVM将A.class字节码文件解释成二进制数据 --> 6. 操作系统执行二进制和底层硬件平台进行交互。
类装载器 --> Java虚拟机(JVM) --> 操作系统 --> 硬件平台
Java语言特性、加载与执行的更多相关文章
- java类的加载和执行顺序
以前面试总会碰到涉及到类的执行过程的笔试题.下面记录我自己的测试结果: public class ClassA { public static ClassA classa = new ClassA() ...
- 【转】 java类的加载和执行顺序
1.先执行Test类的静态代码块后执行Test类的main方法,说明要执行类的方法需要先加载这个类. 2.在创建ClassB的对象时,先去加载了父类ClassA.说明加载子类时如果没有加载父类,会先加 ...
- java程序的加载与执行
1.编写java源文件 .java 2.生成字节码文件 类名.class 3.JRE,java运行环境,包括JVM(java虚拟机).java基本类库 4.
- 浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
defer和async特性相信是很多JavaScript开发者"熟悉而又不熟悉"的两个特性,从字面上来看,二者的功能很好理解,分别是"延迟脚本"和"异 ...
- java笔记——java加载与执行
java的加载与执行过程: 编译阶段: 首先,我们先创建一个java源文件xxx.java 2. 经过javac.exe编译(如果源文件没有语法错误),生成一个或多个.class文件,注意的是此时的字 ...
- java的加载与执行原理剖析
到目前为止,我们接触过的重点术语,总结一下: Java体系的技术被划分为三大块: JavaSE:标准版 JavaEE:企业版 JavaME:微型版 安装JDK之后: JDK:java开发工具箱 JRE ...
- java 类的加载,链接,初始化
本篇的话题,讨论Java类的加载.链接和初始化.Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象.一个Java类从字节代码 ...
- 前端性能优化:细说JavaScript的加载与执行
本文主要是从性能优化的角度来探讨JavaScript在加载与执行过程中的优化思路与实践方法,既是细说,文中在涉及原理性的地方,不免会多说几句,还望各位读者保持耐心,仔细理解,请相信,您的耐心付出一定会 ...
- 别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】
目录 1.什么是类的加载(类初始化) 2.类的生命周期 3.接口的加载过程 4.解开开篇的面试题 5.理解首次主动使用 6.类加载器 7.关于命名空间 8.JVM类加载机制 9.双亲委派模型 10.C ...
随机推荐
- chrome firefox浏览器屏蔽百度热搜
我是原文 操作 点击拦截元素,然后选择页面元素,添加
- 上传图片时使用crop进行裁剪
上传图片时,往往需要对图片进行裁剪. 实现方法为: 1.引入crop.css body{background:#}.upload-container{position:absolute;left:%; ...
- imread函数+cvtColor()函数
加载图像(用cv::imread) imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称 第二个参数,表示加载的图像是什么类型,支持常见的三个参数值 IMREAD_UNCH ...
- Linux实现树莓派3B的国密SM9算法交叉编译——(二)miracl库的测试与静态库的生成
先参考这篇文章 Linux实现树莓派3B的国密SM9算法交叉编译——(一)环境部署.简单测试与eclipse工程项目测试 部署好环境,并简单测试交叉编译环境是否安装成功,最后实现在Eclipse上进行 ...
- ASA映射80端口到公网
1.测试拓扑: 2.测试目的:Web Server:192.168.1.100/24 GW:192.168.1.254Internet:200.1.1.2/24 映射的地址:200.1.1.3 3.配 ...
- CSS学习(9)块盒模型应用
1.改变宽高范围 默认情况下,width和height设置的是内容盒的宽高 页面重构师:将psd文件(设计稿)制作为静态页面 衡量设计稿尺寸的时候,往往使用的是边框盒 CSS3中 box-sizing ...
- 1 dev repo organize
码云 注册 组织 创建 仓库 创建 Git版本管理工具 download from https://www.git-scm.com/download/ 克隆/下载 git clone https ...
- Ubuntu执行sudo apt-get update报错E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用) E: 无法对目录 /var/lib/apt/lists/ 加锁
一.强制解锁,执行语句 sudo rm /var/lib/apt/lists/lock 二.终端输入 ps -aux | grep apt-get 查看一下apt-get的相关进程.然后sudo ki ...
- Python学习之Craps赌博游戏篇
在此先安利一波大佬的Python学习项目地址:https://github.com/jackfrued/Python-100-Days 这些天一直在看着大佬的项目学习Python,这是第五天循环学习完 ...
- vscode 双击选中用中划线拼接的名称和几个常用的扩展
左下角点击图标-选择设置,然后搜索editor.wordSeparators,然后去掉中划线-就可以了 `~!@#$%^&*()=+[{]}\|;:'",.<>/? 这样 ...