Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Взаимодействие PHP с Java. А если другие языки PHP + ...? 
:(
    Опции темы
Наставник
  Дата 28.12.2004, 20:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 4
Всего: 15



Тут повнимательнее покопался с 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, за что большое спасибо, добавлены собственные комментарии). Итак:

Код

<?php
// создаем ссылку на встроенные класс java.lang.System пакета java.lang  (по умолчанию всегда включен в  
Java)
$system = new Java('java.lang.System');

// вызываем методы класса System
echo 'Java version=' . $system->getProperty('java.version') . '<br />';
echo 'Java vendor=' . $system->getProperty('java.vendor') . '<br />';
echo 'OS=' . $system->getProperty('os.name') . ' ' .$system->getProperty('os.version') . ' on '  
.$system->getProperty('os.arch') . ' <br />';

// настраиваем формат вывода даты, передавая в конструктор класса SimpleDateFormat параметры
$formatter = new Java('java.text.SimpleDateFormat',"EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

echo $formatter->format(new Java('java.util.Date'));
echo "<br /> Это работает? Как не странно работает... :--))";
?>

сохраняем в файле phpplusjava.php
в результате вызвав этот php файл в окне браузера должно отобразиться примерно следующее:

Код

Java version=1.3.1
Java vendor=Sun Microsystems Inc.
OS=Windows 2000 5.1 on x86
вторник, Декабрь 28, 2004 at 4:37:39 PM Greenwich Mean Time
Это работает? Как не странно работает... :--))

5. Теперь разработает свой очень простой класс и свяжем с PHP

Код

public class Sum {

 public String sumString(double x, double y)
 {
   double addsum = x + y;
   String str = "Sum is  " + addsum;
   return str;
 }
}


сохраняем в папке e:\myjava\packages и называем Sum.java,
далее запускаем cmd, компилируем javac sum.jsva
в результате получаем байт-код в виде Sum.class (с которым в последствии и работает, при этом код скрыт, если даже Apache по какой-либо причине сглючит).

Далее создаем фаул, под названием javatest.php в котором пишем следующее

Код

<?
  $sum = new Java("Sum");
  $value1 = 10;
  $value2 = 11;

  echo $sum->sumString($value1, $value2);
  echo '<br \>И это тоже работает :-)) ';
?>

в результате вызвав этот php файл в окне браузера должно отобразиться примерно следующее:

Код

Sum is 21.0
И это тоже работает :-))


Да уж, вроде все, принцип показал. Спасибо кто это ещё читает. smile

Поскольку я немного удивлен, такой поддержкой со стороны PHP, мой вопрос заключается в следующем, может PHP взаимодействует не только с Java?

Всем спасибо.

Это сообщение отредактировал(а) Наставник - 28.12.2004, 20:33


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
Opik
Дата 28.12.2004, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



интересно smile
Добавлено @ 21:58
Можно побольше примеров и инфы?
PM MAIL Skype   Вверх
Наставник
Дата 28.12.2004, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 4
Всего: 15



Цитата(Opr @ 28.12.2004, 21:56)
Можно побольше примеров и инфы?


Да без проблем, выложу где-то в 4:00 утра.

но у меня есть вопрос, может кто-нибудь знает ответ.

Поскольку я САМ немного удивлен, такой поддержкой со стороны PHP, мой вопрос заключается в следующем, может PHP взаимодействует не только с Java?

Это сообщение отредактировал(а) Наставник - 28.12.2004, 22:05


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
Opik
Дата 28.12.2004, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Тока желательно примеры не из документации, а из книги, а то первая доспупна всем smile
Ты показал примеры использования т.е вызова Java функций из PHP, можно ещё показать как например получить информацию с аппета в PHP код.

Спасибо.

