
Зачем нужен
RandomAccessFile
?RandomAccessFile
— класс пакета Java IO API, он позволяет перемещаться по файлу, читать из него или писать в него, как вам будет угодно. Вы также сможете заменить существующие части файла, речь идет о обновлении содержимого файла, а точней о обновлении фрагмента файла. Это невозможно сделать с помощьюFileInputStream
илиFileOutputStream
, ноRandomAccessFile
даст вам эту возможность.Что будет если файл, откуда читает
RandomAccessFile
, не существует?Будет
FileNotFoundException
Что будет если файл, куда пишет
RandomAccessFile
, не существует?Создаст новый и запишет в него.
Зачем нужен класс
StringReader
?The Java.io.StringReader class is a character stream whose source is a string.
Представляет собой поток символов, чей источник называется строкой
Зачем нужен класс
StringWriter
?public class StringWriter
extends Writer
A character stream that collects its output in a string buffer, which can then be used to construct a string.
Closing a StringWriter has no effect. The methods in this class can be called after the stream has been closed without generating an IOException.
Поток символов, собирающий свой поток в буфер строк, которые затем могут быть использованы для создания строки.
Зачем нужен класс
ByteArrayStream
?Итак,
ByteArrayInputStream
иByteArrayOutputStream
.Эти классы по сути чем-то похожи на
StringReader
и. Только StringReader
читал символы (char) из строки (String), аByteArrayInputStream
читает байты из массива байт (ByteArray).StringWriter
писал символы (char) в строку, аByteArrayOutputStream
пишет байты в массив байт у него внутри. При записи вStringWriter
строка внутри него удлинялась, а при записи вByteArrayOutputStream
его внутренний массив байт тоже динамически расширяется.Зачем нужен класс
PrintStream
? Назовите места, где он используется?Класс
PrintStream
был придуман для читабельного вывода информации. Он практически весь состоит из методовprint
иprintln
.Зачем нужен
DynamicProxy
?В Java есть специальный класс (java.lang.reflect.Proxy), с помощью которого фактическиможно сконструировать объект во время исполнения программы (динамически), не создавая для него отдельного класса.
Как работает RMI?
RMI расшифровывается Remote Method Invokation – удаленный вызов методов. Или другими словами RMI – это механизм, который позволяет объекту в одной Java-машине вызывать методы объекта в другой Java-машине, даже если они находятся на разных компьютерах, в разных странах, на разных сторонах земного шара.
Традиционный подход к выполнению кода на других машинах, разнесенных по сети может смутить из-за своей нудной и склонной к ошибкам реализации. Лучший способ рассмотреть эту проблему состоит в предположении, что некоторые объекты располагаются на другой машине, и что вы можете посылать сообщения этим удаленным объектам и получать результат, как будто они располагаются на вашей локальной машине. Это упрощение в точности является тем, что позволяет делать Удаленный Вызов Методов (RMI) в Java.
Вот статья по созданию собственной реализации RMI: Удаленный вызов методов (RMI)
Объекты каких типов можно передавать по RMI?
Объекты должны имплементировать интерфейс
Serializable
Remote method Invocation — механизм, который позволяет вызывать метод удалённого объекта. Согласно ему, все операции по подготовке и передаче данных инкапсулируются в вызываемом методе клиентского объекта-заглушки (stub). Сам же вызов метода ничем не отличается от вызова метода обычного локального объекта, за небольшим исключением:
- локальные объекты передаются по значению (копии);
- при передаче удалённого (
Remote
) объекта, если он экспортирован, передаётся stub этого объекта; - передаваемые объекты должны быть
Serializable
; - кроме всех прочих исключительных ситуаций, при вызове удалённого метода может возбуждаться исключение
RemoteException
(ошибки маршализации/демаршализации, передачи данных и другие возможные ошибки протокола);
Так же нужно отметить, что при вызове метода мы работаем с удалённым интерфейсом, а не с удалённым классом.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
System.out
, являющаяся экземпляром этого класса, которую мы испольуем для печати информации в консоль.) 10. Объекты каких типов можно передавать по RMI? Я здесь ответил по-другому, судя из лекций, которые я прочитал. По RMI можно передавать (публиковать) объекты, поддерживающие интерфейс Remote. При этом аргументы вызываемых методов у этих объектов должны поддерживать интерфейс Serializable, чтобы их можно было упаковать и распаковать при передаче по сети.