Maven

Maven是一种项目构建工具,能够把项目抽象成POM(Project Object Model),Maven通过POM对项目进行构建、打包、文档化等操作。最重要的是解决了项目需要类库的依赖管理,简化了项目开发环境搭建的流程,使得开发一个简单到复杂的大型项目变得容易。

Maven常用标签

  • groupID:项目所属的组
  • artifactID:项目唯一的标识
  • packaging:项目类型,项目打包的方式
  • version:项目版本号
  • modelVersion:项目所用Maven版本
  • dependencies:项目所有的依赖
  • dependency:dependencies下的单个依赖
  • scope:依赖的类库与项目的关系,分为compile、test、provided、runtime。
  • build:辅助构建项目所有的插件
  • plugins:辅助构建项目所有的插件
  • plugin:辅助项目构建的单个插件

Maven常用指令

  • mvn compile 编译工程
  • mvn package 编译并打包工程
  • mvn install 打包并安装到本地仓库
  • mvn deploy 打包并安装到远程仓库
  • mvn clean 清除target目录

Spring

Java EE是企业应用需求的体现,Spring则是基于企业应用并非全是分布式这一前提,简化了Java EE的开发。

  • Spring的奠基作者Rod Johnson在2003年出版的《Expert One-On-One Java EE Design and Development》一书中首次提到Spring框架。
  • 2004年,Spring框架推出了IOC(控制反转)和AOP(面向切片编程),使得Spring成为非常受欢迎的框架,成为企业应用开发的一种轻量级选择。
  • 2005年,Spring成立独立公司,专门维护Spring框架的开发。
  • 目前Spring已经成为庞大的开源工具包含:
    1. Spring Framework
    2. Spring Boot
    3. Spring Data
    4. Spring Cloud

服务器软件

服务类别

  • 静态服务:一般返回静态资源,不同用户在任意时间访问同一个服务返回的内容均相同
  • 动态服务:一般返回动态资源,不同用户由于身份及权限不同返回的数据也不同

服务器类别

  • Web服务器:最为宽泛的概念,可以响应用户请求,提供服务。
  • Http服务器:通过http协议将服务器上的资源传输给客户端。
  • 应用服务器:一个特定应用的承载容器,一般需要特定的运行时环境支持(例如Tomcat需要Java runtime环境支持)。能根据不同用户的请求,正确返回对应的资源,因此应用服务器常被称作应用容器、Web容器、动态容器。

常见服务器软件

Nginx

  • 基于C语言编写的稳定性高的高性能服务器
  • 原本工作是作为Http静态服务器,将服务器的静态内容或资源通过Http协议传输给客户端
  • 目前常被用于反向代理、负载均衡服务器,接收请求后转发给Tomcat等应用服务器进行处理。

Tengine

阿里基于Nginx针对大流量网站优化后的应用服务器

Apache

  • 功能上与Nginx服务器相同
  • 并发度、稳定性逊色于Nginx服务器

IIS

  • 微软公司开发的闭源服务器
  • 仅能运行在Windows平台
  • 常用作Http静态服务器,但也支持ASP.NET作为应用服务器,因此可看作具有动态服务器能力的Http服务器

Tomcat

  • 是Java EE应用服务器软件,运行时需要Java runtime运行环境
  • 是Spring Boot内嵌的默认应用服务器
  • 常被用来与Nginx进行配合

Jetty

  • 既支持静态服务,也支持动态服务,还支持Http2.0等
  • 是Spring Boot内嵌的非默认应用服务器

Undertow

  • RedHat基于Java编写的应用服务器
  • 是Spring Boot内嵌的非默认应用服务器

JBoss&WildFly

  • 重量级服务器软件
  • RedHat维护开发,内置的默认应用服务器为Undertow

Weblogic

  • 遵守很多Java EE标准和规范的重量级服务器软件

WebSphere

  • 遵守众多Java EE标准和规范的重量级服务器软件