历史(建议了解即可)

一、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. 7月3日 Django 头像预览、用户上传文件操作、logging、debug_tool_bar

    1. 注册功能 1. 头像预览 //头像预览 $('#id_avatar').change(function () { console.log(this.files[0]) //找到选中的头像文件 v ...

  2. 学习SpringMVC必知必会(3)~springmvc的请求和响应

    一.处理器方法响应处理 ▷ Controller方法该怎么返回.Controller数据该怎么进行共享 返回void/ModelAndView/String 1.Controller方法返回void ...

  3. 如何在网上找MySQL数据库的JDBC驱动jar包?

    当我们在开发程序,涉及数据库时,总是需要用到相应的jar包,这不小编就给大家介绍一下如何下载相应的jar包 方法/步骤   1 在百度搜索栏上搜索MySQL 2 选择Downloads 3 选择 Co ...

  4. Spring 框架中的单例 bean 是线程安全的吗?

    不,Spring 框架中的单例 bean 不是线程安全的.

  5. 在java web工程中实现登入和安全验证

    登入页面的话我们之前做过直接可以拿来用翻一翻之前的博客就可以找到 在这个基础上添加验证功能 代码如下: 1 package security; 2 /** 3 * @author 鐜嬭儨鍗? 4 */ ...

  6. 详解AOP——用配置文件的方式实现AOP

    AOP概念 1.AOP:面向切面(方面)编程,扩展功能不修改源代码实现 AOP原理 AOP采用横向抽取机制,取代了传统纵向继承体系重复性代码 传统的纵向抽取机制: 横向抽取机制: AOP操作术语 1. ...

  7. 规范之“用流中的Stream.Of(arr1,arr2)将两个集合合并”

    案例:用流中的Stream.Of(arr1,arr2)将两个集合合并 /** * 功能描述: * 两个对象集合添加到一起 * 在用flatMap扁平化改为Stream<User> * 这样 ...

  8. solr集群搭建,zookeeper集群管理

    1. 第一步 把solrhome中的配置文件上传到zookeeper集群.使用zookeeper的客户端上传. 客户端命令位置:/root/solr-4.10.3/example/scripts/cl ...

  9. 移动端比1px还小的border

    巧用border 在移动端 经常出现border,细边框但有的时候 产品大大1px甚至乎会觉得不够细那么要如何写出比1px还要小的border下面是代码 希望对大家有所帮助 .thinner-bord ...

  10. 【VUE】 前端面试题小结

    1,对代码重构的理解: 2,http和https协议有什么区别 3,从输入URL到页面加载全过程 4,前端怎么控制管理路由 5,缓存机制(描述一下 cookies,sessionStorage 和 l ...