本文为Sparkle发于《程序员》2008年2月刊的文章,与《程序员》的协议,可以在个人博客中发布,转载请保留出处。
前言
MINA是Trustin Lee最新制作的Java通讯框架。通讯框架的主要作用是封装底层IO操作,提供高级的操作API。比较出名的通讯框架有C++的ACE、Python的Twisted,而Java的通讯框架还有QuickServer、Netty2、Cindy、Grizzly等。
2004年6月,Trustin Lee发布了一个通讯框架Netty2,是Java界第一个事件模型架构的通讯框架,Cindy也从中借鉴了不少思想。由于Netty2的架构不是很好,Trustin Lee在2004年底加入Apache Directory组之后,重写了整个框架,取名为MINA。MINA是一个基于Java NIO的通讯框架,Java从1.4开始引入NIO,提供了一个非阻塞、高性能的IO底层。
目前使用MINA的产品并不是很多,比较出名的就有Apache Directory(作者就在为这个项目效力)、Openfire(Jive出品的一个XMPP产品)、red5(研究flash流媒体flv技术的朋友应该很清楚这个东西,adobe fms的竞争者,国内也有视频网站在使用)等等。 (Article by Sparkle)
笔者在07年初的时候,公司新项目需要用Java实现一个Socket Server,对比了Netty2、Cindy、QuickServer和MINA。当时Netty2已经停止开发,也找不到官方网站和代码,比较了另外三个框架之后,毅然选择了当时文档比较缺乏和使用群较少的MINA,一年以来的使用经验来看,感觉还是很不错的,MINA有着清晰的架构,很方便做自定义的扩充。在1.0发布之后,官方网站充实了很多,增加了不少文档,也听到越来越多的朋友开始使用MINA。后来专门针对JDK 1.5发布了1.1的版本,使用JDK内置的concurrent代替backport-util-concurrent。目前1.0和1.1同时存在,但已经不再增加新功能,仅仅发布bug fix的版本,新功能都在2.0中实现,2.0调整了架构,性能有更大的提升,目前还在开发中。
基本特性
- 通过Java NIO支持TCP和UDP协议,另外还支持RS232和VM内通讯。由于MINA有清晰的架构,你也能很简单地实现一个底层网络协议。目前不支持阻塞IO,似乎还没有计划支持,当然你可以在其之上实现一个阻塞的模型,不过按照笔者的经验来说,非阻塞IO更适合Server端编程。
- 一个类似ServletFilter的过滤器模型。这是笔者认为MINA的精髓所在,通过引入过滤器模型,可以将一些非业务的功能独立开来,层次更清晰,很有AOP的思想,可以很方便地进行日志、协议转换、压缩等等功能,还能在运行中动态增加或去掉功能。(Article by Sparkle)
- 可以直接使用底层的ByteBuffer,也可以使用用户定义的消息Object和编码方式。
- 高度可定制的线程模型,单线程、一个线程池,或者类似SEDA的多个线程池。
- SSL支持,攻击防御和流量控制,mock测试友好,JMX支持,Spring集成,你还需要更多吗。
相关推荐
### 基于MINA构建高性能的NIO应用 #### 概述 MINA作为一款优秀的客户端/服务器架构下的Java服务器框架,凭借其强大的功能和灵活性,在开发高性能网络应用程序方面表现突出。本文将深入探讨MINA的核心概念、优势...
"基于MINA构建简单高性能的NIO应用.pdf" 这个标题指出,文档主要讨论如何使用MINA框架来构建一个基于非阻塞I/O (Non-blocking I/O, NIO) 的应用程序。MINA是一个开源的Java框架,专为网络通信设计,特别是高性能、高...
综上所述,通过MINA框架,可以有效地构建出简单、高性能的NIO应用。MINA作为一套成熟的网络应用框架,其提供的丰富接口与组件大大简化了网络编程的复杂度,提高了开发效率。通过示例中的时间服务器程序,我们可以...
利用 Mina 可以高效地完成以下任务:<br><br>TCP/IP 和 UDP/IP 通讯 <br>串口通讯 <br>VM 间的管道通讯 <br>SSL/TLS <br>JXM 集成 <br>IoC 容器集成( Spring 、 Pico 等) <br>状态机<br><br>据官方评测, APR 的...
Spring Boot以其简洁、快速的起步方式深受开发者喜爱,而Mina则是一个强大的网络通信框架,常用于构建高性能、高并发的网络应用。结合NIO,我们可以创建出更加高效的数据传输服务。 首先,我们要理解Spring Boot的...
1.mina socket客户度工程相关类,添加mina jar包后可独立运行。 2.mina若有空闲连接则使用已有... <groupId>org.apache.mina</groupId> <artifactId>mina-core</artifactId> <version>2.0.9</version> </dependency>
MINA是一个高度可扩展的网络应用框架,广泛用于构建高性能、高并发的网络应用程序,如服务器端的TCP和UDP服务。本文将主要关注在Java中使用MINA来实现安全套接层(SSL)和传输层安全(TLS)协议,这两个协议是网络...
本文介绍了一种基于高性能Java NIO的MINA框架,用以构建高性能的即时通讯系统服务器。MINA框架(Multipurpose Infrastructure for Network Applications)是基于Java NIO设计的网络应用程序框架,其特点是采用松耦合...
1. **Apache MINA**:MINA是基于Java NIO(非阻塞I/O)的网络应用框架,用于构建高性能、跨平台的服务器端和客户端网络应用程序。它提供了一个事件驱动的模型,允许在高并发场景下处理大量连接,同时保持低内存开销...
Spring Boot作为一款轻量级的框架,使得快速构建应用变得简单。而Mina则是一款强大的网络通信库,它提供了对TCP/IP和UDP协议的支持,同时也支持串口通信。本文将详细介绍如何在Spring Boot项目中整合Mina来实现串口...
mina-core-2.0.0-M6.jar mina-example-2.0.0-M6.jar mina-filter-codec-netty-2.0.0-M6.jar mina-filter-compression-2.0.0-M6.jar mina-integration-beans-2.0.0-M6.jar mina-integration-jmx-2.0.0-M6.jar mina-...
Apache Mina是一个高性能的网络应用框架,主要用于简化网络服务的开发,如TCP/IP和UDP通信。在Mina中,ByteBuffer的使用是至关重要的,因为它提供了高效的数据读写机制。本篇将深入探讨Java NIO(非阻塞I/O)中的...
Mina提供了事件驱动和异步的模型,使得开发复杂网络应用变得简单,同时具备了NIO的高性能特性。 在服务端,无论是Socket、NIO还是Mina,都需要创建监听套接字来接收客户端连接,并为每个连接创建一个新的套接字或...
MINA(Java Multithreaded Network Application Framework)是一个高性能、异步事件驱动的网络应用程序框架,用于简化开发网络服务,包括TCP/IP和UDP/IP协议。本文将详细介绍如何利用MINA框架实现在Java中进行串口...
Apache MINA(Multipurpose Infrastructure for Network Applications)是一个Java框架,专为开发高性能和高度可扩展的网络应用程序而设计。MINA 提供了一种抽象层,允许开发者独立于传输协议(如TCP/IP或UDP/IP)来...
mina-core-2.0.0-M1-sources.jar是构建mina框架的主要文件
MINA(Multipurpose Infrastructure for Network Applications)是一个强大的网络应用程序框架,它由Apache软件基金会开发,主要用于构建高性能、高效率的网络服务。MINA的核心设计目标是提供一个与传输协议无关的...
《Mina NIO Socket:深度解析与应用》 在Java世界中,网络编程是一个不可或缺的部分,而Mina NIO(Non-blocking I/O...通过深入理解和应用Mina,开发者能够构建出高性能、可扩展的网络应用,满足各种复杂的业务需求。
同时,“Netty快速入门视频(52im.net).txt”虽然不是直接与Mina相关的,但Netty也是基于NIO的高性能网络库,学习它的资料也能加深对NIO的理解。最后,“MinaDemo”可能是Mina框架的一个示例项目,你可以通过运行和...