|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
JavaBeginner : 136 Новичок
|
Фев 07, 2012 14:08 |
|
|
Есть сайт на PHP, требуется проделать на бэкэнде громоздкие вычисления (распознавания образов, нейросети). Вариантов не много по тому, какой язык использовать в качестве бэкэнда: C++ или Java. И на том, и на том есть опыт создания десктопных приложений. Если в случае с C++ я представляю, что можно через него вывести HTTP-заголовки, HTML страницу, скомпилить и запустить через CGI, то в случае с Явой не очень представляю процесс запуска этих программ на сервере. Это всё-таки байт-код, а не бинарный системный.
Каким образом запускают Java-программы в вебе? |
|
|
|
 |
tender_swallow : 472 Бывалый Откуда: Ivanovo
|
Фев 07, 2012 14:19 |
|
|
| Создается веб-приложение *.war и разворачивается на сервлет-контейнере (например, Tomcat). |
|
|
|
 |
JavaBeginner : 136 Новичок
|
Фев 07, 2012 14:22 |
|
|
| tender_swallow писал(а): |
| Создается веб-приложение *.war и разворачивается на сервлет-контейнере (например, Tomcat). |
1. Что имеется ввиду под "разворачивается"? Просто перекидываются java-программы в какую-то определённую папку?
2. Т.е. стоит Apache, рядом с ним стоит на другом порту Tomcat и обслуживает Java-программы? |
|
|
|
 |
tender_swallow : 472 Бывалый Откуда: Ivanovo
|
Фев 07, 2012 14:31 |
|
|
1. Да кладется в папку webapps. Но туда кладется не "java программа", а веб приложение (архив с расширением war).
2. В приницие Tomcat и без Apache может генерить веб-контент, но для лучшей проивзодительности (загрузка статического контента) его ставят в связке с Apache. Настройку совместой работы надо смотреть в доках, сам такого не делал, подсказать по этому вопросу, к сожалению, не смогу.
Последний раз редактировалось: tender_swallow (Фев 07, 2012 14:33), всего редактировалось 2 раз(а) |
|
|
|
 |
Pahan : 745 Постоянный посетитель Откуда: Минск
|
Фев 07, 2012 14:32 |
|
|
В случае с Java, запускается виртуальная машина джава, которая является бинарной программой(java.exe под виндой), и она подгружает байткод и выполняет. Так что можно с ней работать как с любой другой программой, в частности настроить ее через CGI.
Но на практике это не прокатит скорее всего. Запуск виртуальной машины жрет много ресурсов. В разы больше чем PHP процессор например, или средних размеров программа на С++. Но это мое личное мнение, я сам не пробовал. Да и это зависит от вычислений, и того как часто их делать надо. |
|
|
|
 |
tender_swallow : 472 Бывалый Откуда: Ivanovo
|
Фев 07, 2012 14:38 |
|
|
| Pahan писал(а): |
| В случае с Java, запускается виртуальная машина джава, которая является бинарной программой(java.exe под виндой), и она подгружает байткод и выполняет. |
Мне кажется более правильно сделать отдельный веб-сервис на Java и дергать его из PHP клиента.... Если нужна асинхронность, то можно посмотреть в сторону JMS. Глянул мельком в гугле, вроде бы PHP с JMS должны дружить http://stackoverflow.com/questions/4078477/how-to-connect-jms-from-php |
|
|
|
 |
JavaBeginner : 136 Новичок
|
Фев 07, 2012 14:39 |
|
|
Спасибо за ответы!
По поводу того, что Java требует много памяти - этого, к сожалению, не учёл. Сейчас на многих форумах прочёл то же самое. Получается, чтобы почувствовать преимущество Явы над ПХП, нужно вооружиться большим количеством памяти, иначе Ява то ли не запуститься (на ВПС например), то ли ничего хорошего, всё равно, из этого не получится.
Как вы считаете, вообще какое-либо преимущество Явы есть перед ПХП, если мы говорим именно о скорости вычислений и вообще их возможности? Нейросети писать на пхп - можно, конечно, но мне что-то думается он загнётся от этого. Ява не загнётся, но памяти потребует столько, что чёрт знает - а нужно ли писать на яве такое  |
|
|
|
 |
