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 ...
随机推荐
- ansible笔记(2):管理清单配置详解
前情提要:管理清单(Iventory)配置文件/etc/ansible/hosts.通过修改该配置文件以达到管理受控主机的目的. 在我的实验平台上有3台主机:192.168.232.181(an ...
- Spark学习笔记1
趁着工作业余时间,趁着内心对技术追求的热情,还是对Spark这个大数据内存计算框架动手了,毕竟人与人之间的差距都是在工作业余时间拉开的…… Spark官网:http://spark.apache.or ...
- MP3 文件格式解析
目录: 1.mp3 文件简介 2.ID3 tag id3 v2 3.音频帧 要注意的地方 4.参考 5.一个临时解析方法 一.MP3文件简介 MP3(mpeg-1 Ⅲ 或者 mpeg-2 Ⅲ)是一种将 ...
- 安全文件传输协议之SFTP的使用
一.SFTP概述 在前几篇文章,我们讲到了文件传输协议FTP(File Transfer Protocol),那也是使用比较广泛的文件服务器,但是我们需要知道,Linux系统并不自带FTP程序 如果要 ...
- auto_prt的VS版本源码剖析
通过对VC版本的auto_ptr的源代码得知VC版本还有一点小缺陷,又对VS版本的auto_ptr做了一些剖析,具体代码和注释如下: //假设全局pa2都是用pa1来构造 //如:pa2(pa1).p ...
- Windows Server 2008 R2远程桌面服务安装配置和授权激活
1.安装 2.远程桌面授权激活 2.1 管理工具——远程桌面服务——(远程桌面授权管理)RD授权管理器: 2.2 由于RD授权服务器还未激活,所以授权服务器图标右下角显示红色×号: 点服务器展开——右 ...
- 第二十九篇 玩转数据结构——线段树(Segment Tree)
1.. 线段树引入 线段树也称为区间树 为什么要使用线段树:对于某些问题,我们只关心区间(线段) 经典的线段树问题:区间染色,有一面长度为n的墙,每次选择一段墙进行染色(染色允许覆盖),问 ...
- php截取富文本框中的固定长度的字符
ai,哎怎么赶脚自己写东西越来越小儿科了呢,现在连这个问题都找了好半天 因为后台是的内容是富文本编辑器编辑的,前台我傻逼的直接截取了字符串,然后样式啥的都乱了,找了半天是因为富文本的问题 其实解决办法 ...
- python+pygame的导弹追踪鼠标游戏设置和说明
1.效果图 2.注意事项,代码里有说明 3.完整的代码 #导出模块 import pygame,sys from math import * #设置RESIZABLE前,必须导出下面的模块,否则报错 ...
- Eclipse配置C++11环境详细介绍
转:https://blog.csdn.net/wgxh05/article/details/54021049 本文记录Eclipse配置C++11开发所有作者遇到的情况,包括跨工程文件编译,内联文件 ...