admin管理员组

文章数量:1665181

1 概述

Java是什么: 

  1. Java是一门非常优秀的计算机编程语言

Java 英文翻译为印尼爪哇岛,地名,因盛产咖啡而闻名,漫漫长夜、唯有咖啡陪伴程序员

1991年诞生,叫做 Oak (橡树),1995年改名为 Java 2000年前后,成为世界上最流行的编程语言,过去二十多年中蓬勃发展、孤独求败。

○ 语言:人与人交流沟通的表达方式

○ 计算机语言:人与计算机之间进行信息交流沟通的特殊语言

  1. Java之父:詹姆斯·高斯林(James Gosling

Java 编程语言的共同创始人之一,公认的Java之父

1955519日诞生于加拿大,1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位。

○ 毕业后到IBM工作,设计IBM第一代工作站 NeWS系统 ,但不受重视。后来转至Sun公司。1990年,与Patrick NaughtonMike Sheridan等人合作开发"绿色计划"项目,期间开发了一套语言叫做 Oak ,后改名为 Java

2 历史

Java 的历史要追溯到 1991 年,当时Sun 公司的詹姆斯·高斯林(James Gosling)及其团队要完成一个项目"Green",该项目需要设计一种小型的计算机语言,主要用于有线电视转换盒这类的消费设备。由于这类设备的处理能力和内存都非常有限,且不同厂商会选择不同的CPU,所以对编程语言有2个明确的要求:

  1. 该语言必须设计的非常小且能够生成紧凑的代码
  2. 该语言不应该与任何特定的体系结构绑定(跨平台)

Sun公司开发团队具有Unix的应用背景,所以以C++为基础语言开发出了这种语言,当时称之为 Oak(橡树) ,后来去注册名称时发现 Oak 这个名字已经被占用, 于是将其改名为 Java

Java语言 设计之初主要作为平台独立语言使用,可以嵌入到各种消费类电子设备(家用电器等)中,但市场反应不佳。但随着上个世纪90年代随着互联网的崛起, Java 逐渐成为重要的Web应用开发语言,在过去二十多年中Java蓬勃发展、孤独求败。

世界编程语言排名:

Java关键时间节点:

1.19914月,由 James Gosling 博士领导的 绿色计划Green 启动项目目的是开发一种能够在各种消费性电子产品(如机顶盒、冰箱等)上运行的程序架构该项目最终的产品是 Oak(橡树) ,即Java语言的前身

2. 1995523日,Oak语言改名为Java,并且在SunWorld大会上正式发布Java 1.0版本

Java语言第一次提出了Write OnceRun Anywhere的口号

3. 1996123日,JDK 1.0发布,Java语言有了 第一个正式版本 的运行环境

JDK 1.0提供了一个纯解释执行的Java虚拟机实现(Sun Classic VM

JDK 1.0版本的代表技术包括:Java虚拟机、AppletAWT等。

4. 1997219日,Sun公司发布了JDK 1.1

Java技术的一些最基础的支撑点(如JDBC等)都是在JDK 1.1版本中发布的Java语法也有了一定的发展,如内部类和反射

5.199948日,JDK 1.1在此期间一共发布了1.1.01.1.8九个版本从1.1.4之后,每个JDK版本都有一个自己的名字(工程代号)例如:JDK 1.1.4 - Sparkler(宝石)、JDK 1.1.5 - Pumpkin(南瓜)

6. 1998124日,JDK迎来了里程碑式的版本JDK1.2,代号Playground(竞技场)

Sun公司在这个版本中把Java技术体系拆分为3个方向:

  1. 面向桌面应用开发的J2SEJava 2 PlatformStandard Edition
  2. 面向企业级开发的J2EEJava 2 PlatformEnterprise Edition
  3. 面向手机等移动终端开发的J2MEJava 2 PlatformMicro Edition

7. 1999427日, HotSpot虚拟机 发布

HotSpot最初由一家名为"Longview Technologies"的小公司开发,因为 HotSpot的优异表现,这家公司在1997年被Sun公司收购了

HotSpot虚拟机发布时是作为JDK 1.2的附加程序提供的,后来它成为了JDK1.3及之后所有版本的Sun JDK的默认虚拟机

8. 2004930日, JDK1.5 发布,代号Tiger(老虎)

JDK 1.2以来,Java在语法层面上的变换一直很小,而JDK1.5Java语法易用性上做出了非常大的改进

例如,自动装箱、泛型、动态注解、枚举、可变长参数、遍历循环

foreach循环)等语法特性都是在JDK 1.5中加入的

9. 20061211日,JDK 1.6发布,代号Mustang(野马)

在这个版本中,Sun终结了从JDK 1.2开始已经有8年历史的J2EEJ2SEJ2ME的命名方式 启用 Java SE 6Java EE 6Java ME 6 的命名方式。

10. 20061113日,在JavaOne大会上,Sun公司宣布最终会将Java开源

2009年219日,工程代号为Dolphin(海豚)的JDK 1.7完成了其第一个程碑版本

2009年420日,Oracle公司宣布正式以74亿美元的价格收购Sun公司,Java商标从此正式归Oracle所有具体版本:

这么多的版本,知道三个就可以了:JDK8JDK11JDK17,其他了解即可。

JDK8是企业用的最多的版本,JDK11JDK17是后续长期支持更新的版本 

3 平台

1998124日,Sun公司在发布的JDK1.2中,将Java技术体系拆分为3个方向(平台):

1.J2SE Java 2 PlatformStandard Edition),面向桌面应用开发

         ○ J2SE是其他两个版本的基础

         ○ 我们学J2SE的目的不是为了做GUI桌面开发(计算器、打地鼠游戏等桌面应用)

         ○ 而是为今后要学习的J2EE进行必要的基础铺垫

