I'm trying to understand the rationale behind Java Applet development these past few years. Back in the old days, most Applets were unsigned, and the code for these was run in a sandbox where barring bugs in the sandbox itself it could do no harm. If some applet wanted more privileges, the author could sign the code and the user could decide to trust that author and run the applet without the strict sandbox restrictions.
Recently, however, running unsigned code in sandboxes appears to be very hard. In my experience it requires reducing the security setting and establishing exception rules. As a consequence, more and more applets are being signed, since the user experience there is better. So more and more applets are running outside a sandbox, often with no good reason for it except that it's easier to explain to users that they should simply click on “Allow” (as opposed to say adding a domain-based exception rule).
Did I present the development correctly? Or did I just at some point somehow garble my Java setup to a point where it would refuse running sandboxed Applets for me personally?
What's the rationale here? How is running signed applets from unknown people without a sandbox any safer than running unsigned applets from these same people in a sandbox? Is the sandbox really that buggy?