Java 常见知识整理

2,110 阅读3分钟

写在前面

此文记录在工作学习中对于一些不明白的东西的记录以及整理,希望可以帮助到你

正文开始

一、JDK、JRE、JVM

首先看看英文的全称以及对应中文的翻译是不是心中应该有个答案了

  • JAVA DEVELOPMENT KIT (JDK) Java 开发工具
  • JAVA RUNTIME ENVIRONMENT (JRE) Java 运行环境
  • JAVA VIRTUAL MACHINE (JVM) Java 虚拟机

来个图理解一下三者之间的关系

image.png

简单的来说

  • JDK 面向编写Java的开发者
  • JRE 面向Java的程序
  • JVM 面向Java的字节码

盗个图 来个全家桶的合影

image.png

二、Java SE、Java EE、Java ME

  • Java Standard Edition (Java SE) Java 标准版
  • Java Enterprise Edition (Java EE) Java 企业版
  • Java Mobile Edition (Java ME) Java 微型版

Java SE 用于开发和部署桌面、服务器以及嵌入设备和实时环境中的 Java 应用程序。Java SE 包括用于开发 Java Web 服务的类库, 其优点有编写一次随处运行、方便存取数据库的 JDBC API、CORBA技术以及能够在 Internet 应用中保护数据的安全模式等等。

Java EE 是简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。它继承了 Java SE的众多优点,同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的体系结构。

Java ME 为在移动设备和嵌入式设备(比如手机、PDA、电视机顶盒和打印机)上运行的应用程序提供一个健壮且灵活的环境。Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对可以动态下载的连网和离线应用程序的丰富支持。

总结一下,Java SE 是标准版,包含标准的JVM和标准库;而 Java EE 是企业版,它只是在 Java SE 的基础上加上了大量的 API 和库,以便方便开发Web应用、数据库、消息服务等,Java EE 的应用使用的虚拟机和 Java SE 完全相同。

备注: Java5.0 版本后,J2SE、J2EE、J2ME分别更名为Java SE、Java EE、Java ME,由于习惯的原因,我们依然称之为J2SE、J2EE、J2ME。

三、Maven中的 GroupID、ArtifactID 和 Version

一句话理解 GroupID 和 ArtifactID 方便唯一定位一个项目; 专业的理解 GroupID 和 ArtifactID 是项目的标识符(坐标)是为了保证项目唯一性;

GroupID 一般分为多个段,第一段为域,第二段为公司名称。域又分为 org、com、cn 等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的 GroupID 是 org.apache,它的域是org(因为tomcat是非营利项目),公司名称是 Apache,ArtifactID 是 Tomcat。

GroupID 是项目组织唯一的标识符,实际对应Java的包的结构,是 main 目录里 java 的目录结构。 ArtifactID 就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

举个例子:


<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<!-- 非盈利组织的springframework 推出 spring-core 版本为 5.3.7-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>5.3.7</version>
</dependency>


<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<!-- 商业组织 阿里巴巴 推出 fastjson 版本为 1.2.76-->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.76</version>
</dependency>


<!-- 未来你的项目也可以有类似的命名方式-->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project</artifactId>
<!-- 版本号 -->
<version>1.0</version>

总结

好记性 不如烂笔头 这句从小就学习到的俗语,到今天我只记得这句话 对于烂笔头也仅仅是停留在嘴上。 践行这句话,真切的理解这句话。

参考资料

Java SE Documentation