Java 程序员必备框架,有几个地位不可撼动,你知道么

Python大火已是大势所趋,但无法否认“Java”仍是就业人数最多的编程语言,作为数万程序员的选择,Java就业前景好,岗位多,从业面广,像通信、网络、金融、电子服务、游戏都有涉猎。据统计,80%以上高端企业级应用都在使用Java,像电信、银行。此外,淘宝、京东、谷歌、Amazon等大型电子商务平台也在用Java。要知道在变幻莫测的编程界,Java独领风骚已有二十多载,23年的独立开发历史,83次荣获Tiobe排行榜首位,90%服务器用Java开发,45.5%开源项目用Java开发……如果你学习Java,大数据、人工智能、区块链、移动开发,只要你想,任你挑选!!!

Java 程序员必备框架,有几个地位不可撼动,你知道么

想在职位有所突破,节节升吗?想要高薪就业,从此平步青云吗?这些Java程序员必备框架,了解下。

01 Spring

Spring作为开源框架,是由Rod Johnson创建,它是为解决企业应用开发的复杂性而创建的。作为轻量级控制反转(IoC)和面向切面(AOP)的容器框架,它能编写更干净、更可管理且易于测试的代码。

目的:解决企业应用开发的复杂性。

功能:使用基本的JavaBean代替EJB,并提供更多企业应用功能。

范围:任何Java应用。

构成:最完善的轻量级核心框架;通用的事物管理抽象层;JDBC抽象层;集成了Toplink, Hibernate, JDO, and iBATIS SQL Maps;AOP功能;灵活的MVC Web应用框架。

Java 程序员必备框架,有几个地位不可撼动,你知道么

必须了解的优点,JAVA EE应该更容易使用;面向对象的设计比任何实现技术(比如JAVA EE)都重要;面向接口编程,而不是针对类编程。Spring将使用接口的复杂度降低到零;代码应该易于测试。Spring框架会帮助你,使代码的测试更加简单;JavaBean提供了应用程序配置的最好方法;在Java中,已检查异常(Checked exception)被过度使用。框架不应该迫使你捕获不能恢复的异常。

02 Spring Boot

Spring Boot是由Pivotal团队在2013年开始研发、2014年4月发布第一个版本的全新开源的轻量级框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置进一步简化了Spring应用的整个搭建和开发过程。另外Spring Boot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

Spring Boot特征:

• 可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;

• 内嵌Tomcat或Jetty等Servlet容器;

• 提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;

• 尽可能自动配置Spring容器;

• 提供准备好的特性,如指标、健康检查和外部化配置;

• 绝对没有代码生成,不需要XML配置。

Java 程序员必备框架,有几个地位不可撼动,你知道么

必须了解Spring Boot框架中的两个重要策略,开箱即用和约定优于配置。开箱即用“Outofbox”,指在开发过程中,通过在MAVEN项目的pom文件中添加相关依赖包,然后使用对应注解来代替繁琐的XML配置文件以管理对象的生命周期。这个特点使得开发人员摆脱了复杂的配置工作以及依赖的管理工作,更加专注于业务逻辑。约定优于配置“Convention over configuration”,是一种由SpringBoot本身来配置目标结构,由开发者在结构中添加信息的软件设计范式。这一特点虽降低了部分灵活性,增加了BUG定位的复杂性,但减少了开发人员需要做出决定的数量,同时减少了大量的XML配置,并且可以将代码编译、测试和打包等工作自动化。

03 Spring MVC

Spring MVC旨在解决V-C的交互问题,即视图与控制器的交互问题。在原生的Java EE技术中,使用Servlet作为项目中的控制器,用于接收用户的请求,并给予响应结果。

核心组件:

• Controller 实际处理请求的组件,例如接收请求参数,决定最终是转发或重定向的方式来响应。

• DispatcherServlet 前端控制器,主要职责是接收所有请求(根据配置文件来决定),并将请求转发给对应的控制器,接收控制器的处理结果,确定最终由哪个视图完成响应。

• HandlerMapping 处理请求路径与控制器的映射关系。

• ModelAndView 控制器的处理结果,其中的Model表示转发的数据(如果是重定向,Model没有意义),而View表示最终负责响应的视图组件的名称。

• ViewResolver 根据视图组件的名称,确定具体使用哪个视图组件。

Java 程序员必备框架,有几个地位不可撼动,你知道么

04 Spring Cloud

Spring Cloud为开发人员提供了一些工具来快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导层选举,分布式会话,群集状态)。Spring Cloud致力于为典型用例提供良好的开箱即用体验,并提供覆盖其他用例的扩展机制。

Feature

• Distributed/versioned configuration

• Service registration and discovery

• Routing

• Service-to-service calls

• Load balancing

• Circuit Breakers

• Global locks

• Leadership election and cluster state

• Distributed messaging

Java 程序员必备框架,有几个地位不可撼动,你知道么

Spring Cloud集成相关优质项目推荐

Java 程序员必备框架,有几个地位不可撼动,你知道么

Java 程序员必备框架,有几个地位不可撼动,你知道么

Java 程序员必备框架,有几个地位不可撼动,你知道么

Java 程序员必备框架,有几个地位不可撼动,你知道么

Java 程序员必备框架,有几个地位不可撼动,你知道么

这些项目是Spring Cloud官方项目或是对Spring Cloud进行了有益的补充以及基于Spring Cloud最佳实践。

05 Dubbo

Dubbo是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和Spring框架无缝集成。作为一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。

核心部件:

• Remoting: 网络通信框架,实现了sync-over-async和request-response 消息机制。

• RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能。

• Registry: 服务目录框架用于服务的注册和服务事件发布和订阅。

Java 程序员必备框架,有几个地位不可撼动,你知道么

你需要了解的Dubbo特性,面向接口代理的高性能RPC调用(提供高性能的基于代理的远程调用能力,服务以接口为粒度,为开发者屏蔽远程调用底层细节);智能负载均衡(内置多种负载均衡策略,智能感知下游节点健康状况,显著减少调用延迟,提高系统吞吐量);服务自动注册与发现(支持多种注册中心服务,服务实例上下线实时感知);高度可扩展能力(遵循微内核+插件的设计原则,所有核心能力如Protocol、Transport、Serialization被设计为扩展点,平等对待内置实现和第三方实现);运行期流量调度(内置条件、脚本等路由策略,通过配置不同的路由规则,轻松实现灰度发布,同机房优先等功能);可视化的服务治理与运维(提供丰富服务治理、运维工具:随时查询服务元数据、服务健康状态及调用统计,实时下发路由策略、调整配置参数)。

06 Ehcache

EhCache 是一个纯Java的进程内缓存框架,主要面向通用缓存、JavaEE和轻量级容器,具有快速、精干等特点,是Hibernate中默认的CacheProvider。Ehcache最初是由Greg Luck于2003年开始开发。2009年,该项目被Terracotta购买。软件仍然是开源,但一些新的主要功能(eg.快速可重启性之间的一致性的)只能在商业产品中使用(eg.Enterprise EHCache and BigMemory)。

特性:快速,简单,多种缓存策略;缓存数据有两级(内存和磁盘,无需担心容量);缓存数据会在虚拟机重启的过程中写入磁盘;可以通过RMI、可插入API等方式进行分布式缓存;具有缓存和缓存管理器的侦听接口;支持多缓存管理器实例,以及一个实例的多个缓存区域;提供Hibernate的缓存实现。

07 Hibernate

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,Hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。最具革命意义的是,Hibernate可以在应用EJB的JaveEE架构中取代CMP,完成数据持久化的重任。

Hibernate是数据库和界面之间的桥梁,需要面向对象操纵对象。Hibernate的核心API:Session、SessionFactory、Transaction、Query、Criteria和Configuration。

Hibernate优点,需要了解下:封装了jdbc,简化了很多重复性代码;简化了DAO层编码工作,使开发更对象化了;移植性好,支持各种数据库;支持透明持久化。

Java 程序员必备框架,有几个地位不可撼动,你知道么

语言特点:

• 将对数据库的操作转换为对Java对象的操作,从而简化开发。通过修改一个“持久化”对象的属性从而修改数据库表中对应的记录数据。

•提供线程和进程两个级别的缓存提升应用程序性能。

• 有丰富的映射方式将Java对象之间的关系转换为数据库表之间的关系。

• 屏蔽不同数据库实现之间的差异。在Hibernate中只需要通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生成适合的SQL语句。

• 非侵入式:Hibernate不要求持久化类实现任何接口或继承任何类,POJO即可。

08 jQuery

jQuery是一个快速、小型且功能丰富的javascript库。它使用一个在多种浏览器上工作的易于使用的api,使得html文档遍历和操作、事件处理、动画和ajax等工作变得更加简单。“write Less,Do More”是jQuery的设计宗旨。随着多功能性和可扩展性的结合,jquery改变了数百万人编写javascript的方式。

Java 程序员必备框架,有几个地位不可撼动,你知道么

