faqs.org.ru

 Главная > Программирование > Web-программирование >

FAQ по языку Java

Секция 7 из 7 - Предыдущая - Следующая
Все секции - 1 - 2 - 3 - 4 - 5 - 6 - 7

        g.drawImage(image,10,400,this);        // эта стpока работает
         // а эта не работает -
        g.drawImage(cropped_image,400,15,this);
        }
      }


cropped_image не будет готов для рисования, но когда он полностью
создастся, пpоизойдет вызов repaint(), а там еще pаз cropped_image
создается (ууу, батенька...) и так далее.
(Обpатите внимание на то, что создание объектов подобно тому, как в методе
paint(), является очень плохим стилем. Так как это будет пpоисходить
довольно часто, pаботы по сбоpке мусоpа у jvm будет много.
Чтобы обойти эту проблему, Вы можете I) добавить все такие изображения в
MediaTracker и вызывать метод waitForAll(). II) выполнить свой собственный
ImageObserver интерфейс и подождать когда метод imageUpdate() будет вызван
со значением ALLBITS/FRAMEBITS. I) легче, но II) рекомендуется, из-за
появившихся данных о том, что MediaTracker не работает в некоторых средах.
Смотрите также в этом FAQ:

   * Смотрите также Q13.12
   * Посмотрите Q6.4 для примеров как переиспользовать объекты.

*(Часть 14) Как мне записать звук в апплете?

[*] Если у Вас Win95/NT, Вы можете использовать SoundBite - Аудиио Запись в
Апплетах См. http://www.scrawl.com/store/
Он обеспечивает простой доступ к аудио данным в массивах:
short[] left, right;

*(Часть 14) Java поддерживает PNG? Да. PNG - Portable Network Graphics -
обеспечивает беспатентную замену для GIFов и TIFFов. Если Вы сохраняете в
GIF, то не забудьте оплатить авторский гонорар фирме Unisys - см. их
страницу http://www.unisys.com/LeadStory/lzwfaq.html. Этот патент обясняет
почему GIFы - это плохой выбор для создания интернетовских изображений.

PNG формат определен в RFC 1950, 1951, 2083, не обремененных лицензиями или
патентами. См. также спецификацию PNG-1.1 на
ftp://swrinde.nde.swri.edu/pub/png/documents.

PNG формат поддерживается Java Advanced Imaging API, который является
частью Java 1.2 media API.

                       ------------------------------

