【发布时间】:2015-05-21 18:14:25
【问题描述】:
我正在从事一个从文档中提取元数据的小项目,并且遇到了一个难题。我有一些 Java 库,它们可以很好地用于信息检索的文档处理,如 Apache Tika、POI 等,以及其他语言中的一些工具,如 Ruby(pdf-extract) 和 bash 中的脚本,用于从 RESTful API 获取数据wget。
AFAIK,代码重用是件好事,对吧?但是,如果不可能(本机,我的意思是)重用所有这些代码,那么必须采取什么方法?
使用 Java 运行终端命令是一种解决方案,但我认为这不是一种好的编程习惯。
【问题讨论】:
-
为什么说使用 Java 运行终端命令不是一个好的编程习惯?
-
使用脚本将不同的程序捆绑在一起没有问题。不利的一面是,如果您想让您的项目在另一台机器上运行,您将不得不再次设置所有必需的程序,这可能会很棘手和/或复杂。但如果你只是想把事情做好,那不应该是一个问题。
-
@JosepValls 如果同样的事情可以在 Java 本身中完成,那么在 Java 本身中完成而不是使用脚本不是更好吗? (只是问)
-
@mpkorstanje 你是对的,现在只有一台 PC 安装了所有依赖项,我们只能在那里对项目进行整体测试。 pdf-extract 尤其需要很长时间才能安装,因为它还有一些其他依赖项
-
@blumonkey 我能想到的一个例子是对大型输入文件进行排序或过滤。尽管它在 Java 中完全可行,但通常使用您的操作系统本机命令会更快且内存效率更高。几年前我有一个用例,我最好的解决方案是调用一个使用排序链和 uniq 调用的脚本,如下所示:en.wikipedia.org/wiki/Uniq
标签: java ruby code-reuse