JEP 125: Network Interface Aliases, Events, and Defaults
Псевдонимы, события и настройки по умолчанию для сетевых интерфейсов
| Ответственный | Michael McMahon |
| Тип | Feature |
| Область | SE |
| Статус | Closed / Withdrawn |
| Компонент | core-libs / java.net |
| Обсуждение | net dash dev at openjdk dot java dot net |
| Трудоёмкость | M |
| Длительность | M |
| Одобрен | Brian Goetz |
| Создан | 2011/09/23 20:00 |
| Обновлён | 2017/09/04 15:30 |
| Задача | 8046115 |
Аннотация
Расширить существующие API сетевых интерфейсов, добавив поддержку псевдонимов интерфейсов, событий перехода в состояние up/down и предпочтений интерфейсов по умолчанию.
Мотивация
Благодаря этим улучшениям Java SE сможет хорошо работать на устройствах с несколькими типами сетевых интерфейсов (например, одновременно wifi и сотовая связь), состояние которых меняется со временем в зависимости от доступных сетей.
Описание
-
Определить поддержку псевдонимов, чтобы к сетевым интерфейсам можно было обращаться по общеизвестным именам, например «cellular», а не по именам устройств ОС, зависящим от аппаратной платформы.
-
Предоставить возможность отслеживать переходы сетевых интерфейсов в состояние up/down.
-
Предоставить API для задания списка из одного или нескольких сетевых интерфейсов по умолчанию, которые будут использоваться при создании сокетов, если создаваемый сокет не привязан к определённому локальному адресу (а значит, и к сетевому интерфейсу). Это нужно сделать так, чтобы действие распространялось и на сокеты, создаваемые библиотечным кодом от имени приложения. Иначе говоря, если приложение использует, скажем, клиентский API JAX-RS, то на сокеты, создаваемые реализацией JAX-RS, должен влиять этот API. Если передан список из нескольких интерфейсов, его следует рассматривать как упорядоченный список предпочтений. В идеале этот API должен быть устроен так, чтобы разные приложения, работающие в одной VM, могли иметь разные настройки сетевых интерфейсов по умолчанию.
Зависимости
Решение этой задачи может зависеть от некоторой абстракции приложения более высокого уровня, определённой в Java SE 8. В противном случае оно будет зависеть от какой-либо существующей сущности, например от загрузчиков классов.
Влияние
- Переносимость: на данном этапе неясно, насколько легко будет это реализовать и насколько реализация будет зависеть от сервисов, доступных в конкретных операционных системах.