Сериализация Пойдет С Java – Когда-Нибудь


Марк Рейнхольд сказал участникам конференции DevoxxUK, что у Oracle действительно есть долгосрочная цель удалить сериализацию из языка, но когда именно, менее ясно.

Отвечая на вопрос на сессии под названием “Спросите архитектора”, Рейнхольд, главный архитектор группы платформ Java в Oracle, сказал::

“Сериализация была ужасной ошибкой в 1997 году. Некоторые из нас пытались бороться с ним, но он вошел”

Он сказал, что команда разработчиков называет сериализацию подарком, который продолжает давать с точки зрения уязвимостей, и что, хотя у него не было точной статистики, чтобы передать:

“по крайней мере треть всех уязвимостей Java связана с сериализацией, это может быть более половины. Это удивительно богатый источник уязвимостей, не говоря уже о нестабильности”

Сериализация объектов Java означает преобразование состояния объекта в поток байтов, чтобы поток байтов можно было вернуть обратно в копию объекта. Он также может быть использован для восстановления графа объектов из потока.

Этот вопрос был задан на сессии в DevoxxUK, наряду с другими поисковыми вопросами о Java, ее функциях и будущем:

Рейнхольд сказал, что цель, безусловно, состоит в том, чтобы избавиться от сериализации в долгосрочной перспективе. Тем временем Oracle приняла меры, чтобы сделать использование сериализации более безопасным. Они добавили возможность фильтрации, так что если вы используете сериализацию в сети и должны принимать ненадежные потоки данных сериализации, у вас есть способ отфильтровать классы, которые они упоминают, чтобы вы могли, по крайней мере, попытаться защитить себя.

Рейнхольд продолжал::

“мы определенно должны что-то с этим сделать. Сериализация хрупка, она проникает в личное поле, нарушает инвариантность конструктора, это ужасно во многих отношениях. Единственное, что в нем привлекательно, – это то, что он прост в использовании в простых случаях использования”.

Он также сказал, что это очень долгосрочный план и цель. Это часть проекта Amber, который, по словам группы OpenJDK, имеет целью изучение и инкубацию небольших,ориентированных на производительность функций языка Java, включая остатки лямбда, сопоставление шаблонов, синтаксис локальных переменных для параметров лямбда, выражения переключения и необработанные строковые литералы. Рейнхольд сказал:

“Как только у нас будут записи, Java-версия классов данных, тогда это часть долгосрочного видения, чтобы иметь новую небольшую чистую структуру сериализации в платформе, которая может принимать график записей. Затем вы сможете подключить механизм сериализации по вашему выбору, независимо от того, хотите ли вы JSON, XML или YAML, вы можете подключить механизм, чтобы получить нужный формат, и сериализовать записи очень безопасным способом, потому что записи не допускают инвариантности сериализации.”

Однако Рейнхольд говорит, что нет смысла спрашивать его, в каком выпуске произойдет изменение, потому что он не знает. На данный момент совет заключается в том, что если вы собираетесь использовать сериализацию, это более или менее приемлемо, если вы делаете это закрытым способом и знаете, откуда поступают потоки. В общем, вам лучше использовать JSON, XML или что-то еще. Другую сессию Рейнхольда в DevoxxUK на тему “Java в 2018 году: изменение-единственная константа” также стоит посмотреть. Рейнхольд обсуждает три основных изменения в Java, внесенных в этом году – модульность платформы, удаление компонентов и ускоренные темпы выпуска новых версий – и то, как это влияет на разработчиков.


Добавить комментарий