Java在互联网算法(搜索、大数据等)中的受欢迎程度

4

我已经写了多年的C/C++代码。最近开始大量使用Java,因为我用来解决计算问题的一些非常好的产品都是用Java编写的(例如:Lucene/Solr、Hadoop、Neo4j、OpenNLP等)。

自从三四年前以来,我看到Java在互联网算法(聚类、搜索、大数据等)方面真的变得非常流行。尽管在C++中也有我提到的产品的对应物(例如,对于搜索,用C++编写的Sphinx是一个很好的选择,Google将其Map Reduce编写成C++等)

我只是好奇想知道是什么因素和优势使得Java这些天特别受欢迎,尤其是在信息检索和大数据领域。

我只是想了解Java的优点,是什么让它在互联网算法领域如此受欢迎?仅仅是因为平台独立性吗?


2
啊,又是Java和C++性能的老故事。有98%的基准测试都是由那些不知道如何测试这两种语言的人所做出来的,而另外2%则是测试特定的事物,因为他们明白笼统的陈述是毫无用处的。最终,C++只会让编写这种非常庞大的程序变得更加困难 - 尤其考虑到C++具有优势的地方(较低的内存压力、SSE、非精确浮点数运算等)对于这些东西并不是特别有用。 - Voo
2
对于您指定的领域,纯CPU绑定的性能并不是最重要的。 - SK-logic
@Yavar,这是一个内存绑定操作,而不是CPU绑定。根本没有涉及到任何数字计算L1足够大的算法,这使得托管和非托管之间的区别无关紧要。 - SK-logic
2个回答

3
我认为,除了那些常用于证明X比Y更快的任意而假设的情况之外,Java和C++的性能表现相似。
一旦考虑到网络往返时间和其他实际世界中的延迟,我无法看到C++应用程序因为是C++而相对于Java应用程序提供可衡量的优势。然而,你会看到一个良好编写的应用程序和一个编写不好的应用程序之间存在可测量的差异。

1

平台独立是一个不错的特性,但在Java中并不总是有效。这取决于你做什么。

Java之所以受欢迎,是因为它比C++更安全。

你不能使用指针算术,也不能自己管理内存分配。

如果出现严重问题,你会得到异常或错误,或者程序会崩溃,但在Java中,你相对确定不会继续做你绝对不想做的事情。

是的,在C++中你可以做所有这些,但这不是问题的关键,不是吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接