Apple&#x27;s engineers are right on this one. From a performance point of view, the only way Java (and dynamic languages like JavaScript) get away with having almost everything be virtual is that they can JIT under a whole-program analysis, add final automatically in the absence of subclassing, and deoptimize in the presence of classloaders. In other words, Java optimistically compiles under the assumption that classes that aren&#x27;t initially subclassed won&#x27;t be, and if that assumption later turns out to be invalid it deletes the now-incorrect JIT code and recompiles. This isn&#x27;t an option for Swift, which is ahead-of-time compiled and can&#x27;t recompile on the fly.<p>If you don&#x27;t allow an ahead of time compiler to devirtualize anything, you&#x27;re going to have worse method call performance than <i>JavaScript</i>.