Pahan : 745 Постоянный посетитель Откуда: Минск
|
Фев 07, 2012 14:45 |
|
|
| Цитата: |
1. Что имеется ввиду под "разворачивается"? Просто перекидываются java-программы в какую-то определённую папку?
|
Java сервера(сервлет контейнеры, как tomcat), работают не так как обычные сервера, как apache.
Там это происходит так:
Есть один, сервлет контейнер(сервак), написан на java как правило.
И есть web-приложения, они являются по сути плагинами к сервлет контейнеру. Которые могут динамически подгружаться и выгружаться.
Сервлет контейнер может подгружать эти плагины разными способами. Процесс подключения плагина(web-приложения), называют развертыванием.
Последний раз редактировалось: Pahan (Фев 07, 2012 14:58), всего редактировалось 2 раз(а) |
|
|
|
 |
Pahan : 745 Постоянный посетитель Откуда: Минск
|
Фев 07, 2012 14:55 |
|
|
| JavaBeginner писал(а): |
По поводу того, что Java требует много памяти - этого, к сожалению, не учёл. Сейчас на многих форумах прочёл то же самое. Получается, чтобы почувствовать преимущество Явы над ПХП, нужно вооружиться большим количеством памяти, иначе Ява то ли не запуститься (на ВПС например), то ли ничего хорошего, всё равно, из этого не получится.
Как вы считаете, вообще какое-либо преимущество Явы есть перед ПХП, если мы говорим именно о скорости вычислений и вообще их возможности? Нейросети писать на пхп - можно, конечно, но мне что-то думается он загнётся от этого. Ява не загнётся, но памяти потребует столько, что чёрт знает - а нужно ли писать на яве такое  |
Мораль того что я писал выше такова: не стоит запускать JVM по пустякам(таким как обработка одного запроса)!. Жрет она не так уж много, но если запустить 50 штук, то будет намного заметнее чем запустить 50 PHP процессоров.
Нейросеть можно написать ввиде сервера, который будет работать на одном JVM, а запросы к нему будут по TCP/IP идти. Не совсем представляю правда как она выглядит и чего делает эта сеть. |
|
|
|
 |
JavaBeginner : 136 Новичок
|
Фев 07, 2012 15:07 |
|
|
| Pahan писал(а): |
| Сервлет контейнер может подгружать эти плагины разными способами. Процесс подключения плагина(web-приложения), называют развертыванием. |
Аа, вот откуда идёт этот термин. Понятно!
| Pahan писал(а): |
Мораль того что я писал выше такова: не стоит запускать JVM по пустякам!. |
Даа, вот это очень правильное замечание теперь понимаю, насколько оно важно. Запускать Яву, в общем-то, получается нужно в том случае, если без неё никак не обойтись. Возможно, как и в моём случае.
| Pahan писал(а): |
Не совсем представляю правда как она выглядит и чего делает эта сеть.
|
Это мат. модель, в которой производятся сотни тысяч, иногда и миллионы арифметических вычислений по определённым формулам. Желательно, как можно быстрее их делать, - быстрее результат распознавания (например) получишь. Думаю, что PHP вряд ли вообще будет справляться с такой грудой вычислений.
Кстати, а по скорости работы, программы на Яве насколько уступают аналогичным на C++? Просто пытаюсь представить, если выбирать между Java и C++, какой профит я получу от Явы, если буду платить за это памятью серверов
Помимо кроссплатформенности и "пре-компилируемости" программ) |
|
|
|
 |
Pahan : 745 Постоянный посетитель Откуда: Минск
|
Фев 07, 2012 15:27 |
|
|
Ну для грбуой оценки я как-то запускал такой код, на java и на С++ и смотрел солько времени уйдет. Не помню насколько, но Java прилично проигрывала.
| Код: |
for (int i = 0; i < 1000000000; i++) {
} |
Как ни крути, java продует по памяти, и производительности С/C++, что бы там не говорили.
Другое дело что на C/C++ писать сложнее намного, разработка идет медленней. И запароть можно так, что медленней чем на Java выйдет, да плюс хрен кто в коде написанном разберется. |
|
|
|
 |
Skynin : 656 Постоянный посетитель
|
Фев 07, 2012 15:35 |
|
|
|
|
|
|
 |
|
|
|