|
|
|
|
|
by DerekL
3803 days ago
|
|
>I don't know about uptime, but most of the new programming languages have no undefined behavior (a Java program always behaves as a Java program whatever your bugs are), while most of the old languages do have undefined behavior (even Ada has garbage-initialized variables.) BTW, Java does have implementation-defined or unspecified behavior (for instance, using the same objects from different threads without proper coordination), but there's much less of it and it's easier to avoid. |
|
That said, AFAIK language-level invariants in Java (and Python, etc.) cannot be violated by the lack of thread safety; meaning, you can still inspect every live object and see its state. Program-level invariants might go to heck, for sure. So what I should have said is more along the lines of "memory safety" than "lack of undefined behavior"; I'm not sure what the shortest and most precise way to put it is, though. (It does not quite end with memory safety but it doesn't quite get to lack of undefined behavior, either.)