Java笔记概念篇
Java Edition
Java SE
(Java Platform, Stadard Edition)
:
Java
平台标准版,Java
的基础部分(通常学校所教、一般所称的Java
语言),包含程序开发、运行所需核心类库以及虚拟机等核心组件。可用于构建桌面应用程序、简单服务器程序。
最基本的语言环境
Java EE
(Java Platform, Enterprise Edition)
:
Java
平台企业版,在Java SE
基础之上建立而来,包含企业级应用程序和部署的标准、规范。早前的Servlet
、JSP
、JDBC
等等。Java EE
可用于构建分布式、可移植、健壮、可伸缩、安全的服务端Java
应用程序。
大概就是单单一个Java SE
是没法满足企业开发需要,配套标准之后方便与其他应用程序联合开发(数据库、各种中间件)
Java ME
(Java Platform, Micro Edition)
:
Java
的微型版本,主要用于开发嵌入式应用程序。
很早的一个东西,我记得Sun公司刚开始就是往这方面做,现在基本无了( C++
, C
这些比Java
更适合)
JVM、JIT、JRE、JDK
JVM
(Java Virtual Machine
)
Java
虚拟机,用以运行Java
字节码,是一个利用软件技术虚构出来的计算机,也是一种规范
Java
程序运行的过程:源文件(.java) -> 编译器 -> 字节码(.class) -> 解释器 -> 机器码
JVM
类加载器加载字节码文件,然后解释器逐行解释生成机器码,机器码交给系统之后,系统会与硬件交互完成工作。而解释器这一步就是由JVM
调配执行,JVM
针对不同系统进行解释器不同的实现,使得相同字节码在不同系统下运行出相同结果
JVM具体细节日后再补充
JIT
(Just In Time Compilation)
运行时编译,是一种技术,一般在
JVM
中使用。其在完成第一次编译后,会将字节码对应的机器码保存,以便下次直接使用(部分方法或代码块运行频繁,JIT
就会把这部分“热点代码”编译成本地机器对应的机器码,并缓存。JVM
会根据代码执行情况收集信息并相应给出优化)
JRE
(Java Runtime Environment)
Java
运行时环境,是运行已编译Java
程序所需所有内容的集合,包含Java
虚拟机(JVM)
、Java
基础类库(Java Class Library)
JDK
(Java Development Kit)
Java
开发工具包,能够创建和编译Java
程序,包含JRE
以及一些其他工具比如jdb
(调试器)、javadoc
(文档注释工具)等
JVM-JRE-JDK
三者关系:
注: Java9
引入模块化和jlink
,可以使用jlink
打包一个程序运行时映像,只需要打包所需的特定包,借此来提供运行时环境并且减少内存和消耗