2.J2ME (Java 2 PlatformMicro Edition),面向手机等移动终端开发机顶盒、移动电话和PDA之类的嵌入式消费电子设备开发,我们不用关心

3.J2EE Java 2 PlatformEnterprise Edition),面向企业级开发

Java具体应用:

全球超过30亿台各样设备上的应用程序是用Java开发的,耳熟能详的有:

Adobe PDF 阅读器,Gui开发

GoogleFacebookAmazon、淘宝、百度、携程等Web网站

TomcatJBossWebLogicWeb服务器

    抖音、淘宝、微信等手机APP,使用Android开发组件Android SDK(基于 Java

ERP(企业资源规划)CRM(客户资源管理)等企业级应用,游戏后端,如英雄联盟、吃鸡

4 java程序的运行机制

Java最大的特点就是 一次编译,随处运行

5 JDK

1 相关名词

  1. SDK software development kit),软件开发包,主要包含函数库或者工具等
  2. JDK java development kit),Java程序开发工具包,面向Java程序的开发者
  3. JRE java runtime enviroment),Java程序运行环境,面向Java程序的使用者
  4. API application program interface),应用程序编程接口
  5. API DocumentationAPI说明文档,描述API中的类、方法等使用的方式

开发人员需要安装JDK,内部自带一个JRE(程序员用JDK完成开发后,用JRE测试运行)

实施人员(部署)可以安装独立的JRE,用于运行Java程序

2 JDK下载

oracle官网中,注册账号并登录,然后到相应的页面中,即可下载。

oracle官网

Java相关:

JDK下载:

JDK历史版本 

 

JDK8下载地址:https://www.oracle/java/technologies/javase/javase8-archi ve-downloads.html

API在线文档

JDK8在线文档:https://docs.oracle/javase/8/index.html

API说明文档下载

 

JDK8-API文档下载地址:https://www.oracle/java/technologies/javase-jdk8-

doc-downloads.html

3 JDK安装配置环境 

1. JDK安装

1Linux中安装JDK

把下载好的压缩包,直接解压并解归档即可。可以解压到当前目录下,也可以 解压到指定目录中:

2Windows中安装JDK

直接双击安装包,一直next往下即可,默认安装位置:C:\Program Files\Java, 会在此目录中自动创建JDK的目录,并且目录的名字中携带JDK的版本号。

注意:安装过程中也会提醒是否安装一个外部的jre,装或者不装都可以。如

果安装的话其目录名字为jre1.8.0_74,如上图。

注意,JDK安装目录中,也自带了一个默认的内部的JRE,点击JDK目录后即

可看到此JRE的目录

注意,电脑中可以同时安装多个版本JDK,相互之间不影响,使用的时候,

环境变量中修改配置:指定具体版本即可。

2. 配置环境变量 

需要配置三个环境变量:JAVA_HOMEPATHCLASSPATH其中PATH必须配置,另外两个建议配置。

