Interested Article - Javac

Javac — оптимизирующий компилятор языка java , включенный в состав многих Java Development Kit (JDK).

Компилятор принимает исходные коды , соответствующие спецификации Java language specification (JLS), и возвращает байт-код , соответствующий спецификации Java Virtual Machine Specification (JVMS).

Javac написан на Java . Может вызваться непосредственно из java-программ (JSR 199).

История

Javac входил в состав JDK с первой версии.

13 ноября 2006 г. корпорация Sun Microsystems сменила лицензию Java Virtual Machine (JVM) и Java Development Kit (JDK) на GPL v2.

GNU Classpath начиная с версии 0.95 поддерживает компилирование и запуск javac при помощи и GCJ . Также поддерживается компиляция самой библиотеки Classpath, её утилит и примеров.

Структура javac

Исполнение javac разбито на следующие фазы:

  1. parse — лексический и синтаксический анализ, генерация абстрактного синтаксического дерева ,
  2. enter — регистрация символов всех классов, определенных в программе,
  3. process annotations — обработка аннотаций,
  4. attribute — проверка типов, разрешение имен классов, свертка констант, вывод типов,
  5. flow — анализ потока управления (достижимость операций), анализ обработки исключений, проверка обращений к неинициализированным данным, проверка корректности инициализации final переменных,
  6. desugar — удаление синтаксического сахара (вложенные классы, классовые литералы, assert, foreach),
  7. generate — создание файла .class.

См. также

Примечания

  1. , 1996], ISBN 0-7897-0604-0 , Chapter 3 "The javac compiler is an optimizing compiler and is the one you will usually use. "
  2. . Дата обращения: 17 апреля 2013. Архивировано из 13 мая 2008 года.
  3. (недоступная ссылка)
  4. «This release supports compiling and running the GPL OpenJDK javac compiler[…]» . Архивировано из 18 апреля 2013 года.
  5. The Hacker’s Guide to Javac, 2008

Ссылки

  • Java Compiler API Java Specification Request for invoking the Java compiler from a Java program
  • David Erni and Adrian Kuhn, // University of Bern, March 2008


Источник —

Same as Javac