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

简单性: 相对而言,例如,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. AAC 码流信息分析

    AAC在对PCM数据进行编码时,使用window取出1024或128个数据进行MDCT转换到频域. Window的相关信息记录在ics_info中: 关于ics_info中各个字段的含义如下 wind ...

  2. 【Python】【爬虫】爬取酷狗音乐网络红歌榜

    原理:我的上篇博客 import requests import time from bs4 import BeautifulSoup def get_html(url): ''' 获得 HTML ' ...

  3. jenkins+maven配置findbugs+checkstyle+pmd

    一.findbugs+checkstyle+pmd介绍 工具 目的 检查项 FindBugs 检查.class 基于Bug Patterns概念,查找javabytecode(.class文件)中的潜 ...

  4. ListVIew中包含水平滑动控件,左右滑动时容易触发上下滑动

    自定义ListView import android.content.Context;import android.util.AttributeSet;import android.view.Moti ...

  5. 服务器安装mysql后配置远程访问权限

    #登录mysql mysql -uroot -p: use mysql: #所有ip能访问 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED B ...

  6. MySQL必知必会(第4版)整理笔记

    参考书籍: BookName:<SQL必知必会(第4版)> BookName:<Mysql必知必会(第4版)> Author: Ben Forta 说明:本书学习笔记 1.了解 ...

  7. jquery实现登录后右下角弹窗提醒(附带简单样式)

    页面代码如下:   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...

  8. 远程控制服务:配置sshd服务,密钥验证登陆

    配置sshd服务 1.概述: SSH(Secure Shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理 Linux 系统的首选方式.在此之前,一般使用 FTP 或 Telnet 来 ...

  9. git相关项目迁移

    1). 从原地址克隆一份裸版本库,比如原本托管于 GitHub. git clone --bare git://github.com/username/project_old.git --bare 创 ...

  10. mybatis - MybatisAutoConfiguration

    一. MybatisProperties 在使用 mybatis 时, 还需要对mapper进行配置: mybatis: mapper-locations: classpath:mapper/**Ma ...