Netty学习手册(一、基本使用入门)

本文介绍了Netty作为物联网时代高效通信框架的背景,讲解了Netty开发环境配置,包括IDE选择、库引入和打包部署。通过创建EchoServer演示了Netty服务端开发,简化了NIO的复杂性。最后,简要提到了客户端开发。下篇将深入讨论实际项目中的粘包、拆包、编解码等问题。
摘要由CSDN通过智能技术生成

背景

我们即将迎来一个万物互联的时代。而在这样的时代里,最大的机遇是什么呢?有人说是智能硬件的普及,有人说是人工智能的天下,有人说是大数据的时代……都没错。但我认为,万物互联,首先不是得让万物都连上网么?

从大型机、到个人PC时代,再到智能手机的普及……每一次硬件的变革,都是设备体积的减小和芯片密度的增加。同时,每一次革新,连上网的设备数量都在呈指数级的增涨。我们可以想象,到了万物互联的时代,连上网的设备数量必定还要有一个数量级的增涨。

目前大部分物联网设备,对于网络有一个共通的特点:就是本身通信的数据量不大,但是对数据流量敏感,往往需要长连接以保持即时的响应。基于这样的特点,物联网采用HTTP轮询的方式自然是不靠谱不专业的,即浪费流量资源又对服务器产生过多的压力负担。

所以,我们需要一个基于TCP/UDP协议的通信框架来满足节省数据流量的需求,同时由于需要最大限度地挖掘服务器潜力,同时维护尽可能多的长连接,所以我们需要异步IO的TCP/UDP协议的通信框架。

通过这样的圈定,Netty就进入了我们的视线中。基于Java NIO技术,让它能同时维护和响应大量的长连接。另外,它已经在电信软件、网络游戏、企业级应用及大型分布式服务开源系统中广泛使用,因此稳定性、健壮性有可靠保障。

Netty已经解决了大量Java NIO底层的bug,并且在Linux服务器环境下,Java NIO和AIO的实现方式相同,所以基于Java的异步IO网络框架,Netty有着很大的市场占有率。(关于Java的几种IO模式的网络编程异同,可参考我另一篇文章《BIO、NIO、AIO的编程对比》

开发环境配置

IDE

Netty是一个java项目,所以用我们常用的Java项目开发工具就可以开发基于Netty的应用。例如:Eclipse、IntelliJ IDEA等。

引入库

Netty官网地址:http://netty.io/

Netty是由一系列jar库构成的,官网上下载jar包,或者通过Maven引入对应的库就可以正常使用。例如我使用的稳定版本为4.0.28.Final。Maven引入方式为:

<dependency>
    <groupId>io.netty</groupId>
    <artifactId>netty-all</artifactId>
    <version>4.0.28.Final</version>
</dependency>

Netty官方出了多个版本,主要包括:

  • 3.x
  • 4.0.x
  • 4.1.x
  • 5.x

很多朋友不知道如何选择,还有一些认为版本号越大说明越新则越好。这是不对的。下面简单介绍一下各版本的特点:

  • 3.x 已经不建议使用,现在还在维护只是因为一些老项目还在广泛的使用它。
  • 4.0.x 稳定版。当你不知道用哪个版本时,使用这个版本不会有问题。
  • 4.1.x 是基于4.0.x的新版本。它完全兼容4.0.x的API,并且支持一些新的特性。例如:HTTP/2、异步DNS解析器等。所以当你的项目已经稳定运行4.0.x之后,想尝试新的特性的时候,可以开始使用4.1.x。
  • 5.x 一个未完成就被废弃的版本。详细被废弃的原因见作者在github上的说明:Remove master branch

基于此,我们选择了4.0.x作为主要使用的Netty版本。

打包、部署

基于Netty开发的项目,通常都是非Web的Java应用。所以只需要打包为一个普通的jar包就可以正常使用。

为了jar包更方便运行,我们一般会给jar包指定一个入口类及入口的main函数。运行jar包,就会直接从这个入口类的main函数开始执行。例如我们可以在Maven中这样配置:

<plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.6</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
                <mainClass>com.okeytime.smartwatch.server.corelogic.SmartWatchServer</mainClass>
          </manifest>
        </archive>
      </configuration>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值