That's exactly how it works in C# (.NET in general), and I would take a fairly large bet that's exactly the same in Java. It seems like a regression (when thinking on terms of lower level --> higher level language movement).
Its automatic. If it can't get the source, it will use its built in decompiler, and produce surprisingly readable source anyway (I force it to this mode by default, due to a flaky internet connection).
Can you explain what your problem is? Azure will automatically restart instances that are dead afaik (unless you are saying that the automatic restarting was broken as well?).
You can go look it up on wikipeadia; but in summary, the battery relies on a chemical reaction to produce electricity. After a certain discharge point, the chemical reaction is irreversibly changed, and can no longer be recharged.
I'd like to see some references or research to back up your comment. As it stands, I down-voted you, as I don't think you are adding valuable content: I would happily reverse my down-vote if you can produce even a small amount of evidence for this, that can be further discussed and critiqued.