1Linux中环境变量配置

使用vi打开 .bashrc 文件进行配置

配置完成后,在命令窗口中输入命令 java -version 进行查看:

2Windows系统配置

配置JAVA_HOME

配置Path

配置完成后,在cmd终端窗口中输入命令 java -version 进行查看:

3.JDK结构

4. JDK目录

这里以Windows中安装后的目录为例说明:

关于src.zip文件:

  1. 我们将来在代码中,所调用的JavaSE-api中的代码,大多数的源码就存放在这个压缩包中
  2. 这里面都是java文件,这些java文件编译后生成的class文件,都存放在一个jar中, %JAVA_HOME%\jre\lib\rt.jar

  1. 我们的代码在运行时,JVM会先从这个rt.jar中加载一些我们需要使用的类,例如String.classObject.classSystem.class

src.ziprt.jar的关系:

6.Java特点

我们平时所说的“java”,其实是一个综合的描述,它包含了一系列的很多东西。

  1. 它是一门编程语言包含基本的语法、特性、思想等
  2. 它是开发环境开发java程序时,需要一些的java开发工具
  3. 它是应用环境开发好的java程序要运行,需要它提供一些的运行环境
  4. 它是部署环境将来在其他平台下开发出的java程序,都需要它提供一个最基础的部署环境

java语言的优点:

  1. 更纯粹的面向对象编程,加速开发的过程。
  2. 一次编写/编译,到处运行,代码可以跨平台
  3. 多线程的支持
  4. 代码中没有指针管理、内存管理,使得编程人员可以更加专注于系统的业务功能的开发
  5. 字节码的验证机制,保证代码的安全性
  6. 开源及强大的生态环境,社区活跃,第三方类库选择丰富

7 HelloWorld

创建文件, mkdir -p code/day01

如果是Windows,在桌面创建相应的文件夹即可。

Hello.java

思考:程序运行的入口,是可以随便写么,也就是随便写一个方法,JVM就能把它当做运行的起点么?

编译Hello.java中编写的代码:

javac Hello.java

运行Hello.class文件中,编译生成的字节码:

思考:JVM是怎么知道Hello这个类在哪个class文件中的?又是怎么知道这个class文件在什么地方的?

Hello这个类 不一定在Hello.java中,但是一定是在Hello.class

总结:编译文件 javac 文件名.java

           执行文件 java 文件名

8 代码规范

1、标识符的命名

       类名:首字母大写    eg:Teacher

       变量名:首字母大写     eg:MathScore

       常量名:均大写     eg:LENGTH

        方法名:首单词小写后续单词首字母大写      eg:addSalary()

2、代码注释

        单行注释    //

        文档注释  /**

                         *

                         */

9 常用命令

10 常用的包

11 API文档

12 JVM

JVMjava中最核心的一个东西,它在计算机的内存中,虚拟并提供了java代码可以在其中运行的基础环境

思考:java代码编译后,可以在不同的操作系统平台中运行的原因是什么?(跨平台)

JDK7中对JVM规范所给出的内存管理结构如下:

JVM就是java代码和计算机之间的一个桥梁:

13 垃圾回收器

java代码中,开辟要使用的内存空间,使用new关键字即可完成。

使用完之后,对内存的释放,在JVM中,由垃圾回收器(Garbage CollectionGC)来完成。

不同类型的GC,在JVM中,会根据不同的算法,对不同的内存区域内标记为垃圾的空间,进行回收释放。在这个过程中,是不需要编程人员干预的,它自己会主动的完成。

在代码中,我们也可以调用JavaSE-API提供的方法,通知GC现在去进行垃圾回收的工作:

12 字节码验证

验证通过过,再确定哪些代码是解释执行的,哪些代码是JIT即时编译执行的:

  • 解释执行

class文件内容,需要让JVM进行解释,解释成计算机可以执行的代码。整体效果就是JVM解释一行代码就执行一行代码。所以如果java代码全是这样的运行方式的话,效率会稍低一些。

  • JITJust In Time)即时编译

执行代码的另一种方式,JVM可以把java中的 热点代码 直接编译成计算机可以运行的代码,这样接下来再调用这个热点代码的时候,就可以直接使用编译好的代码让计算机直接运行,可以提高运行效率。

本文标签: JavaJDK