1.2, Аноним (-), 09:03, 27/05/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +15 +/– |
Нужны более радикальные меры:
"Oracle планирует убрать из Java встроенную поддержку Java"
| |
|
2.3, Когда завезут поддержку GTA 5 (?), 09:19, 27/05/2018 [^] [^^] [^^^] [ответить]
| +6 +/– |
У них, кстати, серьезные конкуренты. Вон, гному целый миллион подогнать хотят. Уж сколько они повыпиливают за эти деньги...
Хорошей дорогой идём, товарищи.
| |
|
3.23, DerRoteBaron (?), 13:49, 27/05/2018 [^] [^^] [^^^] [ответить]
| +8 +/– |
Надеюсь, первыми они выпилят экстеншены, так, чтобы ни люди ни Canonical не смогли использовать гном.
| |
|
2.53, X4asd (ok), 18:41, 29/05/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
> "Oracle планирует убрать из Java встроенную поддержку Java"
я тоже сначала так и прочитал -- и ппц обрадовался же! :-)
а когда посмотрел повнимательнее увидил сирилизацию
| |
|
1.4, A.Stahl (ok), 09:44, 27/05/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +23 +/– |
>Oracle планирует прекратить встроенную поддержку сериализации, предложив в качестве замены защищённый компактный фреймворк.
А что мешает встроенную реализацию сделать компактной и защищённой? Как по мне это просто перекладывание ответственности в стиле маркетологов: ошибки останутся, но теперь они формально будут не в Ява, а в каком-то там отдельном фреймворке.
| |
|
|
3.6, A.Stahl (ok), 10:20, 27/05/2018 [^] [^^] [^^^] [ответить]
| +3 +/– |
Это не проблема: вводится новый формат, старый объявляется deprecated и через несколько версий выбрасывается. Стандартная практика.
| |
|
|
3.9, A.Stahl (ok), 10:38, 27/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
А выбрасывание функциональности и перенос её во внешние фреймворки да ещё и с изменением формата не нарушает обратную совместимость?
| |
|
4.11, Аноним (-), 10:48, 27/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
Нарушает, но ты то предлогаешь изменить поведение стандартных классов и методов.
А как определять какой из них как работает? По System.getProperty("java.version") или как?
Обновили на компьютере ждаву, программа загружает уже сохраненные данные с диска, а там внезапно формат другой, и что будет?
| |
|
|
6.17, Аноним (-), 11:10, 27/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
Мы разработаваем новый легковесный фреймворк для сериализации. Проект называется Amber, а маркерным интерфейсом для него будет SerializableNew
| |
|
7.28, Аноним (-), 16:41, 27/05/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
class MyClass implements Serializable2 {
static final long serialVersionUID2 = 1L;
}
| |
|
|
5.25, Аноним (-), 15:18, 27/05/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
Сохранить безопасный функционал, а опасный явно пометить как таковой, отключить по умолчанию, и предоставлять только для старого байткода или при установке флага.
Можно подумать, что большинство фреймворков сериализации безопасны! Parcelable в Андроиде был создан чтобы повысить производительность сериализации, но в плане выполнения произвольного кода наступил на те же грабли. А загрузка левых классов по сети это вообще классическая проблема eval() — при чём здесь сериализация, если RMI, или что там ещё, написано через ж**у? Если создатели языка не в состоянии исправить свой функционал, пользователи будут использовать сторонние либы, которые в итоге наступят на те же грабли.
| |
|
4.15, Аноним (-), 11:05, 27/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
Скорее всего его не выкинут из jvm вообще. Для программ использующих старый api будет доступна сериализация, а новый нет.
Собственно вот и решение, пиши на Java 8-10 и не ной.
| |
|
|
2.13, kk (??), 10:50, 27/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
Так этож оракл, они сделают этот отдельный фреймворк платным и по подписке
| |
|
1.18, Аноним (-), 11:26, 27/05/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Кто может гарантировать, что люди, написавшие ранее кривой код как часть жабы, теперь напишут ровный код уже как фреймворк?
| |
|
2.20, Аноним (-), 12:57, 27/05/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
В новости речь о кривом коде как части приложений. Он кривой, потому что неправильно использует определённую функциональность жабы, которую планируют убрать, чтобы больше не провоцировать разработчиков кривых приложений.
| |
|
|
4.42, Аноним (-), 09:59, 28/05/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
> дух времени: хотим искоренить убийства - уничтожим все ножи!
На майских праздниках двоих по пьянке забили насмерть табуреткой.
Табуретки искореним тоже?
| |
|
|
|
1.22, Аноним (-), 13:44, 27/05/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +6 +/– |
> которая в силу простоты применения для решения многих задач провоцирует разработчиков на необдуманное использование.
Т.е. новый фреймворк будет труден в использовании и разработчики вдруг начнут думать?
| |
1.27, Аноним (-), 16:40, 27/05/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +1 +/– |
> которая в силу простоты применения для решения многих задач провоцирует разработчиков на необдуманное использование.
иными словами, рукожопость _отдельных_ недопрограммистов компенсируют тем, что убирают важные фичи языка и инфраструктуры.
А как они собираются сериализовать графы с циклами в JSON и какая чудесная будет производительность - ещё предстоит посмеяться.
| |
|
2.34, Аноним (-), 23:00, 27/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
Нет в этой фиче нифига важного. Вопрос в том, насколько они поломают обратную совместимость. А насчет графов Serializable тоже нифига предложить не может (т.е. зацикливание будет).
| |
|
3.40, max (??), 09:08, 28/05/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
С графами объектов стандартный механизм сериализации в java без проблем работает. Лишь бы хрень какую-нибудь написать.
| |
|
2.48, Аноним (-), 16:47, 28/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
JSON прекрасно поддерживает циклические связи (введением внутреннего ID). Мне другое интересно: как вообще посторонняя функциональность может быть "небезопасной для языка"? Хоть бы одну "уязвимость" написали! Тот же JSON - он существует. И работает. И ни одного репорта "это опасно!". В чём соль??
| |
|
|
2.43, Аноним (-), 10:12, 28/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Тут про эти ваши безопасные сериализаторы xml и json https://www.github.com/mbechler/marshalsec/blob/master/marshalsec.pdf?raw=true
>json
Жусон* то причем? В жусоне ПРИНИПИАЛЬНО нет встроенной возможности задания исполняемого кода, там только строки, массивы, числа, да объекты(хеш-таблицы).
Другое дело если туповатый десериализатор начинает интерпретировать вышеперечисленное как исполняемых код.
Например в Java, где при десериализации хештаблицы вызывается метод hash() пользовательских объектов, где может быть произвольный код.
(да, по мнению изобретателя JSON - Д. Крокфорда, название формата произносится именно так)
| |
|
3.46, J.L. (?), 14:14, 28/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Например в Java, где при десериализации хештаблицы вызывается метод hash() пользовательских
> объектов, где может быть произвольный код.
тоесть java десерилизует функции экземпляра объекта не на основе кода класса из заголовка потока, а на основе байткода функции из потока ??
//offtop
> (да, по мнению изобретателя JSON - Д. Крокфорда, название формата произносится именно так)
"Жусон" - жесть то какая...
| |
|
4.50, Илья (??), 09:25, 29/05/2018 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ты можешь сериализовать любую имплементацию интерфейса. Система, на которой производится десериализация, может вообще не знать ничего об этой имплементации. По сути, сериализованный объект - это данные плюс поведение. Если нужны только данные, то есть "универсальные конвертеры" в JSON, XML и любые другие форматы. Если же нужно принимать именно реализацию - то обычно пользуются стандартной сериализацией. Это удобно. Но нужно понимать, что либо ты организовываешь безопасность получения этого кода, гарантируя, что посторонний код не может быть загружен. Либо обвешиваешься политиками безопасности.
| |
|
5.54, Дмитрий Быстров (?), 13:24, 30/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
Вы неправы!
Вы не можете сериализовать интерфейс. Сериализуется объект, реализующий интерфейс. В поток записывается полное название класса этого объекта и данные полей. Если поле - это ссылка на другой объект, то описанная процедура выполняется и для него. Если поле ссылается на уже записанный в поток объект (циклическая ссылка), то пишется информация об этом.
При десериализции объекты восстанавливаются по полному названию классов. При этом классы эти могут быть совершенно другими (с другим набором методов и даже с реализацией совершенно других интерфейсов).
Таки образом, поведение не сериализуется! Проверено на практике
| |
|
|
3.56, Дмитрий Быстров (?), 13:34, 30/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Например в Java, где при десериализации хештаблицы вызывается метод hash() пользовательских
> объектов, где может быть произвольный код.
В этом виновата не стандартная сериализация, а реализация класса HashMap. Там есть метод readObject, котором написана своя процедура десериализации, точно некоторые действия после стандартной десериализации
| |
|
|
1.45, Аноним (-), 13:14, 28/05/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Я правильно понимаю, что все приложения под старыми версиями явы как работали, так и будут работать дальше, а вот при переходе на новые версии явы разработчики должны будут не забыть озаботиться заменой сериализации?
| |
|
2.47, J.L. (?), 14:15, 28/05/2018 [^] [^^] [^^^] [ответить]
| +/– |
> Я правильно понимаю, что все приложения под старыми версиями явы как работали,
> так и будут работать дальше, а вот при переходе на новые
> версии явы разработчики должны будут не забыть озаботиться заменой сериализации?
95% что да
вероятно в жавамашине будет "если версия скомпиленного байткода > N - запрещай старое
| |
|
1.52, dq0s4y71 (ok), 12:25, 29/05/2018 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Хаха. Ничего "безопаснее", чем
fopen();
fwrite();
fclose();
так и не смогли придумать ;)
| |
|