Netty(一)Netty简介及环境搭建
Netty重要性
Hadoop、Spark、Dubbo、Akka、Elasticsearch等众多知名框架,Alibaba、Facebook、Twitter等知名的公司都使用到了Netty作为底层框架
更多信息可以去Netty官网了解
谁开发的
JBoss公司,这里就不放链接了,想了解的可以去搜一下
先看
你好,这是你第一次学习 Netty 吗?既然你看到了这篇文章,说明你对Netty还是很感兴趣的。
但是!你学会NIO了吗?学习Netty是需要NIO基础的
如果你对NIO已经很熟练了,那真的是太棒了,你已经超越了大部分开发者,可以直接忽略后两段balabala....
如果你还不会NIO,可以看一下我的这个专栏: IO/NIO/AIO从入门到入坑还没开始写,可以让你去学习IO的一些基础和高级用法。
稳定性
Netty非常的稳定,目前用的是Netty4.x,这个版本已经用了很多年了。
小知识:
其实官方曾经升级到5.x,但是5.x的版本升级之后发现可用性和稳定性不是很好,于是又回退到了4.x版本。
Netty开源作者曾经说过Netty5.x有一些各种各样的问题,已经不再使用了。所以目前最新的版本还是4.x
核心
Netty是一个异步、基于事件驱动模型的网络应用框架。
目前可能读起来这一句话比较绕,但当你把Netty学完之后再来读这一句话,你会觉得豁然开朗:哦~原来是这样啊
先解释一下吧:
- 异步:这个应该不难理解吧,就像ajax一样
- 基于事件驱动:就好像JQuery和JS里面就有一些onclick、onchange事件、简单来说就是当你干了一件事之后,触发一个方法
- 网络应用框架:这个应该也知道,就类似于网络通过TCP/UDP协议的Socket编程
搭建一个Netty开发环境
我们既然都大概了解了,那我们一起来写一个框架吧 (划掉)搭建一个Netty开发环境吧
首先我们先选择构建工具吧,使用Maven还是Gradle,我这里就使用Gradle了,使用Maven和Gradle对程序无任何影响,可根据个人自由选择,我用Gradle绝对不是显摆自己会的多,绝对不是
(国内使用maven比较多,国外大部分都是用gradle的)
再次说一下:使用Maven和Gradle对程序无任何影响
准备工作
- 安装JDK,你要不会安装JDK的话,你应该就不会看到这里了,不过抽空我也会水一篇安装教程的
- 下载安装构建工具(Maven/Gradle),同上
- 测试工具:curl就行,没啥可挑的
选择curl的理由:Netty大家都知道是一个网络框架,举个栗子🌰,我开发了一个服务端,我是不是就要用客户端链接你,那我是不是就要写一个客户端的代码了,但这个有点麻烦,有很多时候只需要写一个服务端就够了,多写代码不就很麻烦吗。所以,这个时候就用到了curl。咳咳,curl就不展开讲了,同上(又给自己挖了个坑,会填的,会填的)
作者真能叭叭,balabala不停了
创建Netty工程
- 打开IDE工具,推荐IDEA,支持正版
- 创建一个Maven或者Gradle工程
- 增加Netty依赖点我进入中央仓库(有时候可能会因为网络的问题进不去这个网站,也可以直接复制我的,加入依赖之后耐心等待下载完成
),选择对应的版本,前面说过,目前版本还停留在4.x,我目前选择的是4.1.51.Final,Vulnerabilities from dependencies:
CVE-2021-43797CVE-2021-4104CVE-2021-37137CVE-2021-37136CVE-2021-21295CVE-2019-17571
更新:请不要使用4.1.70.Final及以下的版本!!!
本篇文章已升级到4.1.72.Final版本,
Maven:
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.72.Final</version>
</dependency>
Gradle:
implementation group: 'io.netty', name: 'netty-all', version: '4.1.72.Final'
至此我们一个简单的小Demo已经有雏形啦,后续我会把相关的代码都放到Github和Gitee上的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了