15. Работа в сети и распределенные объекты

                                  Статьи о RMI

  1. (Часть 15) Должен ли я вместо RMI использовать CORBA? Или использовать
     DCOM? Или чего-нибудь еще?

     [*] Если Ваши распределенные программы целиком написаны на Java, то
     RMI обеспечивает более простой механизм, который позволяет пересылку
     данных, исходящих от реальных Java объектов, и автоматическую "сборку
     мусора" удаленных объектов.
     Если Вам нужно подключиться к системе на C++ (или другом языке) или
     Вам нужны специфические CORBA службы, то CORBA - Ваш выбор.
     В июле 1997 года Sun анонсировала тот факт, что RMI начала более тесно
     работать с CORBA. Sun просто добавила в RMI транспортный уровень IIOP
     для поддержки взаимодействия с CORBA. Java программы могут
     использовать RMI для доступа к CORBA объектам через IIOP, - протоколе
     основанном на CORBA и разработанном OMG (Object Management Group). Это
     очень хорошая новость для тех, кто строит гетерогенные системы
     масштаба предприятия, хотя нужны некоторые добавления к IIOP для
     поддержки вещей, которые использует RMI.
     Деятели из Microsoft пытались продвигать DCOM заявляя о том, что RMI
     изменяется или доживает последние дни. Это в корне неверно. RMI API
     остается неизменной в своей текущей форме. Использование DCOM
     ограничивает Вас тем, что код работает только на платформе Wintel, и
     полностью отрицает философию Java "write once, run anywhere"
     ("написано однажды, исполняется везде"). Вы должне будете
     перекомпилировать Ваш DCOM код, чтобы он работал на другой
     Microsoft'овской платформе, типа Compaq (бывшего DEC) Alpha. Вы должны
     остерегаться использования непереносимого, завязанного на одном
     производителе кода. DCOM/DNA имеет ограничения для использования на
     предприятии.
     Другие сайты:
          http://www.javaworld.com/javaworld/jw-10-1997/jw-10-corbajava.html
          это хорошее введение в CORBA в мире Java.
          http://www.objenv.com/cetus сравнение CORBA/RMI.

  2. (Часть 15) Как мне заставить работать RMI между разными доменами?

     [*] Все ответы на вопросы, относящиеся к прокси приведены ниже. Вы
     должны сообщить программе где искать сервер. В этом случае Вы должны
     запускать клиента с опцией:
     -Djava.rmi.server.hostname=hostname.domainname

  3. (Часть 15) Мне кажется, что RMI останавливает свою работу в JDK 1.1.
     Почему такое происходит?

     [*] Похоже что изменились правила того, где клиент ищет stub
     класс(класс-заглушку), делая необходимым сброс Вашего class path на
     клиенте после старта RMI registry. В частности, похоже на то, что rmic
     не был обновлен для нового соглашения "don't need $CLASSPATH for
     current dir" ("не нужен $CLASSPATH для текущего каталога"), в то время
     как копмпилятор был обновлен. Вам лучше явно снять установки
     classpath.
     Другие сайты:
     Есть несколько очень хороших источников от Sun, которые охватывают
     много простых и сложных RMI проблем.
        o Конечно, документация:
          http://java.sun.com/products/jdk/1.1/docs/guide/rmi/index.html
        o FAQи посвященные RMI и сериализации объектов
          http://java.sun.com/products/jdk/rmi/faq.html
        o Список рассылки RMI-USERS@JAVASOFT.COM, архив которого находится
          на http://chatsubo.javasoft.com/email/rmi-users/ Посетите архив!

  4. (Часть 15) После определенного числа соединений клиентов RMI к серверу
     (55 на моей системе), последующие попытки RMI соединения неудачны.
     Почему?

     [*] Вы использовали лимит по умолчанию в 64 дескриптора открытых
     файлов. Попытайтесь увеличить лимит в Вашей ОС.
     Существует практический лимит RMI соединений, который налагается
     масштабируемостью вииртуальной машины и производительностью
     сериализации объектов. Это все исправлено в JDK 1.2. Актуальное число
     активных клиентов, которое Вы можете обслуживать будет зависеть от
     суммарной загрузки (workload mix) (т.е. от числа клиентов, как часто
     они обращаются к серверу, и сколько работы выполняется при одном
     обращении).

  5. (Часть 15) Я использую RMI под Win95, и вызов Naming.lookup()
     выполняется очень долго. Как от этого избавиться?

     [*] (См. также первый ответ в нижеследующей секции, и отметьте, что
     эта доработка в Windows у некоторых никогда не работает) Попытайтесь
     добавить запись о машине в Ваш файл "hosts". Обычно этот файл
     называется c:\windows\hosts (если он не существует, то должен быть
     файл c:\windows\hosts.sam). Файл hosts ищется стеком TCP/IP перед
     обращением к DNS, таким образом добавление записи может значительно
     ускорить Ваши поиски (lookups). Файл hosts используется чтобы отразить
     цифровые IP адреса на символьные. Чтобы Для того, чтобы указать имя
     хоста "localhost" с адресом 127.0.0.1 (IP loopback адрес) добавьте
     следующую строчку в Ваш файл hosts.

     127.0.0.1 localhost

                            Работа с сетью в Windows

Секция 7 из 7 - Предыдущая - Следующая

Вернуться в раздел "Web-программирование" - Обсудить эту статью на Форуме
Главная - Поиск по сайту - О проекте - Форум - Обратная связь

© faqs.org.ru