Тёмный

Why We Hate Java Serialization And What We're Doing About It by Brian Goetz & Stuart Marks 

Devoxx
Подписаться 157 тыс.
Просмотров 19 тыс.
50% 1

Наука

Опубликовано:

 

1 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 25   
@tohopes
@tohopes 4 года назад
Baking serialization into the programming language presumes that there is one canonical way to serialize the data of each object. But there may be multiple different ways to externally represent a given object - different forms to persist to a file on disk, to send to this system, to send to that system. It's still too magical.
@NirajSanghani
@NirajSanghani 4 года назад
Really insightful. Facing the same problem when processing 20+Million messages per hour
@khoatranngoc4946
@khoatranngoc4946 4 года назад
What is that system?
@TehBrian
@TehBrian 4 года назад
Khoa Trần Ngọc Discord o-o /s
@nO_d3N1AL
@nO_d3N1AL 4 года назад
Very useful talk on these issues and well overdue. I hope we get another one (albeit likely shorter) on clone() / Cloneable and why that is bad design
4 года назад
Link on the last slide shown at 46:31 : cr.openjdk.java.net/~briangoetz/amber/serialization.html
@appsofteng6035
@appsofteng6035 4 года назад
Nice presentation. Thank you. In my experience data objects that represent some more complex problem domain usually have direct or indirect cyclic references, typically parent - children, whole - parts etc. That's why both JPA and JAXB offer some solutions such as bidirectional references, @XmlID, @XmlIDREF, public void afterUnmarshal(Unmarshaller unmarshaller, Object parent) etc.
@brujua7
@brujua7 4 года назад
Great, thanks for the talk!
@berndeckenfels
@berndeckenfels 4 года назад
45:20 +1/-1 strategy is not a serious commitment anymore, that does not even touch a LTS release
@ArneBab
@ArneBab 4 года назад
Isn’t the @Serializer pattern just an out-parameter. A Fortran out-parameter?
@CasparMacRae
@CasparMacRae 4 года назад
Further application of "destructuring" simplifying/fixing frameworksphere - thank you
@nicohidalgo-toledo1763
@nicohidalgo-toledo1763 3 года назад
To follow up on the point made by Andy earlier, it feels like this work complects the success of updating Serialization to Pattern Matching unnecessarily. I've done that type of "use improvement B we really want to justify the necessity of implementing feature A" reasoning in my work, so I understand the impetus... But it really feels like this can be accomplished using existant mechanisms. The big insight/evolution here is to use annotations instead of implementing an interface. For instance, consider the existence of a @Serializable(serializationStrategy=SerializationStrategyInstance.class) public interface SerializationStrategy { ObjectOutputStream serialize(T instance) T deserialize(ObjectInputStream stream) } Then you can use a ServiceLoader to populate the available SerializationStrategy in the classpath and implement a default dispatching mechanism fairly easily. At least, in theory. I haven't tried implementing it. But the approach seems straightforward. Sure, Pattern Matching might make things syntactically nicer, but I'm not sold that it's a blocker or even a huge enabler here.
@berndeckenfels
@berndeckenfels 4 года назад
Important talk, but no mentioning of ysoserial and Chris Frohoff and the other researchers in that area? github.com/frohoff/ysoserial (Learning from that also tells us that running code while deserialisation might be risky, ask your local collection). Talk also does not mention the new filter hooks on ObjectInputStream either.
@shadeblackwolf1508
@shadeblackwolf1508 3 месяца назад
I will say, json frameworks can respect rpivacy and use constructors or factory methods if you tell the library where to look
@witchdodo
@witchdodo 4 года назад
Good talk. But most importantly, I want their computer's stickers on mine.
@mrBrownstoneist
@mrBrownstoneist 4 года назад
When first time to try to send object over socket the i faced this. WTH are they thinking..
@AndiRadyKurniawan
@AndiRadyKurniawan 4 года назад
I don't like the idea presented in this talk. Why not just use annotation processing that generates the Deserializer and Serializer classes for you?
@maruseron
@maruseron 7 месяцев назад
"why not just" in a Brian Goetz talk... precious :-)
@AndiRadyKurniawan
@AndiRadyKurniawan 7 месяцев назад
​@@maruseron😏
@gsit80
@gsit80 8 месяцев назад
Java should become an ECMA standard. In this way the process of evolving the platform will become more clear.
@mh5259
@mh5259 Год назад
I started coding when I was 49, which was 3 and a half years ago... I had to figure out a vulnerability fix related to Serialization, so I came here, but I'm pretty sure I will retire before I understand WTF these guys are talking about.. I know ignorance doesn't sell in this world, but damn. I think I'll stick with the friendly confines of React and the relative child's play of hooks.
@markuskett931
@markuskett931 4 года назад
A free solution from the community has already solved most of these problems. MicroStream is a fundamentally new written serialization that enables you to store any Java object graph on disk and load it back to the memory partially very easily, which means you can even update your object graph in the memory. It was created to enable Java to store any kind for any kind of use-cases and to replace heavy-weight DMBS, especially for microservices use cases. It provides high-security deserialization and object graph communication, and it's free.
@bubbashrimp2655
@bubbashrimp2655 4 года назад
What a subtle plug ... :/
@briangoetz7591
@briangoetz7591 4 года назад
I think maybe you missed the part where "any serialization framework that recreates objects is subject to the same exploits". There are zillions of free alternate serialization frameworks; that's not news. But unless you interact with the data entirely outside of the object model (e.g., through a DOM-like model of maps and lists), you're back in the same problems.
Далее
Thinking In Parallel by Stuart Marks and Brian Goetz
1:00:04
Collections Corner Cases by Stuart Marks
50:46
Просмотров 9 тыс.
FP vs OOP: Choose Two by Brian Goetz
42:59
Просмотров 31 тыс.
Memory footprint of a Java process by Andrei Pangin
51:40
Java 21… and Beyond
48:30
Просмотров 23 тыс.
Collections Refueled by Stuart Marks
51:42
Просмотров 15 тыс.
Ask the Java Architect by Stuart Marks & Brian Goetz
50:25
Battery  low 🔋 🪫
0:10
Просмотров 13 млн
КРУТОЙ ТЕЛЕФОН
0:16
Просмотров 6 млн