Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Как программы Java запускать под Apache?
Список форумов
 ->  Основы веб-программирования на Java


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
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-программы в какую-то определённую папку? Smile
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 требует много памяти - этого, к сожалению, не учёл. Сейчас на многих форумах прочёл то же самое. Получается, чтобы почувствовать преимущество Явы над ПХП, нужно вооружиться большим количеством памяти, иначе Ява то ли не запуститься (на ВПС например), то ли ничего хорошего, всё равно, из этого не получится.

Как вы считаете, вообще какое-либо преимущество Явы есть перед ПХП, если мы говорим именно о скорости вычислений и вообще их возможности? Нейросети писать на пхп - можно, конечно, но мне что-то думается он загнётся от этого. Ява не загнётся, но памяти потребует столько, что чёрт знает - а нужно ли писать на яве такое Laughing
К началу Посмотреть профиль Отправить личное сообщение
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 требует много памяти - этого, к сожалению, не учёл. Сейчас на многих форумах прочёл то же самое. Получается, чтобы почувствовать преимущество Явы над ПХП, нужно вооружиться большим количеством памяти, иначе Ява то ли не запуститься (на ВПС например), то ли ничего хорошего, всё равно, из этого не получится.

Как вы считаете, вообще какое-либо преимущество Явы есть перед ПХП, если мы говорим именно о скорости вычислений и вообще их возможности? Нейросети писать на пхп - можно, конечно, но мне что-то думается он загнётся от этого. Ява не загнётся, но памяти потребует столько, что чёрт знает - а нужно ли писать на яве такое Laughing

Мораль того что я писал выше такова: не стоит запускать JVM по пустякам(таким как обработка одного запроса)!. Жрет она не так уж много, но если запустить 50 штук, то будет намного заметнее чем запустить 50 PHP процессоров.

Нейросеть можно написать ввиде сервера, который будет работать на одном JVM, а запросы к нему будут по TCP/IP идти. Не совсем представляю правда как она выглядит и чего делает эта сеть.
К началу Посмотреть профиль Отправить личное сообщение
JavaBeginner : 136
Новичок

СообщениеФев 07, 2012 15:07 
Ответить с цитатой
Pahan писал(а):
Сервлет контейнер может подгружать эти плагины разными способами. Процесс подключения плагина(web-приложения), называют развертыванием.

Аа, вот откуда идёт этот термин. Понятно!

Pahan писал(а):

Мораль того что я писал выше такова: не стоит запускать JVM по пустякам!.

Даа, вот это очень правильное замечание Smile теперь понимаю, насколько оно важно. Запускать Яву, в общем-то, получается нужно в том случае, если без неё никак не обойтись. Возможно, как и в моём случае. Smile

Pahan писал(а):

Не совсем представляю правда как она выглядит и чего делает эта сеть.

Это мат. модель, в которой производятся сотни тысяч, иногда и миллионы арифметических вычислений по определённым формулам. Желательно, как можно быстрее их делать, - быстрее результат распознавания (например) получишь. Думаю, что PHP вряд ли вообще будет справляться с такой грудой вычислений.

Кстати, а по скорости работы, программы на Яве насколько уступают аналогичным на C++? Просто пытаюсь представить, если выбирать между Java и C++, какой профит я получу от Явы, если буду платить за это памятью серверов Smile
Помимо кроссплатформенности и "пре-компилируемости" программ)
К началу Посмотреть профиль Отправить личное сообщение
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 
Ответить с цитатой
JavaBeginner писал(а):

Кстати, а по скорости работы, программы на Яве насколько уступают аналогичным на C++

Java 7 -server program used compared to the fastest C++ GNU g++ program.
К началу Посмотреть профиль Отправить личное сообщение
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Основы веб-программирования на Java


 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru