Книжка про Git: https://git-scm.com/book/ru/v2
Краткая шпаргалка по Git'у: http://rogerdudler.github.io/git-guide/index.ru.html
Еще круче - интерактивный курс: https://githowto.com/ru
Пример реализации клиент-сервер RMI: https://javatalks.ru/topics/8059
Простой видосик про RMI + SecurityManager: https://www.youtube.com/watch?v=YeQX_sbm10k
====== камент Марины ========
Для комментариев:
1. Создание класса для использования "сервером" и "клиентом", который должен реализовать интерфейс.
2. Создание "Сервера" (я бы так назвала), где расшаривается (англ. share, делиться (имуществом)) наш объект:
- создается экземпляр класса (НАШ ОБЪЕКТ).
- создается реест (сюда добавляются все объекты для расшаривания) и прописывается порт.
- создается заглушка (объект, кот содержит НАШ ОБЪЕКТ со всем его добром - методами, полями...
заглушка принимает запрос от клиента, после чего отправляет ему результат/исключение.
- в реест заносится уникальное имя и заглушка.
Дальше клиент работает только с реестром, в котором находятся наши заглушки (в них же НАШИ ОБЪЕКТЫ) - вроде бы все понятно!
3. Создание "Клиента", где принимается реест для работы:
- создается реестр, а точнее получаем его по тому же порту, что прописывали в сервере.
- создаем ссылочную переменную с типом интерфейса (точно такого же как и у сервера, что важно)
и получаем ПРОКСИ-ОБЪЕКТ (типа НАШ ОБЪЕКТ и можем с ним работать как
вздумается).
- вызываем нужные нам методы нашего прокси-объекта, строим логику с его участием ну и все
такое подобное.
Как-то так у меня сложилось в голове по этой теме.
Вроде все логично: создали - расшарили - использовали.