Eclipse Luna: готов для JavaTM8
Java SE 8 является наиболее значительным расширением модели программирования на Java, и Затмение Луны (R 4.4) был перезагружен, чтобы быть готовым к Java 8.
Вот краткий обзор полезностей, предоставляемых Eclipse как часть поддержки Java 8:
Инструменты Java в Eclipse имеют собственную реализацию компилятора, которая не только генерирует файлы классов, но также создает модель документов Java, которая служит основой для реализации большого числа функций инструментов.
Подготовка Eclipse к готовности к Java 8 включала в себя ряд шагов, заполненных техническими и технологическими задачами для поддержки всех дополнительных обновлений Спецификации языка Java: были разработаны синтаксический анализатор, компилятор и индексатор, был разработан новый механизм вывода типов, поддержка оценки отладчика были добавлены основные обновления в DOM AST и API модели Java, существующая функциональность была переоборудована, чтобы смешаться с новыми языковыми функциями, и была добавлена новая функциональность, чтобы сделать ваш опыт работы с Java 8 более приятным.
- Eclipse Compiler for Java (ECJ) реализует все новые улучшения языка Java 8.
- Быстро изменить проект, чтобы быть совместимым с Java 8:
- Преобразование созданий анонимного класса в лямбда-выражения (и обратно) с помощью Quick Assists (Ctrl + 1) :
- Преобразовать в лямбда-выражение
- Преобразовать в создание анонимного класса
- Или вызовите Source> Clean Up ..., чтобы перенести весь существующий код для использования лямбда-выражений, где это применимо:
Функциональность для переноса анонимных классов в лямбда-выражения сделана разумной, чтобы гарантировать, что генерируется только правильный код. Он игнорирует преобразование там, где это невозможно, и даже обновляет имена переменных, чтобы предотвратить конфликт имен с переменными из внешней области видимости. Например, преобразование не выполняется, если анонимный класс не реализует функциональный интерфейс, реализует функциональный интерфейс с помощью общего абстрактного метода, содержит дополнительные члены, содержит неквалифицированные ссылки «this» или «super» и т. Д. - Измените тело лямбда-выражения на блок или выражение, вызвав «Быстрые помощники» (Ctrl + 1):
- Новый краткий синтаксис лямбда-выражений и ссылок на методы выглядит неплохо, но он может быть не столь интуитивно понятен для разработчиков из-за предполагаемых целевых типов, предполагаемых типов параметров, различных сокращенных синтаксисов для ссылок на методы и конструкторы и т. Д. Именно здесь Eclipse помогает вам стать более продуктивным при написании или понимании программ с конструкциями Java 8.
- Чтобы просмотреть метод, реализованный экземплярами функционального интерфейса, просто наведите курсор на:
- Чтобы перейти к объявлению функционального метода, удерживайте клавишу Ctrl , наведите указатель мыши на «->» или «::» и щелкните гиперссылку:
- Вы можете управлять форматированием лямбда-выражений с помощью новых опций Formatter :
- Вы можете искать выражения ссылок на методы в Java Search , ограничивая расположение соответствия методов или конструкторов ссылками на методы:
- Представление « Иерархия типов» и « Быстрая иерархия» (Ctrl + T) (в функциональном интерфейсе и его абстрактном методе) показывают лямбда-выражения также в виде реализаций функционального интерфейса:
- Eclipse также предоставляет поддержку Content Assist (Ctrl + Space) для ссылок на методы:
- Быстро идентифицируйте абстрактные (A), стандартные (D) и статические (S) методы интерфейса в представлениях, таких как Outline, Search, Type Hierarchy, Quick Outline / Hierarchy, с помощью новых значков:
- Отладчик Java поддерживает точки останова в лямбда-выражениях, а также оценку или проверку в контексте методов интерфейса:
- JEP 118 предоставляет возможность хранить информацию о параметрах метода в файлах классов, когда программист выбирает это. Затем эта информация может быть использована для размышления. В режиме соответствия 1.8 вы можете включить это с помощью новой опции:
- Функции Java-инструментов, такие как рефакторинг, действия с исходным кодом, помощник по содержимому (Ctrl + пробел), пометки вхождений, выделение расширения, согласование, поддержка процессора аннотаций и т. Д., Были обновлены, чтобы хорошо работать с новыми функциями Java 8. Вот пример поддержки метода extract:
- JSR 308 представляет аннотации типов в Java 8, а Eclipse обеспечивает поддержку тип аннотации на основе статического нулевого анализа отправив набор аннотаций недействительности в виде версии 2.0.0 пакета org.eclipse.jdt.annotation. С этими аннотациями возможна проверка типа времени компиляции, чтобы гарантировать, что указанные нулевые ограничения не нарушены и все возможные исключения NullPointerException сообщаются (активен, если аннулированный анализ на основе аннотаций включен в настройках Java Compiler> Errors / Warnings):
Это позволяет разработчикам API создавать лучшие интерфейсы с более строгими правилами о том, что может быть передано и возвращено из API: - Компилятор Eclipse для Java (с его новым механизмом логического вывода типа Java 8) также был проверен для успешной сборки крупных проектов, таких как JRE8, OpenJFX и Eclipse SDK (~ 250 проектов).