Don't know about BMW in particular but I went to university in close vicinity to another large german car manufacturer. They do basically nothing in house. Everything is outsourced to suppliers (who often outsource their stuff again). There is enormous price pressure among the suppliers and no real room for culture. Also Java, everything is Java.
But the companies are slowly seeing that its a problem and start building up their own dev teams with "hip" offices in Berlin and so on.
Of course there are always exceptions.
Yeah, they look exactly like this: https://welcometobusinesstown.tumblr.com/post/111400877481/t...
.......
I'm only kind of joking, I don't know the real reason, but I dislike the fact I can't just get a simple mechanical car. It worked for decades, why did we need to add janky software to everything?
{"AnfrageArt":"Personenerkennungsschlüsselanforderungsanfrage", "ParameterListe":["HerstellerSpezifischePersonenkraftfahrzeugidentifikationsnummer":"1NXBR12E31Z463785"]}
}
It simply can come down to not having a change management system let along a project management system that is effective. then there is the opposite systems, the ones where getting even a minor change in can be frustrating and results in many not bothering to fix the simple issues.
Generalized: What's wrong with the software engineering culture at hardware manufacturers?
These performance penalty get really magnified when a lot of small errors are done on a less powerful hardware.
I've found out this the hard way when I was developing Java GUI (Swing mostly) apps, and messed up the initialization sequence of the GUI a few times.
FWIW, it would be very weird, since Java is strongly typed, and while you can introduce bugs, not any more so than in any other, esp dynamically typed languages.
There's always a standard procedure to get a Swing main window running. IIRC you get the window, the canvas (layout?), layout manager then, you create and push your elements into the layout, fiddle with them, and lastly, set your window visible.
You can flex the process between getting the window and starting to push your elements into the layout. You can make Java implicitly create the missing parts without connecting to a variable.
If you do that, everything works as expected but, with a slight performance penalty. Everything will be ever slightly laggy. On the other hand, if you do everything by book, things run smoother. I experienced this with the apps I've written.
Some people believed me, some people don't. Some believed me after I showed the situation to them. This effect diminished in AMD64 era, and became unnoticeable after Intel Core series processors came to existence.
It was Java 6 times, so I'm not sure whether it's applicable.
That's the little lesson I've learned during developing with Java: Pay attention, do once, do right.