为什么Java将方法的大小限制为65535字节?

我刚刚编译了以下代码

public class A { public static void main(String... args) { int i = 3; ++i; ++i; ++i; ++i; ++i; ++i; ++i; ++i; // repeat writing the expression ++i for 20,000 times System.out.println(i); } } 

并收到以下错误消息

方法main(String …)的代码超过了65535字节的限制

为什么Java实现此限制? 我没有看到理性,因为Java确实包含了goto_w指令。

请参阅Java虚拟机规范部分4.10:

4.10 Java虚拟机的限制

  • 每个非本机非抽象方法的代码量由Code属性(第4.7.3节)的exception_table中的索引大小限制为65536字节,在LineNumberTable属性(第4.7.8节)中,在LocalVariableTable属性中(§4.7.9)。

在面向对象的编程语言中使用长方法几乎没有什么好的理由。