Является ли Java хорошим выбором для приложения потокового сервера? - PullRequest
1 голос
/ 06 декабря 2011

Я сталкиваюсь с проектом с потоковым аудио, как клиент и сервер. Будет ли Java хорошим выбором для серверного приложения?

Я читал в других вопросах, что из-за производительности C ++ - лучший выбор для такого рода приложений.

Ответы [ 4 ]

6 голосов
/ 06 декабря 2011

Если вам удобнее работать с C ++ или Java, я бы использовал это.Вы можете написать сервер с низкой паузой на любом языке.

Потоковый сервер в основном предназначен для передачи большого количества данных из А в В, т. Е. Имеет значение ввод / вывод.Если вы не планируете сжимать поток на лету, производительность процессора вряд ли будет важной.

Даже если вы выполняете сжатие на лету, а Java недостаточно быстр для этого, вы можете вызвать библиотеку (желательно уже написанную / протестированную), чтобы сделать это через JNI, и при этом записать большую часть сервера.на Java.

4 голосов
/ 06 декабря 2011

пожимает плечами Это неплохой выбор.Хотя потоковое аудио имеет компонент производительности, ваши алгоритмы / оптимизации будут иметь гораздо больший эффект, чем выбранный вами язык.

Не говоря уже о знаменитой цитате Кнута: преждевременная оптимизация - корень всехзлой".Напишите, что вам больше всего нравится, и проверьте, если это проблема позже.

3 голосов
/ 06 декабря 2011

Самая большая проблема с производительностью Java, я думаю, это сборка мусора. Без тщательного рассмотрения того, что вы делаете, в Java легко писать код, который нужно периодически останавливать для очистки. С ++ не имеет такой проблемы. С другой стороны, без учета того, что вы делаете, легко написать код C ++, который теряет кучу памяти (когда вы забыли удалить что-то из кучи). Это действительно плохо для длительного процесса, такого как сервер. В Java возможна утечка памяти, но это связано с слишком долгим хранением ссылок, а не с тем, что встроено в язык.

Хотя C ++ имеет тенденцию работать быстрее, с современными компиляторами, работающими точно в срок, для Java разница в производительности, как правило, завышена. В целом Java, вероятно, так же хорошо, как C ++ для потокового аудио-сервера. Если вы обнаружите, что в каком-то ресурсоемком разделе есть узкое место, вы всегда можете перейти на C ++, используя Собственный интерфейс Java . Но это должно быть только после выявления проблемы с профилированием.

0 голосов
/ 06 декабря 2011

Если вы хотите использовать Java, здесь было бы отличным местом для поиска некоторых применений и файлов для использования мультимедиа в Java ...

...