Это сообщение отредактировал(а) Opr - 28.12.2004, 22:12
PM MAIL Skype   Вверх
Opik
Дата 28.12.2004, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Есть взаимодейсвие с .NET (http://www.devarticles.com/c/a/PHP/Using-t...embly-in-PHP/2/)
Только добавлю, что на данный момент эти библиотеки экспериментальные...

Это сообщение отредактировал(а) Opr - 28.12.2004, 23:28
PM MAIL Skype   Вверх
Наставник
Дата 28.12.2004, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 4
Всего: 15



1. Насчет книги, в ней было написано про взаимодействие PHP + Java всего 1 страница, пример который привел там автор, был не верно написан, сам код на Java.
2. ссылка на дополнительный пример взаимодействия java и php http://www.onlamp.com/pub/a/php/2001/06/14...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
Цитата(Opr @ 28.12.2004, 22:19)
Есть взаимодейсвие с .NET (http://www.devarticles.com/c/a/PHP/Using-the-.NET-Assembly-in-PHP/2/)


ЗАМЕЧАТЕЛЬНО, спасибо за ссылку... разбираюсь. smile


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
skalex
Дата 29.12.2004, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 1
Всего: 23



Очень интересно... Действительно работает...
Только при запуске примера из документации к PHP у меня вылетает ошибка:
Код
can't open c:\java\j2sdk\lib\tzmappings.
ZoneInfo: c:\java\j2sdk\lib\zi\ZoneInfoMappings (The system cannot find the path specified)

Такого каталога (или файла) у меня действительно нет... Но что это за ошибка? Java сама по себе у меня работает без претензий (версия 1.4.2_04).
Далее идет результат работы скрипта.
Вот мои настройки в php.ini
Код

java.class.path = "c:\php\extensions\php_java.jar"
java.home = "c:\java\j2sdk"
java.library = "c:\java\j2sdk\jre\bin\server\jvm.dll"
java.library.path = "c:\php\extensions"


P.S.
Насколько я знаю, в java.class.path надо еще добавлять путь [каталог установки java]/jre/lib/rt.jar (чтобы получить доступ к пакетам java.*, javax.* и т. д.).
PM   Вверх
Наставник
Дата 29.12.2004, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 4
Всего: 15



1. Думаю Вам надо прописать следующий путь
java.home = "c:\java\j2sdk\bin"
вместо
Цитата(Mace @ 29.12.2004, 09:47)
java.home = "c:\java\j2sdk"

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

Успехов.



--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
skalex
Дата 29.12.2004, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 1
Всего: 23



Да все это мне понятно... Когда я попробовал другой пример (классический HelloWorld) ошибка не появилась...
Интересный факт: если настройка java.home не установлена, то все равно все работает smile smile smile .
PM   Вверх
Наставник
Дата 29.12.2004, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 4
Всего: 15



Цитата(Mace @ 29.12.2004, 09:47)
Только при запуске примера из документации к PHP у меня вылетает ошибка:

Если вы говорите, про пример, который приведен при создании поста, то у меня все работало... хм, странно...
Цитата(Mace @ 29.12.2004, 15:43)
если настройка java.home не установлена

очень интересно, может быть PHP читает системную переменную окружения PATH, в которой у вас прописан путь к c:\java\j2sdk\bin".

Это сообщение отредактировал(а) Наставник - 29.12.2004, 15:50


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
skalex
Дата 29.12.2004, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 1
Всего: 23



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

Я скопировал пример из документации. И кстати, запускал из командной строки без Apache.

Даже без переменной окружения работает!
PM   Вверх
Наставник
Дата 29.12.2004, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 4
Всего: 15



Цитата(Mace @ 29.12.2004, 17:32)
Я скопировал пример из документации. И кстати, запускал из командной строки без Apache.

Даже без переменной окружения работает!


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


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
skalex
Дата 29.12.2004, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 1
Всего: 23



Цитата
Вообще замечательно значит Apache не нужен

Собственно так и должно быть... smile

А зачем ему javac ??? Ведь все классы то уже должны быть откомпилированы....
PM   Вверх
Наставник
Дата 29.12.2004, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 4.11.2004

Репутация: 4
Всего: 15



Цитата(Mace @ 29.12.2004, 18:19)
А зачем ему javac ???

описался. имел ввиду java.


--------------------
Богатство языка определяет широту мысли
Персональный сайт >>
PM MAIL WWW   Вверх
skalex
Дата 30.12.2004, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 1
Всего: 23



Я попробовал даже создать простейшее окно с помощью PHP+Java.
Код TFrame.java:
Код
import javax.swing.*;
public class TFrame extends JFrame {
  public TFrame(String title) {
     super(title);
  }
}


Код TFrame.php
Код
$obj = new Java('TFrame', "Test");
$obj->setDefaultCloseOperation(2);
$obj->setSize(100, 100);
$obj->setVisible(true);


Это работает, окно появляется но сразу же пропадает... smile Может это связано с тем, что я запускаю из командной строки (просто сейчас нет возможности попробовать запустить в браузере).
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Избранное | Следующая тема »


 




[ Время генерации скрипта: 0.1649 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.