我正面临一个带有音频流的项目,作为客户端和服务器。 Java是服务器应用程序的不错选择吗?
我读过其他问题,因为性能C ++是这类应用程序的最佳选择。
答案 0 :(得分:6)
如果您对C ++或Java更熟悉,我会使用它。您可以使用任何一种语言编写低暂停服务器。
流媒体服务器主要是将大量数据从A传递到B,即I / O很重要。除非您计划动态压缩流,否则CPU性能不太可能很重要。
即使您正在进行即时压缩并且Java速度不够快,您也可以通过JNI调用库(最好是已经编写/测试过的库)来执行此操作,并且仍然使用Java编写大部分服务器。
答案 1 :(得分:4)
耸肩这不是一个糟糕的选择。虽然音频流确实具有性能组件,但您所做的算法/优化将比您选择的语言具有更大的效果。
更不用说着名的Knuth引用“过早优化是所有邪恶的根源”。写下你最熟悉的东西,然后检查它是否有问题。
答案 2 :(得分:3)
我认为Java性能的最大问题是垃圾收集。如果不仔细考虑你正在做什么,在Java中很容易编写需要经常暂停以清理的代码。 C ++没有那个问题。另一方面,在不考虑你正在做什么的情况下,很容易编写泄漏堆内存的C ++代码(当你忘记从堆中删除某些内容时)。这对于像服务器这样长时间运行的进程来说非常糟糕。在Java中泄露内存是可能的,但这与保持引用时间太长有关,而不是与语言内置的内容有关。
虽然C ++往往更快,但是现代的Java即时编译器,性能差异往往被夸大了。整体Java可能与流式音频服务器的C ++一样好。如果您发现某些计算密集型部分存在瓶颈,则可以始终使用Java Native Interface下拉到C ++。但这应该只是在确定分析问题之后。
答案 3 :(得分:-1)
如果您确实想使用java,那么here将是查找在java中使用媒体的一些用途和文件的好地方...