Сколько строк кода может содержать файл .java? Это зависит от используемой JVM?




Я считаю, что размер байт-кода для каждого метода ограничен 64 КБ.
Ошибка больше не существует. Или, по крайней мере, он больше не доступен для всеобщего обозрения. RFE, связанные с аналогичными ограничениями, были закрыты как «не будут исправлены».
Чтобы расширить Ответ Йонаса, спецификацию виртуальной машины Java, Раздел 4.8 Ограничения на код виртуальной машины Java говорит, что:
The Java virtual machine code for a method, instance initialization method (§3.9), or class or interface initialization method (§3.9) is stored in the code array of the Code attribute of a method_info structure of a class file. This section describes the constraints associated with the contents of the Code_attribute structure.
Переходя к Разделу 4.8.1, Статические ограничения
The static constraints on a class file are those defining the well-formedness of the file. With the exception of the static constraints on the Java virtual machine code of the class file, these constraints have been given in the previous section. The static constraints on the Java virtual machine code in a class file specify how Java virtual machine instructions must be laid out in the code array and what the operands of individual instructions must be.
The static constraints on the instructions in the code array are as follows:
...
- The value of the code_length item must be less than 65536.
...
Таким образом, у метода есть ограничение в 65535 байтов байт-кода на метод. (см. примечание ниже)
Дополнительные ограничения для JVM см. В разделе Раздел 4.10 Ограничения виртуальной машины Java.
Примечание. Хотя очевидно, что существует проблема с дизайном JVM, где, если инструкция в байте 65535 является инструкцией длиной 1 байт, она не защищена обработчиком исключений - это указано в сноске 4 раздела 4.10.
Я помню, как однажды столкнулся с этим пределом на сложной странице JSP в Tomcat 4 (в прошлом, когда люди все еще использовали JSP). У java-файла, сгенерированного из JSP, был метод, который был слишком большим для компиляции, я думаю, мне пришлось разделить файл или выполнить какой-то другой трюк, что, конечно, было хорошей идеей с точки зрения читаемости.
Система отслеживания ошибок Sun сообщает мне некоторым людям все еще есть та же проблема.
был там. работал над JSP, который включал в себя целую кучу JSP в цикле или что-то в этом роде.
Нет ограничения на количество «строк кода», но есть ограничение на общий размер. Каждый метод имеет ограничение в 64 КБ.
Я когда-либо сталкивался с этим только с инструментами генерации кода.
Если вы приближаетесь к пределу, будьте осторожны. Многие инструменты профилирования и мониторинга используют вставку байтового кода. Они могут подтолкнуть вас к вершине, если вы будете слишком близко. Что еще хуже, они часто изменяют ваши файлы классов после компиляции. Все компилируется и запускается в вашей среде разработки, но дает сбой, когда вы включаете инструменты мониторинга в тесте или QA.
Как упоминалось выше, в java нет ограничений на количество «строк кода» для каждого класса, мы, вероятно, можем использовать 200 строк в качестве хорошего ориентира и не превышать 500 строк на класс.
Могу ли я узнать, как справиться с этим в Android, потому что базовый уровень, такой как кастинг UIview и анализ JSON, пересекает 500 строк. любыми советами и уловками, пожалуйста, поделитесь. заранее спасибо.
Что, если у нас есть, скажем, 20 методов в классе бизнес-уровня, каждый из которых содержит 30 строк?
@MohanRajS Разбор JSON должен идти в отдельный класс, активность должна содержать только основные методы и переменные, которые напрямую связаны с пользовательским интерфейсом. Пожалуйста, обратитесь к архитектуре M-V-V-M для получения более подробной информации developer.android.com/topic/libraries/architecture/viewmodel
Для этого есть ошибка / rfe, зарегистрированная в Sun по адресу bugs.sun.com/bugdatabase/view_bug.do?bug_id=4262078