To write a downloader, Clojure.java.io or Java's io api?
我正在尝试在Clojure中编写一个常规的http / ftp文件下载器。 我做了一些研究,发现我可以使用java的api-BufferedReader BufferedInputStream等,也可以使用Clojure.java.io的api-作家,读者,输入流,输出流。
我发现Clojure的api比Java的api更易于使用和阅读,但是在性能,速度等方面,java的api会是一个更好的选择吗?
还有其他原因选择一个而不是另一个吗?
作为一种jvm平台语言,就性能而言,Clojure是文件下载程序项目的不错选择吗? 在进行研究时,我还阅读了一些有关jvm平台上的速度和内存性能的文章,现在我想知道我的语言选择是否与我的项目非常匹配。
考虑到Clojure习语创建的Clojure API,应该感觉更自然。当然,您仍然可以使用Java API,但随后会调用许多Java互操作函数。
当然,这没有什么错,但这并不是流畅的Clojure API。
我看不到性能损失,无论您使用的是Java,Scala,Clojure还是JRuby,JVM的启动速度都很慢。 Clojure确实表现出色。顺便说一句,您是否知道可以在Clojure中将项目编译为Bytecode格式?
Clojure是文件下载程序项目的不错选择吗?
我肯定会说!
主要优势之一是Clojure如何处理并发。如果您考虑一下,您的项目将进行大量的线程,锁定和同步(您正在构建一个可以同时下载许多文件的下载器,对吗?)?
在Clojure中,您将使用更高的抽象,例如代理(对于您的项目而言非常方便),引用和原子。
我不确定您阅读的有关JVM性能和内存管理的资源。 JVM是一款复杂的软件。 JVM提供了许多策略来管理内存。有些适用于桌面应用程序,有些适用于服务器。您可以根据您的应用程序/系统要求选择合适的策略。
顺便说一句,是否打算使用Swing构建您的应用程序?如果是,那么您决定选择Clojure,然后看看跷跷板。
Seesaw is a library/DSL for constructing user interfaces in Clojure. It happens to be built on Swing, but please don't hold that against it.