Apache公共网络程序库可行性替换研究

网友投稿 839 2022-05-30

【引言】

最近收到一个调研需求,就是关于Apache Commons Net的替换研究。由于其最新的发布版本时间为2017年2月14日,已经有超过三年没有更新了。所以有必要对其进行可行性的替换研究。本文我们就来探索一下这个问题。

【Apache Commons Net】

Apache Commons Net™ 库包含了许多基础的互联网协议客户端。

该库的目的是提供基本的互联网协议访问。

【设计理念】

其设计理念是,可访问协议的全局功能, 如TFTP发送文件和接收文件),也可访问协议的基本功能。

通过这个程序库,程序员可以构造自定义实现,如TFTP数据包类。

【官方网站】

https://commons.apache.org/proper/commons-net/

【License】

Apache License 2.0

【最新发布】

10.15.1.3 于 2019年3月11日

【功能列表】

支持的协议包括:

l  FTP/FTPS

l  HTTP上的FTP(实验性的)

l  NNNTP

l  SMTP(S)

l  POP3(S)

l  IMAP(S)

l  Telnet

l  TFTP

l  Finger

l  Whois

l  rexec/rcmd/rlogin

l  Time(rdate)和Daytime

l  Echo

l  Discard

l  NTP/SNTP

【背景资料】

Apache公共网络程序库可行性替换研究

Apache Jakarta Commons Net最初是作为一个名为NetComponents的商业化Java库开始的。

是由ROO公司基于Java的早期版本开发的。

在1998年1.3.8发布后,源代码被捐赠给了Apache软件基金会,并在Apache许可证下提供。

从那时起,许多程序员为Jakarta Commons Net的持续发展做出了贡献。

目前的版本编号方案与旧版本没有任何关系。

换句话说, Jakarta Commons Net 1.0继承并取代了NetComponents 1.3.8。

Apache Jakarta Commons现在是一个独立的项目,被称为Apache Commons。

【示例】

Commons NET包含了几个工作示例应用程序。 源文件和编译后的jar都包含其中。

要使用其中一个示例应用程序,要确保其和主jar都在同一个目录下。

然后按照下面的命令行例子运行:

java -jar [path/]commons-net-examples-3.5.jar FTPClientExample [parameters]

FTP (包: examples/ftp)

l  FTPClientExample演示了通过FTP(S)和FTP over HTTP的文件下载和上传、LIST、MLST等。

l  ServerToServerFTP 演示了服务器到服务器的文件传输, 可将文件从host1传输到host2。

l  TFTPExample 是一个简单的Java tftp客户端的例子。

MAIL (package: examples/mail)

l  IMAPMail 演示如何使用IMAP[S]Client类。

l  POP3Mail 演示如何使用POP3[S]Client类。

l  SMTPMail 演示如何使用SMTP[S]Client类。

NNTP (包: examples/nntp)

l  ArticleReader 演示一种读取文章头和正文的方法。

l  ExtendedNTPOps 演示示一些扩展命令(AUTH, XOVER, LIST ACTIVE)。

l  ListNewsgroups 演示使用NNNTP包近似于Unix的新闻组命令。它可以连接到指定的新闻服务器,并获取服务器上的新闻组列表。在存储了大量新闻组的服务器上,这个命令可能需要很长时间(比如列出多达30,000个组)。

l  MessageThreading 演示使用文章迭代和线程。

l  PostMessage 演示使用NNNTP包发布文章到指定的新闻组的示例程序。它会在发布后提示你发布文章的头信息和文件名。

NTP (包: examples/ntp)

l  NTPClient 演示如何使用NTPUDPClient类的, 会发送一个数据报请求包到指定服务器上的网络时间协议(NTP)服务端口,检索时间,并将其与NTP报文头的字段(如:层级、参考ID、轮询间隔、根延迟、模式.........)一起打印到标准输出。

l  TimeClient 演示如何使用TimeTCPClient和TimeUDPClient类, 会连接到指定服务器的默认时间服务端口,检索时间,并将其打印到标准输出。

Telnet(包:examples/telnet)

l  TelnetClientExample 是一个简单的TelnetClient使用实例。

l  WeatherTelnet  是一个使用TelnetClient类的简单例子。它会连接到密歇根大学的气象服务器um-weather.sprl.umich.edu端口3000,并允许用户通过标准输入与服务器进行交互。

Unix实用工具(包: examples/unix)。

l  chargeren chargeren使用例子。

l  daytime使用daytime的简单例子。

l  echo简单的echo的使用例子。

l  finger finger的简单例子。

l  fwhois fwhois的简单例子。

l  rdate 简单的rdate例子。

l  rexec rexec的简单例子。

l  rlogin 使用rlogin的简单例子。

l  rshell rshell的简单例子。

【FTP,NNTP,NTP,Telnet,Unix实用工具自研替换】

目前支持Java语言的上述功能程序库比较新的且流行的是上文提到的Apache Commons Net 中的程序包,既然版本有些老旧,团队可以在其基础上自研替换。

【Mail客户端功能替换:Jakata Mail】

Jakarta Mail是一个Java API程序库,用于通过SMTP、POP3和IMAP发送和接收电子邮件。

【License】

EPL 2.0

GPL 2.0

【最新发布】

1.6.5 于 2020年3月10日

【功能列表】

API包

描述

javax.mail

雅加达邮件API提供的类提供了一个邮件系统的模型。

javax.mail.event

聆听者和事件包。

javax.mail.internet

互联网邮件系统特有的类。

javax.mail.search

消息搜索词。

javax.mail.util

实用工具类。

具体实施包

描述

com.sun.mail.dsn

创建和解析交付状态通知。

com.sun.mail.gimap

一个EXPERIMENTAL IMAP协议提供,支持Gmail特定的IMAP协议扩展。

com.sun.mail.imap

IMAP消息存储的访问。

com.sun.mail.pop3

POP3消息存储的访问

com.sun.mail.smtp

SMTP服务器的访问

com.sun.mail.util

实用工具类。

com.sun.mail.util.logging

包含Java™平台的核心日志Jakarta Mail扩展。

Jakarta Mail API提供了一个邮件系统的模型类, javax.mail包定义了所有邮件系统通用的类。javax.mail.internet包定义了基于互联网标准的邮件系统的类,如MIME、SMTP、POP3和IMAP。Jakarta Mail API包括javax.mail包和子包。

例子

下面是一个例子:

发送纯文本邮件:

Properties props = new Properties();

props.put("mail.smtp.host", "my-mail-server");

Session session = Session.getInstance(props, null);

try {

MimeMessage msg = new MimeMessage(session);

msg.setFrom("me@example.com");

msg.setRecipients(Message.RecipientType.TO,

"you@example.com");

msg.setSubject("Jakarta Mail hello world example");

msg.setSentDate(new Date());

msg.setText("Hello, world!\n");

Transport.send(msg, "me@example.com", "my-password");

} catch (MessagingException mex) {

System.out.println("send failed, exception: " + mex);

}

更多属性配置和文档可参看官方网站。

【官方网站】

https://eclipse-ee4j.github.io/mail/

【小结】

本文对Apache Commons Net这个程序库的技术特点和内容做了分析,到目前为止,发现除了Mail功能可能有替代者:Jakata Mail意外,其他的功能程序建议参考现有程序库进行自研。

希望本文对业务开发有指导作用, 并对大家有所裨益。

欢迎讨论。

【更多文章】

Jet Ding文章归类索引表

FTP Apache 网络

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:npm详解
下一篇:Hive源码学习【1】——Windows WSL Hive3.x安装与调试(1)
相关文章