Максимальное количество строк кода, разрешенных в классе Java?

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
26
0
23 760
5

Ответы 5

Я считаю, что размер байт-кода для каждого метода ограничен 64 КБ.

Для этого есть ошибка / rfe, зарегистрированная в Sun по адресу bugs.sun.com/bugdatabase/view_bug.do?bug_id=4262078

Brian Matthews 20.09.2008 14:58

Ошибка больше не существует. Или, по крайней мере, он больше не доступен для всеобщего обозрения. RFE, связанные с аналогичными ограничениями, были закрыты как «не будут исправлены».

Stephen C 27.03.2016 04:18

Чтобы расширить Ответ Йонаса, спецификацию виртуальной машины 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 в цикле или что-то в этом роде.

Ken Liu 28.08.2009 08:50

Нет ограничения на количество «строк кода», но есть ограничение на общий размер. Каждый метод имеет ограничение в 64 КБ.

Я когда-либо сталкивался с этим только с инструментами генерации кода.

Если вы приближаетесь к пределу, будьте осторожны. Многие инструменты профилирования и мониторинга используют вставку байтового кода. Они могут подтолкнуть вас к вершине, если вы будете слишком близко. Что еще хуже, они часто изменяют ваши файлы классов после компиляции. Все компилируется и запускается в вашей среде разработки, но дает сбой, когда вы включаете инструменты мониторинга в тесте или QA.

Как упоминалось выше, в java нет ограничений на количество «строк кода» для каждого класса, мы, вероятно, можем использовать 200 строк в качестве хорошего ориентира и не превышать 500 строк на класс.

Могу ли я узнать, как справиться с этим в Android, потому что базовый уровень, такой как кастинг UIview и анализ JSON, пересекает 500 строк. любыми советами и уловками, пожалуйста, поделитесь. заранее спасибо.

MohanRaj S 26.10.2018 10:51

Что, если у нас есть, скажем, 20 методов в классе бизнес-уровня, каждый из которых содержит 30 строк?

vigamage 07.11.2018 14:24

@MohanRajS Разбор JSON должен идти в отдельный класс, активность должна содержать только основные методы и переменные, которые напрямую связаны с пользовательским интерфейсом. Пожалуйста, обратитесь к архитектуре M-V-V-M для получения более подробной информации developer.android.com/topic/libraries/architecture/viewmodel

Nauman Aslam 08.02.2019 15:36

Другие вопросы по теме