Почему URI разрешает пропуск протокола (а URL - нет)?
В википедии Схема (и даже путь) кажутся обязательными компонентами URI:
Общий синтаксис URI состоит из иерархической последовательности из пяти
Компоненты: [8]
URI = схема : [// авторитет] путь [? Запрос] [# фрагмент]
Или, по умолчанию, отсутствует протокол (например, http)? Я не нашел ничего подобного в документах.
new URI("my.html"); // 1
new URI("xabc:my.html"); // 2
new URL("my.html"); // 3
new URL("xabc:my.html"); // 4
По поводу "обязательного" пути - ОК, есть наклонный URI. Но почему допускается отсутствующий протокол (он должен присутствовать даже для обязательного URI, который должен быть абсолютным)
Я мог бы понять, что относительно URL / URI не требуют протокола (<img src="/images/pic.png">
), но URL также дает время выполнения java.net.MalformedURLException: no protocol
в этом случае (в то время как URI не).