历史(建议了解即可)

一、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遍检查后未出现报错后保护

  • 类符合JVM规范的类文件格式
  • 无访问限制违例
  • 代码未引起操作栈上溢或下溢
  • 所有操作代码的参数类型将总是正确
  • 无非法数据转换发生
  • 对象域访问是合法的

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)运行过程

  • Java源文件经编译器编译后形成JVM可运行的字节码文件
  • 运行解释器将JVM上运行的字节码解释为具体平台的机器码,就可以运行该Java源文件形成的程序

(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代替)

介绍相关目录:

  • jdk:jdk根目录,包含版权、许可及 README 文件以及Java核心平台API的源文件归档(src.zip)
  • ---jdk\bin:jdk开发工具可执行文件目录,里面包含有Javac.exe(编译器)、Java.exe等可执行程序
  • ---jdk\lib:jdk开发工具使用的类库目录,主要包括tools.jar和dt.jar
  • ---jdk\Jre:jdk开发工具所使用的Java运行时环境的根目录,除了文档外,它与可部署的JRE完全相同
  • ---jdk\demo:jdk自带的一些例子,含有源代码的程序示例
  • ---jdk\include:c的头文件,用与支持native-code库使用JVM Debugger接口
  • ---jdk\src.zip:jdk所提供的的类库的源代码文件

注:tar.exe(打包器)

(2)jdk\jre\下的一些子目录:

  • jdk\jre\:Java运行环境存放目录
  • ---jdk\jre\bin:jre执行文件及DLL库,可执行文件与jdk\bin相同,不必将该目录放在PATH环境变量中
  • ---jdk\jre\bin\client:Java client VM and DLL
  • ---jdk\jre\bin\server:Java servlet VM and DLL
  • ---jdk\jre\lib: Java程序运行时环境使用的代码库、属性设置和资源文件,主要包括:
  •   * rt.jar:系统引导库(构成Java平台核心API的RunTime 类)
  •   * charsets.jar:字符转换类及其它与国际化和本地化有关的类
  • ---jdk\jre\lib\ext:Java平台扩展类库的缺省安装目录,如JavaHelp jar 就可以放在此目录下
  • ---jdk\jre\lib\security:包含用于安全管理的文件,这些文件包括安全策略 (Java.policy) 和安全属性 (Java.security) 文件
  • ---jdk\jre\lib\applet:对applet支持的一些资源文件
  • ---jdk\jre\lib\fonts:TrueType 字体文件

3、Java目录中存在两个Jre目录以及三个lib目录

(1)、两个Jre目录,分别为:

  • C:\Program Files\java\jre6:可部署的JRE,执行Java程序
  • C:\Program Files\java\jdk1.6.0_16\jre:JDK中自带并使用的JRE,开发Java程序

总体来说,两个JRE文件夹内容基本相同,区别主要体现在工作职责上,也就是不同的JRE负责不同的工作范围

如:使用Javac.exe来编译Java程序时,系统会优先使用jdk\bin下的可执行文件,使用的运行环境也是jdk下的jre

(2)、三个lib目录,分别为:

  • C:\Program Files\Java\jre6\lib:jre下的,只是运行Java程序的jar包,是为JVM运行时候用的,包括所有的标准类库和扩展类等
  • C:\Program Files\Java\jdk1.6.0_16\lib:jdk下的,包括Java开发环境的jar包,是给JDK用的,例如JDK下有一些工具,可能要用该目录中的文件,如编译器等
  • C:\Program Files\Java\jdk1.6.0_16\jre\lib:jdk\jre下的,是开发环境中运行时需要的Jar包,最典型的是导入的外部驱动Jar包,因为编译时,系统找的是Jdk下的Jre,而不是最外层的Jre

