一、什么是Java?
Java是一门面向对象的编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。
Java 技术 = Java 语言 + Java 平台;Java 平台 = JVM + JDK。
作者:南京网博教育
链接:https://www.zhihu.com/question/31455874/answer/2721177201
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二、什么是Java SE?
Java SE = JDK 根基。这么说吧,可以理解为JavaSE是Java的基石,如果将Java程序想象成一座高楼大厦,那么JavaSE就是地基。
官方解释:
Java SE(Java Platform,Standard Edition)Java SE 以前称为 J2SE。它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。
简单点说:Java SE 标准版,是其他两个版本的基础,是做电脑上运行的软件。
JavaSE包含了什么?
- 面向对象
- 多线程
- IO流
- JavaSwing
三、什么是Java EE?
JavaEE个人理解的就是在javaSE的基础上,添砖加瓦后出现的一种规范,说是框架也行。
官方解释:
Java EE,Java 平台企业版(Java Platform Enterprise Edition) 之前称为Java 2Platform, Enterprise Edition (J2EE) 2018年3月更名为 Jakarta EE(这个名称应该还没有得到群众认可)。 是 Sun 公司为企业级应用推出的标准平台,用来开发B/S架构软件。同时要知道:JavaEE 是 Java 应用最广泛的部分。
简单点说:Java EE 企业版,一般开发企业级互联网程序,是用来做网站的-(我们常见的JSP技术)
JavaEE包含了什么?
- serclet
- jstl
- jsp
- spring
- mybatis
四、什么是Java ME?
javaME这一块只需要了解就可以了,因为现在很少有使用这个东西的了,但是作为java程序员,这些基本的板块,还是的知道的。
官方解释:
Java ME 又称为J2ME(Java Platform,Micro Edition)是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API。
简单点说:Java ME 小型版,一般用于来研发嵌入式程序,已经被Android替代了,是做手机软件的。
五、JavaSE,JavaEE,JavaME的关系
六、那么我们应该学习哪个呢?
1、Java EE 是开发 WEB 应用的!例如网站,网页等,Java EE 包含Java SE,要想学好Java EE,除了Java SE 精通外,你还要学一些其他的框架以及知识,例如Spring、SpringMVC、MyBatis 等一些框架。Java 最厉害,用的最多的地方就是做 WEB 应用。当然 WEB 应用大体也可分为 前端开发 和 后端开发(服务器开发)两类,但是不管怎么样,Java SE 是基础,是必须要好好学的。
2、Java SE 是 Java EE 的基础所开发的东西也不一样,如果想找一份好的工作还是把 Java SE 学好学精可以找一个几千块的工作,如果把 Java EE 学精那么相信你的工资很快就会超过 20k。
前言
大多数人刚接触Java的时候都会经常看到JDK、JRE、JVM,但可能一直迷迷糊糊,不知道它们之间真正的作用和含义,而了解JDK、JRE、JVM分别是什么及它们之间的关系有助于我们更加深刻的理解java语言的特性。
Java程序是运行在JVM(Java虚拟机)上的,在开发程序之前要配置Java开发环境,而配置环境要做的就是JDK的安装和配置。
三者的大致结构是这样的,简单来说就是JDK包含JRE,JRE又包含JVM的关系。如下图所示:
一、JDK简单介绍
JDK:Java Development Kit 是Java的标准开发工具包(普通用户只需要安装 JRE来运行 Java 程序。而程序开发者必须安装JDK来编译、调试程序)。它提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行环境JRE,以及常用的Java基础类库等,是整个JAVA的核心。
JDK一般有三种版本:
SE(J2SE),standard edition,标准版,是我们通常用的一个版本 EE(J2EE),enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序, ME(J2ME),micro edtion,主要用于移动设备、嵌入式设备上的java应用程序 (相对来说现在使用的很少了)
JDK安装目录下各个子文件目录和文档作用的详细介绍
下图是Java8中JDK的安装目录
bin文件里面存放了JDK的各种开发工具的可执行文件,主要的是编译器(javac.exe)
db文件是一个先进的全事务处理的基于Java技术的数据库(jdk自带数据库db的使用)
include文件里面是Java和jvm交互用的头文件
jre为java运行环境
lib文件存放的是JDK工具命令的实际执行程序
二、JRE
JRE:Java runtime environment 是运行基于Java语言编写的程序所不可缺少的运行环境,用于解释执行Java的字节码文件。
也是通过它,Java的开发者才得以将自己开发的程序发布到用户手中,让用户使用。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,这些是运行Java程序的必要组件。与大家熟知的JDK不同,JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。
下图是Java8中JRE的安装目录,里面有两个文件夹bin和lib。你可以认为bin里的就是JVM,lib中则是JVM工作所需要的类库,而JVM和 lib和起来就称为JRE
从JDK11开始,JDK和JRE都是在一起的,安装后默认是没有JRE的。如果需要JRE这个单独目录,可以在JDK目录下面去打开命令窗口,然后执行如下命令(win10执行这个生成JRE需要目录权限):
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
执行完之后就会生成JRE,但无论使用tomcat 还是eclipse,没有JRE文件夹实际上并不影响你的使用。
三、JVM
JVM:Java Virtual Machine 是Java的虚拟机,是JRE的一部分。它是整个java实现跨平台的最核心的部分,负责解释执行字节码文件,是可运行java字节码文件的虚拟计算机。
所有平台的上的JVM向编译器提供相同的接口,而编译器只需要面向虚拟机,生成虚拟机能识别的代码,然后由虚拟机来解释执行。
四、Java跨平台的原因
使用Java编译器编译Java程序时,生成的是与平台无关的字节码,这些字节码只面向JVM。不同平台的JVM都是不同的,但它们都提供了相同的接口。
JVM是Java程序跨平台的最核心的部分,只要为不同平台实现了相应的虚拟机,编译后的Java字节码就可以在该平台上运行。其屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
正是因为有了JVM的存在,Java才实现了强大的跨平台特性。
五、jvm执行程序的过程
- 加载.class 文件
所有的java程序会首先被编译为.class的类文件,这种类文件可以在虚拟机上执行。也就是说class并不直接与机器的操作系统相对应,而是经过虚拟机间接与操作系统交互,由虚拟机将程序解释给本地系统执行。只有JVM还不能成功执行.class的类文件,因为在解释class的时候JVM需要调用解释所需要的类库lib,而jre包含lib类库。
运行class文件
可以在命令行中输入 java 字节码文件名 ,此时启动了一个jvm,加载字节码文件名.class字节码文件到内存,然后jvm运行内存中的字节码指令
在IDE上就类似于点击运行按钮。 - 管理并分配内存
- 执行垃圾收集
调用垃圾收集器进行垃圾回收
六、三者的区别与联系
- JDK用于开发,是给开发人员用的,JRE 用于运行java程序,和JVM是给普通用户使用的。如果只是运行Java程序,可以只安装JRE,无序安装JDK。也就是说:使用JDK开发完成的java程序,交给JRE去运行。
- JDK包含了JRE,JDK 和 JRE 中都包含 JVM。也可以说JDK是JRE+Java的开发工具。JRE包含了JVM+Java语言的核心类库。