openjdk.ruOpenJDK на русском

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 и сотовая связь), состояние которых меняется со временем в зависимости от доступных сетей.

Описание

  1. Определить поддержку псевдонимов, чтобы к сетевым интерфейсам можно было обращаться по общеизвестным именам, например «cellular», а не по именам устройств ОС, зависящим от аппаратной платформы.

  2. Предоставить возможность отслеживать переходы сетевых интерфейсов в состояние up/down.

  3. Предоставить API для задания списка из одного или нескольких сетевых интерфейсов по умолчанию, которые будут использоваться при создании сокетов, если создаваемый сокет не привязан к определённому локальному адресу (а значит, и к сетевому интерфейсу). Это нужно сделать так, чтобы действие распространялось и на сокеты, создаваемые библиотечным кодом от имени приложения. Иначе говоря, если приложение использует, скажем, клиентский API JAX-RS, то на сокеты, создаваемые реализацией JAX-RS, должен влиять этот API. Если передан список из нескольких интерфейсов, его следует рассматривать как упорядоченный список предпочтений. В идеале этот API должен быть устроен так, чтобы разные приложения, работающие в одной VM, могли иметь разные настройки сетевых интерфейсов по умолчанию.

Зависимости

Решение этой задачи может зависеть от некоторой абстракции приложения более высокого уровня, определённой в Java SE 8. В противном случае оно будет зависеть от какой-либо существующей сущности, например от загрузчиков классов.

Влияние

  • Переносимость: на данном этапе неясно, насколько легко будет это реализовать и насколько реализация будет зависеть от сервисов, доступных в конкретных операционных системах.