【计算机基础】Java学习篇(一)历史、版本新特性、平台概述和标准规范

本人科班,有一定的专业基础,与其说基础不如说仅仅是受过熏陶。

今天迈向大数据这条路的第一步,进行知识的归纳,总结,学习,与再学习的过程。


10.9-第一天

一、起源,发展与版本历史

       1、诞生 ?

       1990s,单片式计算机出现 → 消费性电子产品如PDA(Personal Digital assistant)的智能化,于是年底Sun公司的三个人包括Java之父成立了一个叫作Green的项目小组来研究嵌入式应用,由于C++太过复杂和庞大,于是将其进行改造然后开发出一种新语言Oak

       1992.9  展示给硬件生产商,未果。缺乏硬件支持无法进入市场。

       全球信息网WWW(World Wide Web)兴起。

       1993. 世界第一个全球信息网浏览器Mosaic诞生。

       1994  Java之父认为因特网的一些特性和Oak不谋而合,于是他们仿照了Mosaic开发出了基于Oak的万维网浏览器WebRunner

       1995  互联网蓬勃发展,急需一种技术开发程序,使程序在网络传播且跨平台运行,于是Sun想起了Oak,首先推出了可以嵌入网页传输的Applet小程序,可以更好的提高静态网页的互动技术。5月23日(诞生日),正式发布Java(JDK1.0a2)和HotJava浏览器。(由于Oak的商标已被注册,用了工程师们在讨论新名字的时候提到的爪哇咖啡,爪哇即Java)

       

        2、之后时间线是各版本的发布,每一个版本所有的新特性和代表技术,由于还未学习难免陌生,只做总结,日后回来逐一了解。

        1996,JDK1.0正式发布。代表技术:JVM,Applet,AWT.

        1997,JDK1.1,新特性:JAR文件格式、JDBC、JavaBean、RMI、内部类(Inner class)、反射(Reflection)

        1998,J2SE1.2,发布Java 2 Platform(平台名即简称为J2)。基础体系拆分成J2SE、J2EE、J2ME。新特性:插件Java Plug-in、JavaIDL 、JFC(Java Foundation Classes)一个GUI包括Swing 1.0拖放和Java 2D类库、JIT(Just In Time)编译器、EJB、集合(Collection)

        2000,J2SE1.3,新特性:使用CORBA IIOP实现RMI的通信协议、改进Java2D、添加JavaSound API类库、Java文件索引。

        2002,J2SE1.4 ,新特性:正则表达式、异常链、NIO、日志Logging API、XML解析器、XLST转换器、Java打印服务、Java Web Start、Preferences API、JDBC 3.0 API

        2004,J2SE5.0,版号跳了。新特性:自动装箱拆箱、泛型、动态注解、枚举、可变长参数、迭代增强循环、引入Instrumentation代理类。

        2006,JavaSE6,版号与名称全改,取消J2,全称为Java Platform-Standard Edition 6。而JDK6全称为Java SE Development Kit6。6是产品版本号,1.6是开发者版本号。宣布Java开源。新特性:JDBC4.0 API、支持动态脚步语言、提供Java Compiler编译API,继承Web服务如HTTP服务器API、改进JVM的锁、同步垃圾回收、类加载、可插拔注解、增加对Native PKI(Public Key Infrastructure)、Java GSS(Generic Security Service)、Kerberos和LDAP(Lightweight Directory Access Protocol)的支持。

        2010,Oracle并购Sun。

        2011,JavaSE7,新特性:钻石型语法、switch语句块中允许以字符串作为分支条件提供GI收集器、支持try-with-resources、引入Java NIO.2开发包、null值的自动处理、在一个语句块中捕获多种异常、在创建泛型对象时应用类型推断、数值类型可以用2进制字符串表示且可以在字符串表示中添加下划线、加强对非Java语言的调用支持(JSR-292,升级类加载架构。

        2014,JavaSE8,新特性:Lambda 表达式、Default默认方法、Type注解、并发计数器、Pipelines Streams API、Date Time API 、Parallel操作、Optional 类、TLS SNI、移除PermGen Error、Nashorn, Nashhorn JavaScript 引擎。 

二、平台概述

        了解了Java的发展历史之后,我们知道这个语言最初是为了嵌入式应用设计的,因互联网的发展而发展的。
        之后我们介绍一下Java的三大平台,Sun公司在1999年公布了新的Java体系架构,该架构根据不同级别的应用开发区分了不同的应用版本:J2SE(Java 2 Platform,Standard Edition),J2EE(Enterprise Edition),J2ME(Mirco Edition),然后2006年统一被正名为Java SE、Java EEJava ME。        

       (JavaEE适用于开发分布式、多层次、以组件为基础的Web应用程序;JavaME是开发安卓应用和嵌入式系统,基本淘汰)

        JavaSE是我们学习的内容,也是学习其他平台的基础。

               

       如图所示是JavaSE8的组成概念图。

       JavaSE可以分为四个主要部分:JVM、JRE、JDK与Java语言。

       1、 JVM(Java Virtual Machine)

       计算机只认识一种语言,也就是0、1序列组成的机器指令,而我们写的高级语言程序是需要编译程序(Compiler)翻译给计算机的,然而每一个操作系统所认识的0、1序列是不同的,所以必须使用不同的编译程序进行翻译。Java为了解决跨平台的问题,解决方案是不直接编译成0和1,而是翻译为以一个中介格式的位码(Byte Code)

        也就是把java文件翻译成扩展名为.class(位码),再由不同平台的JVM执行位码文档,翻译成机器码。JVM充当翻译官角色。这样有了JVM即可实现“编译一次,到处执行”的跨平台目的。除此之外,Java只认识JVM,JVM如何底层平台沟通和Java无关,因为JVM相当于是Java程序的操作系统,JVM负责了Java程序的资源管理。

       2、JRE(Java SE Runtime Environment)是Java的执行环境,由图可知是JVM+API+Deployment;如果你的程序只需要运行,那你只需要JRE就可以了。

       3、JDK(Java Development Kit)是Java的软件开发工具包SDK,它包括了JRE以及开发所需的工具程序Tools还有Java语言。如果你想开发Java程序则必须要装JDK,因为JDK是Java开发的核心,有你所需要的工具程序进行编译。

三、标准规范

1、认识了JavaSE的组成之后。接下来,我们需要了解一下Java是如何制定规范标准的。

        实际上,任何一门语言的问世和流传,以及取得这样大的影响力都离不开厂商、组织、开发者与用户们的共同参与,而Sun公司为了发展和更新这门语言组成了一个开放性国际组织JCP(Java Community Process),任何想要提议加入Java功能或特性都必须以JSR正式文件(Java Specification Request)进行提交然后经过JCP执行委员会投票,通过即成为最终标准文件,然后必须根据这个JSR做出免费且开发原始码的参考实现RI(Reference Implementation),并提供技术兼容性测试工具包TCK(Technology Compatibility Kit),厂商可以根据JSR实现产品。

        现在Java无疑已经成为了业界共同制定的一个标准,每一个标准也代表着业界面临的一些问题,而一个JSR规范标准是可以有多种技术解决方案的。对于初学者的我们,学习JSR必然过于艰涩,但我们很有必要了解这个规范过程,日后再来阅读学习。

       

2、下面我们来理清一下OpenJDK和SunJDK/Oracle JDK。

        JDK本质上也是一种JSR文件,而标准的Sun JDK也就是JDK的参考实现,IBM也可以根据JSR实现自己的IBM JDK。Sun公司在06年宣告Java开放源代码,在JDK7 b10开始有了OpenJDK,并在09年正式发布OpenJDK。但实际上这种开源是不够彻底的。OpenJDK≠ Sun JDK

         区别1,授权协议不同,前者采用GPL V2允许商业使用;后者采用JRL只允许个人研究。

         区别2,OpenJDK不包括Deployment(部署)功能。

         区别3,OpenJDK源代码不完整,无法通过TCK兼容测试,所以不能使用Java商标。

         区别4,部分源代码因授权问题,OpenJDK使用其他开源代码替换,来实现同样功能。比如字体栅格化引擎使用Free Type代替。

         区别5,OpenJDK只包含最精简的JDK,不包含其他的软件包,比如Rhino Java DB JAXP……可分离的软件包自行下载。

         为了解决这一问题,Red Hat在07年发布IcedTea计划,致力于修补OpenJDK使之完备,并通过了TCK兼容测试。

          

3、总结Java语言的特点     

         正因这门语言它具有简单性、安全性、健壮性、平台独立与可移植性、面向对象、分布式、多线程、动态性,如今的Java更是在多个领域如安卓应用、大型企业的服务器系统、网站开发、大数据都有对应的技术应用。

四、认识JDK安装内容

           怎么下载就不多说了,直接去官网下就可以了,官网页面会有不同的版本号,而且以往惯例是每隔几个月会针对BUG进行修正。比如有一个字样是Java SE 8u11,8就是JDK版本号,u就是修正版,11就是JDK更新的版本号。每隔几个月会针对BUG进行修正。然后根据你实际情况选择操作系统下载就可以了。

          下载会有三个选项:JDK、JRE、ServerJRE。这里的JRE是Public JRE;Server JRE专门针对服务器端Java程序,所以只会包含服务器端的部署(Deployment)不包括浏览器/客户端的组件。我们选JDK。

           安装过程有三个选项:Development Tools(开发工具)、Source Code(源代码)、Public JRE(公共JRE)

           我们只需要选第一个就可以了。我们安装的JDK其实包含了JRE,可以把它叫做Private JRE,它主要用于开发和测试。

           在Java SE 8中,私人JRE和公有JRE的安装内容是一样的,只不过安装Public JRE或自行下载JRE安装,会注册Java Plugin、Web Start等浏览器或客户端必要的组件。自行选择,不影响开发程序。

           JDK下载安装完成以后,我们在打开“命令提示符”模式(Windows用Win+R打开,cmd运行),然后输入java -version显示即表示安装成功。

                                   

           

           接下来我们认识一下JDK的安装内容

           在你指定的地址安装完成以后,会有这几个东西。

           bin文件夹,存放的内容也就是Development Tools选项。-开发工具

           include文件夹,底层交互文件。里面包含了C语言的头文件,支持Java本地接口和JVM调试程序接口的本地代码编程。

           jre文件夹,即私有JRE。API编译好的.class文件就存放在里面的lib目录rt.jar里。

           lib文件夹  Java开发工具使用的归档文件,其中包含tools.jar,它包含支持JDK的工具和使用程序的非核心类。   

           COPYRIGHT文件是著作权;LICENSE是许可证,release是发布版本,readme字面意思。

           src.zip和javafx-src.zip,存放的内容也就是Source Code选项。-Java SE API实现的源代码

猜你喜欢

转载自blog.csdn.net/qq_36042506/article/details/82955564