【开源、免费、纯面向对象、跨平台】

简单性: 相对而言,例如,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语言特性、加载与执行的更多相关文章

  1. java类的加载和执行顺序

    以前面试总会碰到涉及到类的执行过程的笔试题.下面记录我自己的测试结果: public class ClassA { public static ClassA classa = new ClassA() ...

  2. 【转】 java类的加载和执行顺序

    1.先执行Test类的静态代码块后执行Test类的main方法,说明要执行类的方法需要先加载这个类. 2.在创建ClassB的对象时,先去加载了父类ClassA.说明加载子类时如果没有加载父类,会先加 ...

  3. java程序的加载与执行

    1.编写java源文件   .java 2.生成字节码文件   类名.class 3.JRE,java运行环境,包括JVM(java虚拟机).java基本类库 4.

  4. 浏览器环境下JavaScript脚本加载与执行探析之defer与async特性

    defer和async特性相信是很多JavaScript开发者"熟悉而又不熟悉"的两个特性,从字面上来看,二者的功能很好理解,分别是"延迟脚本"和"异 ...

  5. java笔记——java加载与执行

    java的加载与执行过程: 编译阶段: 首先,我们先创建一个java源文件xxx.java 2. 经过javac.exe编译(如果源文件没有语法错误),生成一个或多个.class文件,注意的是此时的字 ...

  6. java的加载与执行原理剖析

    到目前为止,我们接触过的重点术语,总结一下: Java体系的技术被划分为三大块: JavaSE:标准版 JavaEE:企业版 JavaME:微型版 安装JDK之后: JDK:java开发工具箱 JRE ...

  7. java 类的加载,链接,初始化

    本篇的话题,讨论Java类的加载.链接和初始化.Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是java.lang.Class类的对象.一个Java类从字节代码 ...

  8. 前端性能优化:细说JavaScript的加载与执行

    本文主要是从性能优化的角度来探讨JavaScript在加载与执行过程中的优化思路与实践方法,既是细说,文中在涉及原理性的地方,不免会多说几句,还望各位读者保持耐心,仔细理解,请相信,您的耐心付出一定会 ...

  9. 别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】

    目录 1.什么是类的加载(类初始化) 2.类的生命周期 3.接口的加载过程 4.解开开篇的面试题 5.理解首次主动使用 6.类加载器 7.关于命名空间 8.JVM类加载机制 9.双亲委派模型 10.C ...

随机推荐

  1. ansible笔记(2):管理清单配置详解

    前情提要:管理清单(Iventory)配置文件/etc/ansible/hosts.通过修改该配置文件以达到管理受控主机的目的.    在我的实验平台上有3台主机:192.168.232.181(an ...

  2. Spark学习笔记1

    趁着工作业余时间,趁着内心对技术追求的热情,还是对Spark这个大数据内存计算框架动手了,毕竟人与人之间的差距都是在工作业余时间拉开的…… Spark官网:http://spark.apache.or ...

  3. MP3 文件格式解析

    目录: 1.mp3 文件简介 2.ID3 tag id3 v2 3.音频帧 要注意的地方 4.参考 5.一个临时解析方法 一.MP3文件简介 MP3(mpeg-1 Ⅲ 或者 mpeg-2 Ⅲ)是一种将 ...

  4. 安全文件传输协议之SFTP的使用

    一.SFTP概述 在前几篇文章,我们讲到了文件传输协议FTP(File Transfer Protocol),那也是使用比较广泛的文件服务器,但是我们需要知道,Linux系统并不自带FTP程序 如果要 ...

  5. auto_prt的VS版本源码剖析

    通过对VC版本的auto_ptr的源代码得知VC版本还有一点小缺陷,又对VS版本的auto_ptr做了一些剖析,具体代码和注释如下: //假设全局pa2都是用pa1来构造 //如:pa2(pa1).p ...

  6. Windows Server 2008 R2远程桌面服务安装配置和授权激活

    1.安装 2.远程桌面授权激活 2.1 管理工具——远程桌面服务——(远程桌面授权管理)RD授权管理器: 2.2 由于RD授权服务器还未激活,所以授权服务器图标右下角显示红色×号: 点服务器展开——右 ...

  7. 第二十九篇 玩转数据结构——线段树(Segment Tree)

          1.. 线段树引入 线段树也称为区间树 为什么要使用线段树:对于某些问题,我们只关心区间(线段) 经典的线段树问题:区间染色,有一面长度为n的墙,每次选择一段墙进行染色(染色允许覆盖),问 ...

  8. php截取富文本框中的固定长度的字符

    ai,哎怎么赶脚自己写东西越来越小儿科了呢,现在连这个问题都找了好半天 因为后台是的内容是富文本编辑器编辑的,前台我傻逼的直接截取了字符串,然后样式啥的都乱了,找了半天是因为富文本的问题 其实解决办法 ...

  9. python+pygame的导弹追踪鼠标游戏设置和说明

    1.效果图 2.注意事项,代码里有说明 3.完整的代码 #导出模块 import pygame,sys from math import * #设置RESIZABLE前,必须导出下面的模块,否则报错 ...

  10. Eclipse配置C++11环境详细介绍

    转:https://blog.csdn.net/wgxh05/article/details/54021049 本文记录Eclipse配置C++11开发所有作者遇到的情况,包括跨工程文件编译,内联文件 ...