| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Избранное > Взаимодействие PHP с Java. |
| Автор: Наставник 28.12.2004, 20:31 | ||||||||||
| Тут повнимательнее покопался с php.ini и обнаружил, вот такую строчку ;extension=php_java.dll, после чего очень удивился, не уж то PHP может работать с кодом Java. Просмотрев несколько книг, нашел, что да¸PHP замечательно взаимодействует с Java. Что меня очень порадовала, т.к. открывается дополнительная мощь языка Java, и теперь отпадает проблема скрытия кода, что для меня было очень актуальным. Кому интересно, настроить PHP для взаимодействия с Java, можно следующим образом. 1. Раскомментируем в php.ini строку extension=php_java.dll 2. Добавляем или находим (у меня уже были эти строки в php.ini, только они были замоменированы) следующие строки в php.ini [Java] java.class.path = "e:\Maguma Desktop\php\extensions\php_java.jar;e:\myjava\packages\" java.home = "e:\jdk\bin" java.library = "e:\jdk\jre\bin\server\jvm.dll" java.library.path = "e:\Maguma Desktop\php\extensions" // e:\myjava\packages\ - это туда вы должны помещать свои пакеты разработанные и скомпилированные на Java 3. Делаем restart Apache и используя функцию phpinfo(); видим, что поддержка Java включена 4. Теперь создадим очень простой php файл, который обращается к пакетам Java (пример взят из хелпа PHP, за что большое спасибо, добавлены собственные комментарии). Итак:
сохраняем в файле phpplusjava.php в результате вызвав этот php файл в окне браузера должно отобразиться примерно следующее:
5. Теперь разработает свой очень простой класс и свяжем с PHP
сохраняем в папке e:\myjava\packages и называем Sum.java, далее запускаем cmd, компилируем javac sum.jsva в результате получаем байт-код в виде Sum.class (с которым в последствии и работает, при этом код скрыт, если даже Apache по какой-либо причине сглючит). Далее создаем фаул, под названием javatest.php в котором пишем следующее
в результате вызвав этот php файл в окне браузера должно отобразиться примерно следующее:
Да уж, вроде все, принцип показал. Спасибо кто это ещё читает. Поскольку я немного удивлен, такой поддержкой со стороны PHP, мой вопрос заключается в следующем, может PHP взаимодействует не только с Java? Всем спасибо. |
| Автор: Opik 28.12.2004, 21:56 |
| интересно Добавлено @ 21:58 Можно побольше примеров и инфы? |
| Автор: Наставник 28.12.2004, 22:01 | ||
Да без проблем, выложу где-то в 4:00 утра. но у меня есть вопрос, может кто-нибудь знает ответ. Поскольку я САМ немного удивлен, такой поддержкой со стороны PHP, мой вопрос заключается в следующем, может PHP взаимодействует не только с Java? |
| Автор: Opik 28.12.2004, 22:05 |
| Тока желательно примеры не из документации, а из книги, а то первая доспупна всем Ты показал примеры использования т.е вызова Java функций из PHP, можно ещё показать как например получить информацию с аппета в PHP код. Спасибо. |
| Автор: Opik 28.12.2004, 22:19 |
| Есть взаимодейсвие с .NET (http://www.devarticles.com/c/a/PHP/Using-the-.NET-Assembly-in-PHP/2/) Только добавлю, что на данный момент эти библиотеки экспериментальные... |
| Автор: Наставник 28.12.2004, 22:28 | ||
| 1. Насчет книги, в ней было написано про взаимодействие PHP + Java всего 1 страница, пример который привел там автор, был не верно написан, сам код на Java. 2. ссылка на дополнительный пример взаимодействия java и php http://www.onlamp.com/pub/a/php/2001/06/14/php_jav.html?page=2 А вообще я очень рад, за такую связь, ведь теперь можно как минимум получить полноценное множественное наследование, даже в 4-оё версии, да и не переживать за то, что клиент будет видеть код. Уже нашел одну CMS систему написанную на Java. http://webcontent-m1.com/m1/en/ Ещё одним плюсом - это доступ к БД, поскольку я знаю как тяжело осуществляется доступ к БД на JDBC-ODBC, и знаю как легко в PHP, то лучше всего данные брать из БД с помощью БД передавать в Java, обрабатывать и возвращать PHP. Повторю свой вопрос ещё раз.. Поскольку я САМ немного удивлен, такой поддержкой со стороны PHP, мой вопрос заключается в следующем, может PHP взаимодействует не только с Java? Я спрашиваю, т.к. у меня установлено Maguma Studia? а там есть возможность визуально редактировать php.ini, т.к. вот в разделе подключения расширений для php, есть одна очень замечательная галочка, что-то типа .NET -- я «свалюсь» со стула если и такую связь PHP + . NET имеется в языке PHP. С Java было все более менее понятно, когда стал просматривать php.ini, а вот о .NET пока не нашел ни одного слова. Добавлено @ 22:30
ЗАМЕЧАТЕЛЬНО, спасибо за ссылку... разбираюсь. |
| Автор: skalex 29.12.2004, 09:47 | ||||
| Очень интересно... Действительно работает... Только при запуске примера из документации к PHP у меня вылетает ошибка:
Такого каталога (или файла) у меня действительно нет... Но что это за ошибка? Java сама по себе у меня работает без претензий (версия 1.4.2_04). Далее идет результат работы скрипта. Вот мои настройки в php.ini
P.S. Насколько я знаю, в java.class.path надо еще добавлять путь [каталог установки java]/jre/lib/rt.jar (чтобы получить доступ к пакетам java.*, javax.* и т. д.). |
| Автор: Наставник 29.12.2004, 15:14 | ||
| 1. Думаю Вам надо прописать следующий путь java.home = "c:\java\j2sdk\bin" вместо
2. Надо бы указать, где вы будете хранить свои .class, для этого надо добавить в строку java.class.path = "c:\php\extensions\php_java.jar" следующее java.class.path = "c:\php\extensions\php_java.jar;c:\myjava\packages\" соответственно, на диске c, создать папку myjava\packages и в ней хранить свои .class Успехов. |
| Автор: skalex 29.12.2004, 15:43 |
| Да все это мне понятно... Когда я попробовал другой пример (классический HelloWorld) ошибка не появилась... Интересный факт: если настройка java.home не установлена, то все равно все работает |
| Автор: Наставник 29.12.2004, 15:49 | ||||
Если вы говорите, про пример, который приведен при создании поста, то у меня все работало... хм, странно...
очень интересно, может быть PHP читает системную переменную окружения PATH, в которой у вас прописан путь к c:\java\j2sdk\bin". |
| Автор: skalex 29.12.2004, 17:32 | ||
Я скопировал пример из документации. И кстати, запускал из командной строки без Apache. Даже без переменной окружения работает! |
| Автор: Наставник 29.12.2004, 17:36 | ||
Вообще замечательно значит Apache не нужен, а вот с тем как PHP понимает где находится javac надо бы разобраться. |
| Автор: skalex 29.12.2004, 18:19 | ||
Собственно так и должно быть... А зачем ему javac ??? Ведь все классы то уже должны быть откомпилированы.... |
| Автор: Наставник 29.12.2004, 18:44 | ||
описался. имел ввиду java. |
| Автор: skalex 30.12.2004, 09:21 | ||||
| Я попробовал даже создать простейшее окно с помощью PHP+Java. Код TFrame.java:
Код TFrame.php
Это работает, окно появляется но сразу же пропадает... |
| Автор: Наставник 30.12.2004, 12:56 | ||
думаю, что уж графические возможности пакета swing скорее всего не будут работать корректно, хотя... Сегодня дома, протестирую, Ваш - Mace пример, даже интересно, что получится. Успехов. |
| Автор: Се ля ви 21.2.2005, 16:34 |
| Интеграция достаточно поверхностная - хотелось бы иметь возможность переадресации запросов на сервлеты и использование EJB, паттернов и прокладок к БД типа Hibernate - но вообще интересно уже и это. Кинте сюда линк из форума J2EE, что ли - а то "мужики-то не знают" Я вот совершенно случайно забрёл, просматривая репу Наставника... |
| Автор: skalex 9.3.2005, 09:50 |
| Вот еще немного информации: http://detail.phpclub.net/article/com_dotnet |
| Автор: BIRD 20.7.2005, 23:35 | ||
после всех выполненых действий (1-4) у меня выскакивает сообщение: Warning Unknown(): Unable to load dynamic libluary './php_java.dll' - Не найден указаный модуль. в php.ini у меня такие строки: [Java] java.class.path = "C:\PHP\extensions\php_java.jar;C:\myjava\package" java.home = "C:\Java\jdk1.5.0\bin\" java.library = "C:\Java\jdk1.5.0\jre\bin\server\jvm.dll" java.library.path = "C:\PHP\extensions\" в чем проблемка? |
| Автор: KSF 25.4.2006, 08:57 |
| А у меня при запуске примера выскакивает следующая ошибка - Apache.exe - Ошибка приложения. Инструкция по адресу "0x01d148a9" обратиласб к памяти по адресу "0x08010200". Память не может быть "written". Использую Apache2, php5. Что не так? |
| Автор: Opik 31.5.2006, 17:15 |
| Кто нить яву на линукс ставил? |
| Автор: Endeveit 6.6.2006, 12:59 |
| я ставил |
| Автор: Opik 7.6.2006, 13:00 |
| Endeveit, расскажи пож-та. А то я нашел способы только с back-end,ом, и то, какие то нерабочие (или я что то не так делал) Поделись впечатлениями, так сказать... |
| Автор: Endeveit 7.6.2006, 13:15 |
| да я собственно зашёл на http://java.sun.com/j2se/1.4.2/download.html, слил бинарник и запустил |
| Автор: nerezus 14.9.2006, 08:07 | ||
|
| Автор: pythonwin 24.10.2006, 09:35 |
| http://forum.vingrad.ru/topic-117168.html |
| Автор: Reptor 20.6.2007, 16:28 |
| конечно тема интересная но у меня вопрос а чем апплеты хуже или не подходят? Таже Java да ещё и Swing нормально работает |
| Автор: Oflashp 3.8.2007, 14:32 |
| Интересно. Но какой хостер в случае разработки приложения общего пользования будет включать JAVA поддержку? |
| Автор: Platon 29.10.2007, 22:40 | ||
| А у меня такой вопрос... Можно ли запускать межстраничное приложение сайта? Было бы круто если бы такая возможность была ^_^ Я иногда изъяснаюсь непонятно, поэтому еще раз: есть сайт, а у него работает свое внутреннее приложение. Добавлено через 1 минуту и 33 секунды И плюс еще
|
| Автор: gibbzy 25.4.2008, 20:14 |
| думаю немного не уместно испальзовать java интерфейсы в web приложениях ибо JVM стоит далеко не у всех пользователей для всего этого JS придумали ^^ |
| Автор: Sannis 25.4.2008, 23:06 |
| Подняли старую тему, да ещё и не знаете, что Java используют ещё и для server-side программирования ;) |
| Автор: Kakadu 11.5.2008, 15:12 |
| Народ! Неужели VJM стоит не у всех пользователей? P.S. Разбирался в примерах вначале темы. Так и не понял что делать, если у меня нет php_java.dll. |
| Автор: skyboy 11.5.2008, 16:12 |
| Kakadu, рачь о java на стороне сервера. разве в случае использования php на сервере и клиенту требуется скачивать и устанавливать РНР? а он тебе нужен? какая версия PHP? откедова брал? |
| Автор: Kakadu 11.5.2008, 19:28 |
| C Java всё понял. РНР 5.1.1. Брал из UniformServer 3.3 |
| Автор: Sannis 11.5.2008, 19:40 |
| Его убрали из PECL'а, видимо прохо шла разработка. Сейчас, вроде бы он, доступен на http://sourceforge.net/projects/php-java-bridge. Если у вас *nix, то ещё подробная статья нашлась: http://www.onlamp.com/pub/a/php/2001/06/14/php_jav.html, но всё-таки 2001 год. Можно ещё рискнуть попробывать запустить http://www.flydrivers.ru/dll-files/P/php_java.dll.html, но думаю он устарел. P.S. думаю стоит бросить эту затею... |
| Автор: Andrew_D 4.3.2009, 23:31 |
| Делаю все так, как указано выше. Но запустить не получается :((( Выдает ошибку на строчку: $system = new Java('java.lang.System'); Ошибка: Fatal error: Class 'Java' not found in Z:\home\localhost\w4\index.php on line 34 Что не так еще может быть ? |
| Автор: nerezus 6.3.2009, 02:35 |
| Хм, интересно ) Но смысл: проще тогда уж напрямую с джавой работать =) |
| Автор: pythonwin 6.3.2009, 06:40 | ||
наверное есть смысл если есть два готовых или почти готовых проекта, которые нужно "связать" между собой |
| Автор: salamanq 7.12.2009, 17:59 |
| у меня денвер стоит, в папку пхп5 на виртуальном диске в директорию ext поставил пекл. в пхп.ини добавил [Java] java.class.path = "Z:\usr\local\php\ext\php_java.jar;E:\myjava\packages\" java.home = "E:\Java\jdk1.6.0_16\bin\" java.library = "E:\Java\jdk1.6.0_16\bin\jre\bin\server\jvm.dll" java.library.path = "Z:\usr\local\php\ext\" соо-но диск Z виртуальный созданный денвером, но выпадает ошибка запускаю старт денвер выпадает окно: приложение или библиотека Z:\usr\local\php\ext\php_java.jar не является образом программы для windows nt .... что делать.... |
| Автор: SamDark 8.12.2009, 18:53 |
| Народ, есть готовое решение: http://www.caucho.com/resin-3.0/quercus/ |
| Автор: dobrolub 18.12.2009, 08:27 |
| уже есть версия 4.0.2. обратите внимание на performance benchmarks http://www.caucho.com/articles/quercus.pdf вот простейший пример, качаешь резину, ставишь, запускаешь и в директорию webapps/ROOT кладешь простейший php test.php <?php> echo "Hello World!"; ?> и всё у резинового php куча преимуществ, кластеризация делается на ура, быстродействие и др. да и инсталляция проще. |
| Автор: Mishelik 8.1.2010, 02:27 |
| пробовал настроить на php-5.2.9, Сделал все как написано в начале темы. //php_java.jar как я понял это любое своё приложение?.. Но phpinfo() не показывает поддержку java,и программа далее $system = new Java('java.lang.System'); не выполняется ,но ошибки тоже нет.. В чем может быть проблема? |