在Java中使用网络框架编写网络应用程序

2023-10-27

前言

自从JDK1.4中有了NIO以后,这个方面越来越活跃,也为java赢得更多开发者的支持。做java网络编程需要掌握一些基本的知识和技能:套接字编程、阻塞/非阻塞通信、创建HTTP服务器与客户程序、数据报通信、对象的序列化与反序列化、Java反射机制、RMI框架、JDBC API、JavaMail API、MVC设计模式、安全网络通信、CORBA和Web服务 等等。

八大主流网络编程框架:

1、Apache MINA
项目主页:http://mina.apache.org/
为开发高性能和高可用性的网络应用程序提供了非常便利的框架;支持基于 Java NIO 技术的 TCP/UDP 应用程序开发、串口通讯程序

2、Grizzly
官网:http://xsocket.sourceforge.net/
设计与一般的nio框架相比是比较不同的,主要不同点在于读和写都是采用blocking方式,并且使用临时selector ;
线程模型高度可配置,不过据作者介绍在跑一个selector主线程处理ACCEPT,用线程池处理read和write性能表现最好,这点不出意料。

3、Netty
官网:http://netty.io/
提供了一组基于事件的API来开发高性能, 可管理的TCP/IP服务端或客户端应用程序. 对于要求建立高性能的网络应用来说,Netty提供许多基本特性,像readiness selection, 线程池, 写缓冲DoS的预防, 可重用的缓冲等.

4、NIO Framework
搭建在Java NIO library之上,封装了原始NIO的大部分复杂性。利用NIO Framework能够很容易地开发安全,高性能的Java网络应用程序。

5、QuickServer
官网:http://www.quickserver.org/
一个免费的开源Java库,用于快速创建健壮的多线程、多客户端TCP服务器应用程序。使用QuickServer,用户可以只集中处理应用程序的逻辑/ 协议。

6、xSocket
官网:http://xsocket.sourceforge.net/
一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。

7、IOServer
高性能,易扩展的网络框架,相对于Apache的MINA更加轻量级,源码更容易读懂,源码中有大量详细的中文注解,是一个非常不错的学习框架,框架主要至力于解决中国市场上手机网游的服务器端程序的编写。IoServer构建简单服务器例程(更详细的例程可下载例程包,或进入Wiki查看)服务器接收一个来自客户端的整型,并加一返回给客户端。

8、XNIO
官网:http://xnio.jboss.org/
一个帮助你简化NIO应用程序开发的Java包;提供了一个独特和易于使用的API,用于结合blocking和非blocking操作,即使是在同一个channel上,也可以允许你利用简单和低延迟性的blocking I/O,同时还能获得非blocking I/O的优势;还引入了一个功能强大的基于回调的接口,可以大大简化基于traditional state machine的非blocking应用,并让您的应用程序之间的吞吐量(throughput)和延时达到完美平衡。另外中间件平台ICE也可能被用到此场景中。

使用建议

游戏用mina,其他用netty(netty 文档详细,例子多,版本更新快,有jboss公司支持。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Java中使用网络框架编写网络应用程序 的相关文章

随机推荐

  • MaxCompute实例相关操作

    通过MaxCompute提交的SQL Spark和MapReduce等作业会实例化 以MaxCompute实例 Instance 的形式存在 MaxCompute实例有对应的实例ID 实例ID永久有效 且全局唯一 查看实例信息 查看实例信息
  • 检查蓝牙是否连接

    检查蓝牙是否连接 private BroadcastReceiver mBlueToothReceiver new BroadcastReceiver Override public void onReceive Context conte
  • npm用法及离线安装方法

    npm用法及离线安装方法 基本的用法 查看某个模块的全部信息 或者可以查看单个信息 npm info name npm info name version npm info name homepage install支持多种手段 包名 gi
  • 图像分类&图像检索

    图像检索 基于深度学习的图片检索 图像检索 指基于内容的图像检索 即以图搜图 则是给定一幅查询图像 搜索与之相似 视觉或语义上 的图像 图像检索一般是提取图像特征后直接基于相似性 距离 度量标准计算查询图特征和数据库中图像特征之间的相似性
  • 学习笔记(三)基于FPGA的频率计

    1 原理 主要是通过两个计数器 在系统时钟下对高低电平保持时间计数 来实现计算输入信号的频率和占空比 2 Verilog代码 频率计 module freq cnt input clk input rst n input signal in
  • Hexo 字数和阅读时间统计插件

    项目地址 链接 hexo symbols count time 安装配置 安装插件 npm install hexo symbols count time save 在站点配置文件 config yml 中添加以下代码 symbols co
  • i686和x86_64的区别

    i686的解释 i代表intel系列的cpu 386 几乎适用于所有的 x86 平台 不论是旧的 pentum 或者是新的 pentum IV 与 K7 系列的 CPU等等 都可以正常的工作 那个 i 指的是 Intel 兼容的 CPU 的
  • c语言中,关于延迟函数的理解

    对于延迟 有些c基础的人都能够做到用for或while来实现 例如 include
  • Postern + Charles + Burpsuite 进行对 APP 进行抓包

    Postern Charles Burpsuite 进行对 APP 进行抓包 一 简单介绍 二 配置环境 三 配置 Charles 四 配置 postern 五 配置 Charles Burpsuite 六 Charles 和 Fiddle
  • STM32与ST-LINK/V2报错的解决方法

    追加阅读 STM32与ST LINK V2报错的解决方法 2 今天到入手了一块STM32F103C8T6最小系统版 想烧录点程序进去 发现keil5软件偶尔能检测到板子 大多数时候会报一堆错误 串口更是找不到 遇见的问题包括但不限于 ST
  • 【Qt】利用Tool Button控件创建下拉菜单按钮

    功能描述 利用qt进行界面设计和开发 创建下拉按钮 详细实现 1 在qt侧工具栏利用设计打开 ui文件 2 创建按钮 创建一个Tool Button按钮 并在属性窗口中的QToolButton栏中选中MenuButtonPopup属性 3
  • [从零开始学DeepFaceLab-3]: 使用-开发环境准备

    目录 1 GPU环境 1 1 安装N卡驱动程序 2 Python环境 2 1 安装Anaconda 2 2 安装tensorflow 2 3 GPU库的安装
  • linux用less查看文件内容,Linux文件内容查看 - less命令

    查看nohup out文件的内容 大于10万行 显示行号 显法读取文件的百分比 行号及总行数 root li384 34 data grainger images less NM nohup out 1 Searching for imag
  • MyBatis插入时获取自增id

    关于MyBatis在插入时获取自增id 1 1 注释方法 Insert insert into book bid bname price number cratedate values null bname price number cra
  • Netty网络编程(三):Channel详解

    文章目录 简介 Channel详解 异步IO和ChannelFuture Channel的层级结构 释放资源 事件处理 总结 简介 Channel是连接ByteBuf和Event的桥梁 netty中的Channel提供了统一的API 通过这
  • SpringBoot -ElasticSearch RestHighLevelClient 高级客户端使用(1) 初始化

    此处使用ElasticSearch6 4 2版本 SpringBoot 和ElasticSearch 环境以及 安装ik分词等操作不再缀诉 直接进入整合 本节不阐述原理 导入依赖 此处使用的elasticsearch为6 4 2版本 Spr
  • mdk5.14无法烧录

    mdk无法烧录 报错信息 Full Chip Erase Done No Algorithm found for 08000000H 080019E7H Programming skipped Error Flash Download fa
  • 应用接口版本兼容设计和使用原则

    背景 由于不同版本的升级与APP的客户端的升级是一致的 所以接口就不能像web一样能实时更新 代码可以每次拉取都不同 因为接口更新就应该遵守连续性原则 几个版本解释 在项目开发过程中 为了不同的目的 我们会出现很多版本管控 对于新人来说 有
  • 关于两个不同的List,根据相同属性进行排序

    两个不同的List 根据相同的属性进行排序 直接上代码 这里比较的是相同的list 有不同的可以直接放进去就行了 import java util public class Test public static void main Stri
  • 在Java中使用网络框架编写网络应用程序

    前言 自从JDK1 4中有了NIO以后 这个方面越来越活跃 也为java赢得更多开发者的支持 做java网络编程需要掌握一些基本的知识和技能 套接字编程 阻塞 非阻塞通信 创建HTTP服务器与客户程序 数据报通信 对象的序列化与反序列化 J