历史(建议了解即可)
一、1990年,美国Sun公司的“Stealth计划”(后改名为“Green计划”)目标设置在家用电器等小型系统的程序语言,准备应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信
二、1996年5月23日,JDK1.0开始发行(前期Java的版本只有两个)
三、2005年6月,Java One大会中,J2SE正式更名为JavaSE(其余二者也更名)
版本 | 应用场景 | 支持操作 | 特性 |
JavaSE | 开发和部署在桌面、服务器、嵌入式环境、实时环境 | 支持Javaweb服务开发的类 | 为JavaEE,JavaME提供基础,其中包含Java的核心应用编程接口API(Application Programming Interface) |
JavaEE | 开发和部署在服务器端Java应用程序 | 可以实现企业级的面向服务体系结构(SOA)、web2.0应用程序 | 提供web服务、组件模型、管理和通信API |
JavaME | 为移动设备、嵌入式设备(手机、PDA、电视机顶盒、打印机)上运行的应用程序提供环境 | 其中包括用户界面、安全模型、内置的网络协议、对动态下载的连网和离线应用程序的丰富支持 |
四、2009年4月20日,Oracle(甲骨文)公司以74亿美元价格收购Sun公司
详细:Java(计算机编程语言)_百度百科 (baidu.com)
API + JVM = JRE + 开发工具 = JDK (建议后期深入学习时学习更深层的内容)
一、Java应用的运行环境下会执行的代码安全性检查机制
1、加载代码:类加载器
2、检查代码:字节码检验器
(1)4遍检查后未出现报错后保护
3、执行代码:运行时的解释器(采用沙箱模式:Java程序的的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存外的内存(Applet程序:还不允许程序访问客户端机器的文件系统
JVM
Java Virtual Machine:Java虚拟机,即软件模拟的计算机
包含Java编译器(Javac.exe)和Java解释器(Java.exe)(Java解释器只是一个基于JVM平台的程序,不能单独执行,必须依赖于JVM)
一、包含及生成
1、本身具有的机器码:部分常用的代码,是CPU可直接解读的数据,保存在.class文件中
2、字节码文件(扩展名为.class的文件):Java源码经过编译器编译后产生的文件
(1)在一定程度上解决了解释性语言执行效率低的问题,又保留了解释性语言可移植的特点
(2)Java程序运行高效的原因:“一次编译,多次运行”,即可以在任何具有JVM的计算机或者电子设备上运行(不同的平台有适合自己平台的虚拟机)
3、字节码:与平台无关的二进制码,不面向特定的处理器,只面向虚拟机
(1)机器码与字节码加载的前后顺序:先编译器将Java源码编译成字节码,后解释器将字节码转译为机器码(本文JVM三中有详解)
二、解释器
1、编译与解释并存的解释(Java的特点之一):
(1)运行过程
(2)可移植性:由运行过程可知任何一台终端只要配备了Java解释器,就可以跨平台运行这个程序,不管这种字节码是在何种平台上生成的
2、执行操作:.Java(源文件)---编译--->.class(字节码文件)
JRE
Java Runtime Environment:Java运行环境,即运行Java程序所必须的环境的集合
包含JVM标准实现、Java核心类库(API)及支持文件,不包含开发工具(编译器、调试器等)
JDK
Java Development Kit:Java程序开发的工具包,是整个Java的核心,即Java的SDK
Java Software Development Kit:Java软件开发包,是厂商提供的集成封装的库(library),辅助开发Java及其相关软件的相关文档、范例和工具的集合
可以认为JDK是SDK的一个子集(JDK是开发Java程序的一个平台,开发其他程序的SDK可以不使用JDK)
包括了Java的开发环境和运行环境(JRE)以及一堆Java工具(tools.jar等)和Java基础的类库(rt.jar等)等
区别 | 联系 | |
JDK | 开发工具包,用来开发Java程序,是面对Java的程序开发人员 | 参考Java源文件的编译和执行过程 |
JER | 运行环境,面向的是Java程序的使用者(也就是说,要使用Java开发程序,则必须安装JDK,只想运行Java程序,那只需安装JRE |
一、安装后的目录结构:
1、JDK安装目录及其子目录分析
(1)如:JDK根目录为:C:\Program Files\java\jdk1.6.0_16(下面以jdk代替)
介绍相关目录:
注:tar.exe(打包器)
(2)jdk\jre\下的一些子目录:
3、Java目录中存在两个Jre目录以及三个lib目录
(1)、两个Jre目录,分别为:
总体来说,两个JRE文件夹内容基本相同,区别主要体现在工作职责上,也就是不同的JRE负责不同的工作范围
如:使用Javac.exe来编译Java程序时,系统会优先使用jdk\bin下的可执行文件,使用的运行环境也是jdk下的jre
(2)、三个lib目录,分别为: