在当今时代,有很多编程语言可能会塑造我们的未来。然而,当我们开始学习编程时,我们总是从C语言开始,然后转到C++或许多其它编程语言中的一种。
今天给大家分享的是为人熟知的Java编程语言中的工具使用。Java编程语言的普及可以归因于它的多功能性,因为它可以用来设计轻量级和快速的定制应用程序,并且能够服务于各种各样的目的。
Java编程语言是如此深受欢迎,以至于常年在TIOBE编程语言流行度排行榜中位列前三,几乎每个公司都在使用Java,无论是那些小公司,还是像谷歌,亚马逊那样的大型科技巨头。
并且最近几年,Java 的技术栈发展的非常快,成百上千的技术工具正不断地涌出来,这也造成了一个问题:到底应该选哪些工具搭建出最合适的技术栈呢?
一、项目工具
1.1 IDE
主流的 Java 开发工具现在非 IntelliJ IDEA 莫属。前几年,可能 Eclipse 还能和 IDEA 一争高下,到了现在已经基本是 IDEA 的天下了。
如果你问我用 IDEA 到底哪最爽,我觉得有 3 点:
-
代码智能提示,爽!
-
代码自动生成,爽!
-
代码调试,爽!
而这 3 点,恰恰就是能极大提高程序员开发效率的 3 点。
1.2 版本管理工具
对于项目中的代码版本管理工具,Git 已经处于垄断地位了,新项目的话不需要再考虑 SVN、CVS了。
之所以 Git 现在处于垄断地位,主要胜在 2 点:
-
Git 是分布式的,不会因为版本管理服务器崩溃导致完整的代码历史版本丢失。
-
Git 创建分支是非常廉价的操作,可以随意创建分支,从而使并行开发很容易落地。而 SVN、CVS 这些版本管理工具创建分支则非常笨拙,并行开发非常麻烦。
1.3 构建工具
Java 项目的构建工具现在是龙争虎斗,业内一般有两个选择:Maven 和 Gradle。
如果是后端的 Java 项目,那绝大部分用的还是 Maven 去构建项目。如果是前端的 Android 项目,则选择 Gradle。
Gradle 本身要比 Maven 先进很多:它配置灵活,性能优秀,真的是个非常优秀的构建工具。
二、开发框架
2.1 Web 框架
现在的 Web 项目开发,大部分都转向了 SpringBoot 了。
-
配置非常少,可以说是即插即用
-
基于 Spring 构建,入手门槛非常低
-
直接运行,不需要再考虑 Web 容器的问题
项目开发中用到的持久层框架,基本有两类:
Mybatis 系列衍生框架
JPA 系列衍生框架
在国内来讲,大部分持久层框架还是首选 Mybatis,貌似在国外大部分项目是用的 JPA 框架。
2.3 RPC 框架
现在 Java 项目的架构,基本都在转向分布式架构。分布式系统的整合,核心就是 RPC,因此很多项目中都引入了 RPC 框架。
RPC 框架,现在用得比较多的是 Dubbo 框架。
三、中间件
3.1 Web 服务器
现在的 Java 开发,由于大部分使用了 SpringBoot,所以以前大家常用的 Tomcat、Jetty、Resin 等 Web 容器都不怎么单独部署使用了。
但是,有一个 Web 容器反而还愈加兴旺起来,这就是 Nginx。
Nginx 在 Java 项目开发里,地位是非常特殊的。它在 Java 项目架构里起到了两个作用:
-
处理静态资源请求的web容器——Nginx 在 Java 项目中,专门负责处理对图片、html、js、css等这类静态资源的 Http 请求。
-
反向代理做分发——除了做专门处理静态资源请求的 Web 容器之外,Nginx 同时还会把对 servlet、controller 等这些动态资源的请求,转发给后面的 SpringBoot 中内置的 Tomcat 容器。
反向代理这个特性,Nginx 后面会被部署上集群,Nginx 在转发请求的时候,同时也会做负载均衡的请求分发的反向代理。
3.2 消息队列
如今,做架构越来越趋向分布式架构。分布式架构里,常用的通信手段,除了网络请求,就是消息队列了。
现在主流的消息队列框架有 RabbitMQ、RocketMQ、Kafka 等。
RabbitMQ 性能虽然低一些,但是容易上手,更适合用在中小项目。
-
RabbitMQ 是 AMQP 协议的实现,而 AMQP 协议本身就是来自于金融行业的软件专家们联手制定的,非常成熟和全面,已经成了工业标准。
-
RabbitMQ 是 Erlang 写的,Erlang 的虚拟机对内存和 CPU 过载的保护非常成熟,也因此塑造了 Erlang 应用本身的可靠和健壮。
大项目、非金融项目,大家可以在 RocketMQ、Kafka 这两者之间选择。
RocketMQ 和 Kafka 差不多 90% 的功能和概念都是相通的,只是 RocketMQ 在 Kafka 理念的基础上做了一些改进,更适用的业务场景也更广泛。
在流数据处理上,大家应该优先考虑 Kafka,原因是 Kafka 的流数据处理生态更加的完善周全。
3.3 数据库
互联网领域,主流数据库就是MySQL。在一些传统行业,比如银行,Oracle 用得不少。
Oracle 贵,互联网项目的一个特点就是数据库服务器数量贼多,如果用 Oracle 的话,成本太高了。
而且大家越来越有版权意识,国家对这方面也抓得越来越紧,所以,在互联网领域几乎都在用 MySQL。
使用 MySQL,常见的有 MHA 方案——MySQL 的高可用方案,基本架构就是一主两从。当主机出故障了,从机就会被提升为主机。
3.4 外置缓存
对于高并发的架构,外置缓存不可或缺,其中最最最常见的就是 Redis。之所以大家都采用 Redis 做外置缓存,原因有三点:
-
Redis 本身性能非常好。
-
Redis 有很多数据结构去适配不同的业务缓存需求。
-
Redis 的集群高可用方案和分片存储的高性能方案相对成熟。
以上,就是 Java 开发中经常遇到的主流技术工具了,赶紧收藏起来吧~