1.Java起源及版本
Java是由Sun Microsystems公司的James Gosling 所领导的小组设计的“面向对象语言”,2010 年Oracle公司收购了Sun Microsystems 后续版本由Oracle公司维护。Java 有3个主要的版本
- J2SE Java 平台标准版本,它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。
- J2EE Java 平台企业版本,帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java 应用程序。
- J2ME 嵌入式版本,为在移动设备和嵌入式设备上运行的应用程序提供一个健壮且灵活的环境。
2.Java的特点
Java的特点有简单性、面向对象、分布式、解释型、健壮性、安全、中立、跨平台、高效、多线程、动态的。
- 简单性
摒弃了C、C++语言中关于指针的概念,添加了自动垃圾回收机制,使用起来更简单。
- 面向对象
高度抽象的概念,例如类、对象、继承、封装、多态、接口、包提供了基于对象的程序设计模式,更符合人们的思维方式。
- 结构中立
跨平台性,Java源代码编译成字节码,字节码独立运行在各个计算机的操作系统。
- 安全性
Java提供了多层的安全机制保证程序不被恶意破坏,运行在JVM里面,类的加载过程需要验证、双亲委派加载机制保证安全性。
- 可移植性
Java程序不必编译就可以在各个平台运行、不需要重新编译。
- 动态性
Java 需要将源代码编译,加载到虚拟机才能工作。Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
- 分布式
Java 提供了网络传输库及RIM(远程消息交换协议)提供了丰富的分布式方案。
- 健壮性
异常处理、垃圾回收机制,保证程序的健壮性。
- 多线程
提供了并发编程的完整机制,线程、线程池,锁等
个人理解Java特点
- 高度抽象 继承、多态 让程序的灵活性更大,可以更集中关注于抽象的对象业务本身。
- 自动的内存管理机制 不需要主动的释放内存 JVM提供了自动的内存回收机制,更简单易用。
- 跨平台性 JVM 是一组规范,字节码可以运行于各个平台,一处编译,处处运行。
3.JVM、JRE、JDK
- JVM
Java 虚拟机负责解释执行字节码文件,是执行Java字节码的虚拟计算机。所有平台的上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。
Java 编译的过程如上图所示,Java 文件 -> class字节码 --> Jvm 解释器 --> cpu执行
JVM是一种用于计算的规范,它是一个虚构出来的计算机。
- JRE (Java runtime Environment)
上图是1.8版本的JRE结构,提供了Java运行时候的环境。包含JVM标准的实现及JAVA类库。
- JDK(Java Development Kid)
上图是1.8版本的JDK结构,包含了JRE及程序员开发的工具包(bin目录下面的工具)。
总的就是
JDK包含JRE,JRE包含JVM