JavaSE前期准备1的更多相关文章

  1. Hadoop集群搭建-01前期准备

    Hadoop集群搭建-05安装配置YARN Hadoop集群搭建-04安装配置HDFS  Hadoop集群搭建-03编译安装hadoop Hadoop集群搭建-02安装配置Zookeeper Hado ...

  2. 用大白话聊聊JavaSE -- 如何理解Java Bean(一)

    首先,在开始本章之前,先说一个总的概念:所谓的Java Bean,就是一个java类,编译后成为了一个后缀名是 .class的文件.这就是Java Bean,很多初学者,包括当年的我自己,总是被这些专 ...

  3. javaSE基础07

    javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 stat ...

  4. javaSE基础06

    javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...

  5. javaSE基础05

    javaSE基础05:面向对象 一.数组 数组的内存管理 : 一块连续的空间来存储元素. Int [ ] arr = new int[ ]; 创建一个int类型的数组,arr只是一个变量,只是数组的一 ...

  6. javaSE基础04

    javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...

  7. javaSE基础03

    javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...

  8. Duilib源码分析(四)绘制管理器—CPaintManagerUI—(前期准备四)

    接下来,分析uilib.h中的WinImplBase.h和UIManager.h: WinImplBase.h:窗口实现基类,已实现大部分的工作,基本上窗口类均可直接继承该类,可发现该类继承于多个类, ...

  9. Duilib源码分析(四)绘制管理器—CPaintManagerUI—(前期准备一)

    上节中提到在遍历创建控件树后,执行了以下操作:      1. CDialogBuilder构建各控件对象并形成控件树,并返回第一个控件对象pRoot:     2. m_pm.AttachDialo ...

随机推荐

  1. ArcMap连接oracle、oracle配置

    服务器:Oracle 11g 客户端:arcgis desktop 10.4.1.oracle 11g 32位客户端 客户端:arcgis server 10.4.1.oracle 11g 64位客户 ...

  2. 除了增删改查你对MySQL还了解多少?

    目录 除了增删改查你对MySQL还了解多少? MySQL授权远程连接 创建用户.授权 客户端与服务器连接的过程 TCP/IP 命名管道和共享内存 Unix域套接字文件 查询优化 MySQL中走与不走索 ...

  3. 14图像边缘检测的sobel_ctrl控制模块

    一设计功能 计算得到的dxy,再通过和阈值比较大小,输出po_sum作为VGA的输入,在显示器器上显示图像的轮廓. 二设计思路 根据前一篇博客对sobel算法的介绍,先通过FIFO的双流水线操作采集到 ...

  4. vue&uniapp环境搭建以及项目创建(webstorm)

    以下是针对webstorm用户上手uniapp框架的学习 vue环境搭建以及配置(脚手架搭建) 首先要明确三样东西 npm:node.js的包管理器 webpack:主要用途是通过CommonJS 的 ...

  5. java 队列

    Java中的list和set有什么区别   list与set方法的区别有:list可以允许重复对象和插入多个null值,而set不允许:list容器是有序的,而set容器是无序的等等 Java中的集合 ...

  6. springboot服务引入外部jar包在windows运行正常,在linux环境上无法加载到引入jar包的类

    一.问题描述 最近开发了一个springboot程序,需要依赖第三方jar包,这个jar包无法直接通过pom远程仓库下载,需要从自己本地引入,于是配置pom文件如下:将本地jar包引入工程,syste ...

  7. 如何从https://developer.mozilla.org上查询对象的属性、方法、事件使用说明和示例

    在https://developer.mozilla.org搜索要在前面加上指令 搜索之后点进去 进入之后就是这样的 在页面左边你可以选择自己要查询的对象 里面就是会有属性.方法.事件使用说明和示例.

  8. Cookie与HttpSession对象

    Cookie与HttpSession对象的作用 维护客户端浏览器与服务端会话状态的两个对象. 由于HTTP协议是一个无状态的协议,因此服务端不会记录当前客户端浏览器的访问状态 有些时候需要服务端能够记 ...

  9. 12 Web Development Trends That Will Dominate 2022

    12 Web Development Trends That Will Dominate 2022 (mindinventory.com) Progressive Web Apps (PWAs) An ...

  10. 技术架构:IT生存之道

    Technical architecture: What IT does for a living (cio.com) Technical architecture: What IT does for ...