Java是什么?

发表时间: 2019-08-02 19:26

1.1 java概述

Java是一种特殊的解释型语言(编译型语言:在程序执行前,有一个单独的过程,将程序直接编译成机器语言,以后运行时都不用再编译;解释型语言:在程序运行时,将源文件解释成机器语言),Java文件在运行前先被编译(工具:javac.exe)成字节码文件(class文件),然后在虚拟机中被解释(工具:java.exe或javaw.exe(非阻塞执行))运行。

1.1.1 java语言的由来

詹姆斯·高斯林(James Gosling)1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun(Stanford University Network,斯坦福大学网络公司) )公司,1990年,与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。

1.1.2 java语言的版本特性

96年SUN JDK 1.0 class VMWare、Visual

97年JDK 1.1:具有AWT、内部类、JDBC、RMI、反射

98年JDK 1.2:有JIT解析器、精确内存管理、提升GC性能

2000年JDK 1.3:Hotspot发布默认的虚拟机

2002年JDK 1.4:引入处理文本的正则表达式、XML和XSLT库、SSL支持、日志API与加密支持

2004年JDK 1.5:具有泛型、注解、装箱、枚举、可变长的参数、foreach循环等

JDK 1.6:具有脚本语言支持、JDBC 4.0

JDK 1.7:延时推出,G1,动态语言增强、64位系统中的压缩指针、NIO 2.0

2014 JDK 1.8:lambda表达式、语法增强、java类型增强,实现在JVM中运行JavaScript

2016 JDK1.9:模块化

主要变更

1.5

1.自动装箱与拆箱:

2.枚举(常用来设计单例模式)

3.静态导入

4.可变参数

5.内省

1.6

1.Web服务元数据

2.脚本语言支持

3.JTable的排序和过滤

4.更简单,更强大的JAX-WS

5.轻量级Http Server

6.嵌入式数据库 Derby

1.7

1.switch中可以使用字串了

2.运用List tempList = newArrayList<>(); 即泛型实例化类型自动推断

3.语法上支持集合,而不一定是数组

4.新增一些取环境信息的工具方法

5.Boolean类型反转,空指针安全,参与位运算

6.两个char间的equals

7.安全的加减乘除

8.map集合支持并发请求,且可以写成 Map map ={name:"xxx",age:18};

1.8

1. 允许在接口中有默认方法实现

2. Lambda表达式

3. 函数式接口

4. 方法和构造函数引用

5. Lambda的范围

6. 内置函数式接口

7. Streams

8. Parallel Streams

9. Map

10. 时间日期API

11. Annotations

12.Optional(这是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。)

1.9

1. Jigsaw 项目;模块化源码

2. 简化进程API

3. 轻量级 JSON API

4. 钱和货币的API

5. 改善锁争用机制

6. 代码分段缓存

7. 智能Java编译, 第二阶段

8. HTTP 2.0客户端

9. Kulla计划: Java的REPL实现

1.1.3 Java语言的平台分类

1.1.4 jdk文件目录

-bin目录: JDK开发工具的可执行文件

-lib目录: 开发工具使用的归档包文件

-jre: Java 运行时环境的根目录,包含Java虚拟机,运行时的类包和Java应用启动器,

但不包含开发环境中的开发工具

-demo: 含有源代码的程序示例

-include: 包含C语言头文件,支持Java本地接口与Java虚拟机调试程序接口的本地编程技术。

1.1.5 java源程序与类class的关系

a、Java源程序的文件名一定要和文件中某个类名称一致(运行异常,找不到main函数)

b、public类的名称一定与Java源程序的文件名一致(否则,编译异常)

c、一个Java源程序可获得一个或多个字节码文件

1.2 JVM、JRE、JDK关系

1.2.1 什么是跨平台?

平台:指的是操作系统(Windows,Linux,Mac)

跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行

原理:不同的编译器对于不同平台,获取后的class文件在相同JVM中运行

1.2.2 JVM、JRE 、JDK说明

A:什么是JVM

JVM是java虚拟机(JVM Java Virtual Machine),java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此java语言可以跨平台

B:什么是JRE(运行环境)

包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JRE:JVM+类库+运行工具(java.exe)。

C:什么是JDK(开发环境)

JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。其中的开发工具:编译工具(javac.exe) 运行工具(java.exe) 打包工具(jar.exe)等

D:为什么JDK中包含一个JRE

JDK若无JRE则缺少虚拟机,而开发完的程序,需要运行一下看看效果。

E:JDK,JRE,JVM的作用和关系

JDK包含JRE 和开发工具包 JRE包含 核心类库和JVM

F:环境配置注意事项

JRE不可以安装在JDK内部(javac无法执行),CLASSPATH最好不配置

1.3 JAVA与其他语言对比

1.3.1 JAVA与C对比

1、JAVA面向对象,C面向过程

2、JAVA跨平台,C需要重新编译

3、JAVA没有指针,无法高效运算

4、JAVA能自动垃圾回收

5、JAVA无法直接管理内存

6、JAVA没有预处理器

1.3.2 JAVA与C++

1、JAVA采用值传递

2、JAVA不能多继承

3、JAVA无法重载运算符

1.3.3 JAVA与PHP

1、JAVA是静态语言,PHP是动态语言

2、JAVA支持多线程,PHP不支持

总结:PHP快捷 、C高性能、JAVA安全稳定