Новые книги

Если вы интересуетесь гибкими методологиями по управлению проектами и разработке продуктов, значит, это практическое руководство идеально вам подходит. Борис Вольфсон уже много лет работает в этой сфере, а в данной книге делится своим опытом, который может изменить вашу работу, подход к работе в вашей IT-команде, а со временем и во всей вашей компании.

От других подобных книг эта отличается двумя факторами: сочетанием теории и практики и описанием самых различных аспектов создания продуктов – от управления до разработки и аналитики. В рамках теоретической части по управлению проектами и продуктом описывается современное состояние методологии Scrum и основы Kanban. Практическая часть посвящена бизнес-моделированию, управлению требованиями, аналитикой требований, управлению командами, оценкой сроков, управлению рисками, инженерным практикам разработки (по большей части из экстремального программирования), контролю и обеспечению качества, внедрению и масштабированию Scrum.

Начните применять на практике гибкие методологии, чтобы успешно управлять проектами и создавать продукты!
Автор книги — выдающийся ученый, физик и кибернетик, создатель языка Рефал и нового направления в программировании, связанного с преобразованием программ. Известен широкому кругу отечественных читателей как составитель сборника “Физики шутят”. Вынужденный покинуть Родину, с 1977 года он живет и работает в США.

В этой книге В. Ф. Турчин излагает свою концепцию метасистемного перехода и с ее позиций прослеживает эволюцию мира от простейших одноклеточных организмов до возникновения мышления, развития науки и культуры. По вкладу в науку и философию монография стоит в одном ряду с такими известными трудами как “Кибернетика” Н. Винера и “Феномен человека” П. Тейяра де Шардена.

Книга написана ярким образным языком, доступна читателю с любым уровнем подготовки. Представляет особый интерес для интересующихся фундаментальными вопросами естествознания.

Замечания по электронной версии книги присылайте, пожалуйста, членам редакционного совета. Спасибо!

Java

Учебник РНР
Назад Вперёд

XLVIII. Java

Есть два способа связать PHP и Java: вы можете либо интегрировать PHP в среду Java Servlet, что является более стабильным и эффективным решением, либо интегрировать поддержку Java в PHP. Первый предоставляется SAPI-модулем, который является интерфейсом с Servlet-сервером, второй - РНР-расширением Java.

PHP 4 ext/java предоставляет простые и эффективные средства для создания и вызова методов Java-объектов из PHP. JVM создаётся с использованием JNI, и всё запускается in-process. Встроенные инструкции для ext/java можно найти в файле php4/ext/java/README.

Пример 1. Java
<?php
  // получить экземпляр Java-класса java.lang.System в PHP
  $system = new Java('java.lang.System');

  // демонстрируется доступ к свойствам
  print 'Java version='.$system->getProperty('java.version').' <br>';
  print 'Java vendor=' .$system->getProperty('java.vendor').'  <br>';
  print 'OS='.$system->getProperty('os.name').' '.
              $system->getProperty('os.version').' on '.
              $system->getProperty('os.arch').' <br>';

  // пример java.util.Date
  $formatter = new Java('java.text.SimpleDateFormat',
                        "EEEE, MMMM dd, yyyy 'at' h:mm:ss a zzzz");

  print $formatter->format(new Java('java.util.Date'));
?>
Пример 2. AWT
<?php
  // Этот пример предназначается только для запуска как CGI.

  $frame  = new Java('java.awt.Frame', 'PHP');
  $button = new Java('java.awt.Button', 'Hello Java World!');

  $frame->add('North', $button);
  $frame->validate();
  $frame->pack();
  $frame->visible = True;

  $thread = new Java('java.lang.Thread');
  $thread->sleep(10000);

  $frame->dispose();
?>

Примечания:

  • new Java() создаст экземпляр класса, если подходящий конструктор доступен. Если параметры не передаются, используется конструктор по умолчанию, так как он предоставляет доступ к классам вроде java.lang.System, которые экспонируют большую часть своей функциональности через static-методы.

  • При доступе к члену экземпляра сначала ищутся свойства "боба"/bean (компонента), а затем - public-поля. Иначе говоря, print $date.time сначала пытается разрешиться как $date.getTime(), а затем как $date.time.

  • Доступ к статическим членам и членам экземпляра может быть выполнен на объекте с тем же самым синтаксисом. Кроме того, если java-объект имеет тип java.lang.Class, то можно получить доступ также к static-членам класса (полям и методам).

  • Возникающие исключения выдают предупреждения PHP и NULL-результаты. Появление предупреждений можно подавить с помощью префиксирования вызовов методов знаком "@". Следующие API можно использовать для запрашивания и восстановления последней ошибки:

  • Решение проблемы перегрузки в общем является большой проблемой из-за различий в типах между двумя языками. PHP-расширение Java реализует простую, но довольно эффективную метрику для определения того, какая перегрузка подходит более всего.

    Кроме того, имена методов в PHP не чувствительны к регистру символов, потенциально увеличивая количество перегрузок, из которых делается выборка.

    После выбора метода выполняется если необходимо, приведение параметров, возможно, с потерей данных (пример: числа двойной точности с плавающей точкой будут конвертированы в boolean).

  • По традиции в PHP массивы и хэш-таблицы могут взаимозаменяться. Обратите внимание, что хэш-таблицы в PHP могут индексироваться только целыми числами или строками, и что массивы примитивных типов Java не могут быть рассеяны/sparse. Также заметьте, что эти конструкции передаются по значению, поэтому могут быть затратными в плане памяти и времени.

sapi/servlet построен на механизме, определённом расширением ext/java, что обеспечивает запуск всего процессора PHP как сервлета. Основным преимуществом этого способа, в отличие от PHP, является то, что web-серверы, поддерживающие сервлеты, обычно очень заботятся о пулах и повторном использовании JVM. Инструкции построения для модуля Servlet SAPI можно найти в файле php4/sapi/README.

Примечания:

  • Поскольку предполагается, что этот код должен иметь возможность запуска на любой машине сервлетов, он был протестирован только на Apache'вском Jakarta/tomcat. Мы приветствуем также сообщения о дефектах, успехах и/или патчах, необходимых для работы этого кода на других машинах.

  • PHP имеет привычку менять рабочую директорию. sapi/servlet может вернуть в прежнюю, но, пока PHP работает, машина сервлетов не сможет загрузить какие-либо классы из CLASSPATH, которые специфицированы с использованием относительного синтаксиса директорий, или найти рабочую директорию, используемую для задач администрирования и компиляции JSP.

Содержание
java_last_exception_clear - очищает последнее Java-исключение
java_last_exception_get - получает последнее Java-исключение

Назад Оглавление Вперёд
ircg_whois Вверх java_last_exception_clear