Сколько строк кода может содержать файл .java
? Это зависит от используемой JVM?
Максимальные строки кода, разрешенные в классе Java?
Ответ 1
Чтобы перейти на ответ Джонаса, спецификация виртуальной машины Java, Раздел 4.8 Ограничения на Java Virtual Machine Code говорит, что:
Код виртуальной машины Java для метод, метод инициализации экземпляра (§3.9), или класс или интерфейс метод инициализации (§3.9) сохраняется в массиве кода кода атрибут структуры method_info файла класса. Эта секция описывает связанные с этим ограничения с содержанием Структура Code_attribute.
Продолжая раздел 4.8.1, Static Constraints
Статические ограничения для файла класса являются те, которые определяют корректность файла. За исключением статические ограничения для виртуального Java-приложения машинный код файла класса, эти ограничения были приведены в предыдущий раздел. Статический ограничения на виртуальную виртуальную машину Java машинный код в файле класса укажите как инструкции виртуальной машины Java должны быть выложены в массиве кода и какие операнды отдельных инструкции должны быть.
Статические ограничения на инструкции в массиве кода: следующим образом:
...
- Значение элемента code_length должно быть меньше 65536.
...
Таким образом, у метода есть предел в 65535 байт байт-кода для каждого метода. (см. примечание ниже)
Дополнительные ограничения для JVM см. в Раздел 4.10 Ограничения виртуальной машины Java.
Примечание. Хотя, по-видимому, проблема с конструкцией JVM, если инструкция в байте 65535 является инструкцией длиной 1 байт, она не защищена обработчиком исключений - это указано в сноске 4 раздела 4.10.
Ответ 2
Я считаю, что ограничение на размер байт-кода на один метод ограничено на 64 КБ.
Ответ 3
Нет ограничений на "строки кода", но существует ограничение на общий размер. Каждый метод имеет ограничение 64 КБ.
Я только сталкивался с этим с помощью инструментов генерации кода.
Если вы приближаетесь к пределу, будьте осторожны. Многие инструменты профилирования и мониторинга используют байтовую вставку кода. Они могут подтолкнуть вас сверху, если вы слишком близко. Что еще хуже, они часто меняют ваши файлы классов после компиляции. Все компилируется и запускается в среде разработки, но сбой при включении ваших средств мониторинга в Test или QA.
Ответ 4
Я помню, как на самом деле работал в этом лимите один раз на сложной странице JSP в Tomcat 4 (ранее в прошлом, когда люди все еще пользовались JSP). У java файла, созданного с помощью JSP, был метод, который был слишком большим для компиляции, я думаю, что мне пришлось разделить файл или сделать какой-то другой трюк, который, конечно же, был хорошей идеей с точки зрения удобочитаемости.
Отслеживание ошибок Sun говорит мне, что некоторые люди все еще имеют одинаковую проблему.