jQuery提供给开发人员创建插件的能力,使得开发人员可以对底层交互与动画、高级效果和高级主题化的组件进行抽象化。模块化的方式使jQuery函数库能够创建功能强大的动态网页以及网络应用程序。

09 JUnit

JUnit是一个Java语言的单元测试框架,它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。JUnit作为一个开放源代码的Java测试框架,用于编写和运行可重复的测试,具有极限编程和重构的优点。

JUnit特点:

• 用于测试期望结果的断言(Assertion)

• 用于共享共同测试数据的测试工具

• 用于方便的组织和运行测试的测试套件

• 图形和文本的测试运行器

10 Log4j

Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

Apache Log4j 2 is an upgrade to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides many of the improvements available in Logback while fixing some inherent problems in Logback’s architecture.

11 Mybatis/ iBatis

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)。MyBatis 作为一款优秀的持久层框架,支持定制化SQL、存储过程以及高级映射。

Java 程序员必备框架,有几个地位不可撼动,你知道么

有些特征你需要了解下:

• 简单易学 没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

• 灵活 mybatis不会对应用程序或者数据库的现有设计强加任何影响。sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

• 解除sql与程序代码的耦合 通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

• 提供映射标签 支持对象与数据库的orm字段关系映射

• 提供对象关系映射标签 支持对象关系组建维护

• 提供xml标签 支持编写动态sql。

12 Netty

Netty是由JBOSS提供的一个java开源框架,现为 Github上的独立项目。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 是一个基于NIO的客户、服务器端编程框架,使用Netty 可以确保你快速而简单的开发出一个网络应用,eg.实现了某种协议的客户、服务端应用。Netty相当于简化和流线化了网络应用的编程开发过程,eg.基于TCP和UDP的socket服务开发。

新特性:

•处理大容量数据流更简单

•处理协议编码和单元测试更简单

• I/O超时和idle状态检测

•应用程序的关闭更简单,更安全

• 更可靠的OutOfMemoryError预防

Java 程序员必备框架,有几个地位不可撼动,你知道么

Netty特点:

• 设计 针对多种传输类型的统一接口-阻塞和非阻塞;简单但更强大的线程模型;真正无连接的数据报套接字支持;链接逻辑支持复用。

• 易用性 大量的 Javadoc 和 代码实例;除了在 JDK 1.6 + 额外的限制。(一些特征是只支持在Java 1.7 +。可选的功能可能有额外的限制。)。

• 性能 比核心 Java API 更好的吞吐量,较低的延时;资源消耗更少,这个得益于共享池和重用;减少内存拷贝。

• 健壮性 消除由于慢,快,或重载连接产生的 OutOfMemoryError;消除经常发现在 NIO 在高速网络中的应用中的不公平的读/写比。

• 安全 完整的 SSL / TLS 和 StartTLS 的支持;运行在受限的环境例如 Applet 或 OSGI。

• 社区 发布的更早和更频繁;社区驱动。

13 Quartz

你了解 Quartz吗?

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。

Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。

Quartz 允许程序开发人员根据时间的间隔来调度作业。

Quartz 实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。

作为OpenSymphony开源组织在Job scheduling领域又一个开源项目,Quartz 可以与J2EE与J2SE应用程序相结合也可以单独使用。它可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。

Quartz框架有一个丰富的特征集,监听器(监听是你创建的java类,当关键事件发生时会收到框架的回调。)和插件(无须修改Quartz源码便可被创建和添加进Quartz框架);集群Quartz应用(伸缩性、高可用性、负载均衡);相关工具(Quartz经常会用到cron表达式,可以使用国外网站cronmaker辅助生成cron表达式)。

14 Shiro(Java安全框架)

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

三个核心组件:

• Subject “当前操作用户”,Subject不仅指人,也可以是第三方进程、后台帐户(Daemon Account)或其他类似事物。

• SecurityManager “代表当前用户的安全操作”SecurityManager则管理所有用户的安全操作。

• Realms Shiro与应用安全数据间的“桥梁”或“连接器”。当对用户执行认证(登录)和授权(访问控制)验证时,Shiro会从应用配置的Realm中查找用户及其权限信息。

15 Velocity

Velocity是一个基于Java的模板引擎。它允许任何人使用简单而强大的模板语言来引用java代码中定义的对象。

你知道么,Velocity常被用于构建Web应用程序,要想在Web应用中使用Velocity,你还需要servlet或以servlet为基础的框架。

Velocity is a Java-based template engine, a simple and powerful development tool that allows you to easily create and render documents that format and present your data. In this guide, we hope to give an overview of the basics of development using Velocity.

相关推荐