Java是一种特殊的解释型语言(编译型语言:在程序执行前,有一个单独的过程,将程序直接编译成机器语言,以后运行时都不用再编译;解释型语言:在程序运行时,将源文件解释成机器语言),Java文件在运行前先被编译(工具:javac.exe)成字节码文件(class文件),然后在虚拟机中被解释(工具:java.exe或javaw.exe(非阻塞执行))运行。
詹姆斯·高斯林(James Gosling)1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun(Stanford University Network,斯坦福大学网络公司) )公司,1990年,与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为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实现
-bin目录: JDK开发工具的可执行文件
-lib目录: 开发工具使用的归档包文件
-jre: Java 运行时环境的根目录,包含Java虚拟机,运行时的类包和Java应用启动器,
但不包含开发环境中的开发工具
-demo: 含有源代码的程序示例
-include: 包含C语言头文件,支持Java本地接口与Java虚拟机调试程序接口的本地编程技术。
a、Java源程序的文件名一定要和文件中某个类名称一致(运行异常,找不到main函数)
b、public类的名称一定与Java源程序的文件名一致(否则,编译异常)
c、一个Java源程序可获得一个或多个字节码文件
平台:指的是操作系统(Windows,Linux,Mac)
跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行
原理:不同的编译器对于不同平台,获取后的class文件在相同JVM中运行
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、JAVA面向对象,C面向过程
2、JAVA跨平台,C需要重新编译
3、JAVA没有指针,无法高效运算
4、JAVA能自动垃圾回收
5、JAVA无法直接管理内存
6、JAVA没有预处理器
1、JAVA采用值传递
2、JAVA不能多继承
3、JAVA无法重载运算符
1、JAVA是静态语言,PHP是动态语言
2、JAVA支持多线程,PHP不支持
总结:PHP快捷 、C高性能、JAVA安全稳定