Java常用术语及解释
Java常用术语及解释(更新中.....)
在Java编程中,常常用到一些专业术语或缩写,这些术语往往是看起来似曾相识,只记得在哪里见过却记不得意味着什么。这种感觉对诸多萌新程序员来说就格外的不友好,特此在这里整理了一些自己在工作中遇到的以及网上诸多大佬收集的术语,希望能对各位有所帮助。
一.Java SE 、Java EE、 Java ME
(1) Java SE (Java Platform, Standard Edition) -标准版本:
J2SE 包含那些构成Java语言核心的类。比如:数据库连接、接口定义、输入/输出、网络编程
(2) Java EE (Java Platform,Enterprise Edition) -企业版本:
J2EE 包含J2SE 中的类,并且还包含用于开发企业级应用的类。比如:EJB、servlet、JSP、XML、事务控制
(3) Java ME (Java Platform,Micro Edition) -微型版本:
Java ME 又称为 J2ME(Java Platform,Micro Edition),是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API。
J2ME 包含J2SE中一部分类,用于消费类电子产品的软件开发。比如:呼机、智能卡、手机、PDA、机顶盒
2005年6月,JavaOne 大会召开,SUN 公司公开 Java SE 6。此时,Java的各种版本已经更名,以取消其中的数字“2”:J2EE更名为Java EE,J2SE更名为Java SE,J2ME更名为Java ME。
二.JRE 与 JDK
JRE: Java运行环境
JRE 是 Java Runtime Environment 缩写,指Java运行环境,是Sun的产品。运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库
JDK: Java开发工具(包含JRE)
JDK 是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。
JSR:
JSR 是Java Specification Requests的缩写,意思是Java 规范提案。
是指向 JCP (Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。
JSR已成为Java界的一个重要标准。
JCP:
JCP (Java Community Process) 是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新。
三.JAR、 EAR、 WAR 包文件
(1) JAR:Java Archive
JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE 应用程序创建的 JAR 文件是 EAR 文件(企业 JAR 文件)。
JAR 文件格式以流行的 ZIP 文件格式为基础。与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。
JAR包,通常是将多个 class 文件压缩成一个文件,可作为一个类库供其他项目引用。
(2) EAR: Enterprise Archive file
EAR 包含内容:Servlet、JSP页面、JSP标记库、JAR库文件、HTML/XML文档和其他公用资源文件,如图片、音频文件等; 除了包含JAR、WAR以外,还包括 EJB 组件。
(3) WAR: Web Application Archive
WAR 与 JAR 类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织,是做好一个web应用后,通常是一个网站,打成包部署到容器中。
四.Java虚拟机: JVM
JVM 是 Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java 语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。
而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。
Java 语言使用 Java虚拟机 屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
Java虚拟机 在执行字节码时,把字节码解释成具体平台上的机器指令执行。
这就是 Java 的能够“一次编译,到处运行”的原因。
五.应用服务器: Tomcat
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。
六.Java Servlet 技术
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。
Java Servlet 通常情况下与使用 CGI (Common Gateway Interface,公共网关接口)实现的程序可以达到异曲同工的效果。但是相比于 CGI,Servlet 有以下几点优势:
性能明显更好。
Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再创建一个单独的进程来处理每个客户端请求。
Servlet 是独立于平台的,因为它们是用 Java 编写的。
服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。因此,Servlet 是可信的。
Java 类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与applets、数据库或其他软件进行交互。
Java Servlet 为创建基于 web 的应用程序提供了基于组件、独立于平台的方法,可以不受CGI程序的性能限制。
Java Servlet 有权限访问所有的 Java API,包括访问企业级数据库的 JDBC API。
七.JSP: JavaServer Pages Technology
JSP全称Java Server Pages,和PHP, ASP类似,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。
八.Java Expression Language (JEXL)-EL表达式
EL主要作用: 获取数据:
EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。
九.JSF: JavaServer Faces
JavaServer Faces (JSF) 是一种用于构建 Java Web 应用程序的标准框架(是Java Community Process 规定的JSR-127标准)。
它提供了一种以组件为中心的用户界面(UI)构建方法,从而简化了Java服务器端应用程序的开发。
典型的JSF应用程序包含下列部分:
- 一组JSP页面
- 一组后台 bean(为在一个页面上的UI组件定义的属性和函数的 JavaBean 组件)
- 应用程序配置资源文件(定义页面导航规则、配置bean和其它的自定对象,如自定义组件)
- 部署描述文件(web.xml)
- 一组由应用程序开发者创建的自定义对象(有可能)
- 一些可能包含自定义组件、约束、转换器或者监听器的对象
- 一组自定义tag为在页面中表现自定义对象
包含JSP页面的JSF应用程序也使用由为了表现UI组件和在页面上的其他对象的JSF技术而定义的标准的tag库。
十.Java Applet
Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。
十一.JavaBean
JavaBean 是特殊的Java类,使用J ava语言书写,并且遵守JavaBean API规范。
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。
JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。
十二.简单的Java对象: POJO
POJO (Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混淆所创造的简称。
- PO: Persistant Object. 持久对象,数据;
PO 是 Persistant Object 的缩写,用于表示数据库中的一条记录映射成的 java 对象。
PO 仅仅用于表示数据,没有任何数据操作。
通常遵守 Java Bean 的规范,拥有 getter/setter 方法。
- DTO: Data Transform Object. 传输对象,前端调用时传输 ;
DTO 通常用于不同服务或服务不同分层之间的数据传输。
DTO 与 VO 概念相似,并且通常情况下字段也基本一致。
但 DTO 与 VO 又有一些不同,这个不同主要是设计理念上的,比如 API 服务需要使用的 DTO 就可能与 VO 存在差异。
通常遵守 Java Bean 的规范,拥有 getter/setter 方法。
- VO: Value Object. 表现对象,前端界面展示。
VO 是 Value Object 的缩写,用于表示一个与前端进行交互的 java 对象。
这里的 VO 只包含前端需要展示的数据即可,对于前端不需要的数据,比如数据创建和修改的时间等字段,出于减少传输数据量大小和保护数据库结构不外泄的目的,不应该在 VO 中体现出来。
- BO: Business Object. 业务对象,封装对象、复杂对象 ,里面可能包含多个类;
BO 包括了业务逻辑,常常封装了对 DAO、RPC 等的调用,可以进行 PO 与 VO/DTO 之间的转换。
BO 通常位于业务层,要区别于直接对外提供服务的服务层:
BO 提供了基本业务单元的基本业务操作,在设计上属于被服务层业务流程调用的对象,一个业务流程可能需要调用多个 BO 来完成。
- DAO 是 Data Access Object 的缩写,用于表示一个数据访问对象。
使用 DAO 访问数据库,包括插入、更新、删除、查询等操作,与 PO 一起使用。
配合 VO, 提供数据库的 CRUD 操作
DAO 一般在持久层,完全封装数据库操作,对外暴露的方法使得上层应用不需要关注数据库相关的任何信息。
DO:(Domain Object),领域对象
就是从现实世界中抽象出来的有形或无形的业务实体。一般和数据中的表结构对应。
TO:(Transfer Object) ,数据传输对象
在应用程序不同 tie( 关系 ) 之间传输的对象
上面说的 PO、VO、DTO 都是典型的 POJO。而 DAO、BO 一般都不是 POJO,只提供一些调用方法。
十三.EJB: Enterprise JavaBean
EJB 是Sun的 JavaEE 服务器端组件模型,设计目标与核心应用是部署分布式应用程序。
EJB (Enterprise JavaBean) 是J2EE(javaEE)的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。
在 J2EE 里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。
在 EJB3.0 推出以后,实体Bean被单独分了出来,形成了新的规范JPA。
十四.JPA: Java Persistence API
JPA 是 Java Persistence API 的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中
Java构建工具
- Apache Maven
Apache Maven 是一个软件项目管理和综合工具。
Maven 是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
Maven 的核心功能便是合理叙述项目间的依赖关系,即根据 pom.xml 文件的配置获取 jar 包,不用手动去添加jar包。
- Apache Ant
Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。
Ant是Apache软件基金会JAKARTA目录中的一个子项目,它有以下的优点。跨平台性。Ant是纯Java语言编写的,所以具有很好的跨平台性。操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。 Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建文件 是XML格式的文件,所以很容易维护和书写,而且结构很清晰。Ant可以集成到开发环境中。由于Ant的跨平台性和操作简单的特点,它很容易集成到一些开发环 境中去。
- Gradle (推荐使用)
Gradle 是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
一.Maven中 GroupId 和 ArtifactId
GroupId 和 ArtifactId 被统称为“坐标”是为了保证项目唯一性而提出的.
GroupId 一般分为多个段,一般第一段为域,第二段为公司名称。域又分为org、com、cn等,其中org为非营利组织,com为商业组织。
GroupId 是项目组织唯一的标识符, 比如我的项目叫test01 那么GroupID应该是 com.XiaoT.test01 域名.公司名.项目名
ArtifactId 就是项目的唯一的标识符, 一般是 项目名-xxx 比如test01-heloword
二.POM
POM(Project Object Model)作为项目对象模型。
是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM.xml,获取所需的配置信息,然后执行目标。
POM 中可以指定以下配置:
- 项目依赖
- 插件
- 执行目标
- 项目构建 profile
- 项目版本
- 项目开发者列表
- 相关邮件列表信息
三.Java数据库连接: JDBC
JDBC (Java DataBase Connectivity, Java数据库连接) 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。
JDBC 提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序.
JDBC API 是一个Java API可以访问任何类型的数据库的数据,尤其是存储在关系数据库中的数据。
四.SSH:SSH 为 Struts + Spring + Hibernate 的一个集成框架,是之前较流行的一种Web应用程序开源框架。
- Struts框架
Apache Struts 2 是一种流行的 Java模型 - 视图 - 控制器(MVC)框架,成功地结合了 WebWork 和 Struts1.x 两种 Web 框架。
Struts2 是一个基于MVC设计模式的 Web 应用框架,它本质上相当于一个 Servlet,在MVC设计模式中,Struts2 作为控制器(Controller)来建立模型与视图的数据交互。
- Spring框架
Spring 框架是一个开源的 Java 平台,它为容易而快速的开发出耐用的 Java 应用程序提供了全面的基础设施。
Spring 框架最初是由 Rod Johnson 编写的,并且 2003 年 6 月首次在 Apache 2.0 许可下发布。
- Hibernate: Everything data.
Hibernate 是一个开放源代码的对象关系映射(ORM)框架,它对 JDBC 进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的 ORM 框架.
Hibernate 可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate 框架使用在数据持久化层(DAO)。
- ORM: Object Relational Mapping
ORM:对象关系映射, 采用映射元数据(配置文件)来描述对象-关系的映射细节。
ORM 框架通过配置文件将实体对象和数据库表对应起来。
采用映射元数据(配置文件)来描述对象-关系的映射细节。
ORM 框架通过配置文件将实体对象和数据库表对应起来。
- MyBatis
MyBatis 是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs 映射成数据库中的记录。
MyBatis 本是 Apache 的一个开源项目 iBatis, 2010年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为 MyBatis 。2013年11月迁移到Github。
五.Apache Derby数据库
Apache Derby, 是 Apache DB 下的一个子项目,是全部由 Java 实现的关系型数据库,其内嵌 JDBC 驱动,小巧,易于安装、部署和使用。
由于 Derby 是一个纯Java程序,因此只需要操作系统支援Java虚拟机,Derby便可执行。
由于 SQL 程序转成的Java bytecode 能被 JIT 动态翻译,因此 Derby 可能比传统的数据库管理系统更佳的性能。
六.Apache Cassandra数据库
Cassandra 是一套开源分布式NoSQL数据库系统。
Cassandra, 卡珊德拉(希腊神话人物),它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。
Facebook 于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。