Ниже приведены некоторые наиболее интересные или значимые изменения в инструментах разработки Java (JDT) для выпуска Eclipse 3.1 после версии 3.0. Материал разбит по разделам:
|
|
J2SE 5.0 |
В Eclipse 3.1 реализована полная поддержка новых возможностей J2SE 5.0 ("Tiger"). Важно отметить, что эта поддержка может быть совершенно прозрачна - все, с чем вы привыкли работать в J2SE 1.4, включая редактирование, компиляцию, отладку, быстрые исправления, рефакторинг, действия с кодом, поиск и прочее - будет точно так же работать с новыми типами и конструкциями J2SE 5.0. Для того чтобы разрабатывать исходный код с J2SE 5.0, необходима среда выполнения Java, поддерживающая J2SE 5.0. Если первый запуск Eclipse выполнялся с JRE 5.0, то эта среда будет применяться по умолчанию. В противном случае потребуется зарегистрировать эту среду на странице Установленные JRE. Откройте это окно на странице Java > Установленные JRE или по ссылке Настроить значения по умолчанию... мастера Создать проект Java. |
|
|
Быстрое исправление |
Новое быстрое исправление поможет изменить параметры совместимости при использовании конструкций 5.0 в проекте 1.4. Обратите внимание, что обязательно должна быть установлена JRE 1.5. Ее можно добавить на странице 'Установленные JRE'.
|
|
|
Мастеры Создать тип поддерживают параметризуемые типы |
Мастеры Создать тип поддерживают параметризуемые типы, введенные в J2SE 5.0, в различных полях:
|
|
|
Создание перечислений и аннотаций |
Перечисления и аннотации можно создавать с помощью соответствующего мастера:
|
|
|
Подстановка аргументов типа |
Помощник по коду подставляет правильные аргументы типа при завершении типа в редакторе Java. Будут выбраны аргументы, не допускающие неоднозначной интерпретации, а выбрать нужный можно будет клавишей Tab.
В этом примере в качестве первого аргумента подставляется
Включите функцию Подставлять имена аргументов на странице Java > Редактора > Помощник по коду. |
|
|
Диагностика ситуации: параметр типа скрывает другой тип |
Компилятор Java может помечать неполадки, когда объявление параметра типа скрывает другой тип.
|
|
|
Рефакторинг Переименовать |
Расширенный рефакторинг Переименовать поддерживает обработку параметров типа.
|
|
|
Рефакторинг Вычислить аргументы параметризуемого типа |
В J2SE 5.0 введены параметризуемые классы, которые улучшают стиль кода и обеспечивают защиту статических типов.
Рефакторинг > Вычислить аргументы параметризуемого типа - это новый тип рефакторинга, который позволяет клиентам библиотек параметризуемых классов, таких как Java Collections Framework, переносить свой код.
Рефакторинг вычисляет параметры для параметризуемых типов и устраняет ненужные операции приведения. Он работает как для отдельных единиц компиляции, так и для целых пакетов и проектов Java. |
|
|
Быстрое исправление для параметризуемых типов |
Для непараметризованных типов Java предлагаются варианты их типизации:
|
|
|
Новые фильтры результатов поиска для поиска ссылок на параметризованные типы |
При поиске ссылок на параметризованный тип, такой как
|
|
|
Автоматическое дополнение аннотаций |
Поддерживается автоматическое дополнение внутри аннотаций отдельного элемента и значение атрибута аннотации.
|
|
|
Диагностика: Применение типа аннотации в качестве базового интерфейса |
В J2SE 5.0 язык Java допускает, что класс может реализовывать тип аннотации.
Но вообще-то это не одобряется. Компилятор Java может помечать такие случаи.
|
|
|
Поддержка аннотаций @SuppressWarnings |
Поддерживается аннотация J2SE 5.0 @SuppressWarnings.
Ниже перечислены распознаваемые маркеры предупреждений:
"all", "boxing", "dep-ann", "deprecation", "incomplete-switch", "hiding", "finally", "static-access", "nls", "serial", "synthetic-access", "unqualified-field-access", "unchecked", "unused" и "warningToken". В следующем примере первое поле помечается аннотацией
@SuppressWarnings("deprecation"), подавляющей предупреждение о нежелательном применении кода.
Второе поле никак не помечается, и поэтому выдается предупреждение о нежелательном применении кода.
Действие аннотаций @SuppressWarnings управляется с помощью опции компилятора. Оно задается параметром Java > Компилятор > Ошибки/предупреждения > Опции J2SE 5.0 > Включить аннотации '@SuppressWarnings' По умолчанию для необрабатываемых маркеров предупреждений показывается предупреждение. Это предупреждение также можно отключить с помощью аннотации @SuppressWarnings("warningToken"). |
|
|
Быстрое исправление |
Предупреждения, которые можно выключить аннотацией @SuppressWarning, позволяют сделать это с помощью функции быстрого исправления. Ниже показано применение быстрого исправления для выключения предупреждения о неиспользуемой локальной переменной и результат этого действия: |
|
|
Диагностика отсутствия аннотации @Override |
Компилятор Java может помечать метод, который переопределяет метод базового класса, но не имеет аннотации @Override.
Добавить аннотацию @Override можно с помощью быстрого исправления. |
|
|
Диагностика отсутствия аннотации @Deprecated |
Компилятор Java обрабатывает аннотации
@Deprecated, как и комментарии Javadoc
/** @deprecated */. Он может помечать устаревшие конструкции с отсутствующими аннотациями @Deprecated (для того, чтобы эти аннотации использовались вместо тега в комментарии).
|
|
|
Диагностика неполноты оператора switch с перечислением |
Компилятор Java может помечать неполные операторы switch с перечислением.
|
|
|
Диагностика компилятора идентификатора 'enum' |
Компилятор Java может помечать места, где
'enum' используется в качестве идентификатора. 'enum' может применяться как идентификатор вплоть до 1.4, но является зарезервированным ключевым словом в 5.0.
Включите это предупреждение для облегчения миграции кода.
См. страницу Java
> Компилятор > Совместимость JDK > Запретить
'enum' как идентификатор.
|
|
|
Быстрое исправление |
Константы перечисления можно создавать с помощью быстрого исправления. В примере ниже константа BLUE отсутствует в перечислении Colors |
|
|
Варианты параметра автоматического приведения типа |
Предлагаются варианты для автоприведения типа:
Примечание: включите опцию The Java > Редактор > Помощник по коду > Подставлять имена аргументов при дополнении. |
|
|
Диагностика автоматического |
Функция автоматического приведения типов в J2SE 5.0 очень мощная, но она может привести в непредвиденным результатам, особенно при передаче аргументов.
Компилятор поддерживает необязательную диагностику таких ситуаций.
В следующем примере будет вызван не foo(Integer) , а foo(int) вследствие приведения типа.
|
|
|
Поддержка J2SE 5.0 в редакторе Java |
Редактор Java обеспечивает выделение цветом новых конструкций языка J2SE 5.0. На странице Java > Редактор > Подсветка синтаксиса можно настроить цвета для переменных типа, элементов аннотаций и
выражений приведения типов:
|
|
|
Новый шаблон цикла for |
Шаблон foreach
добавляет в код новый цикл 'for' и предлагает варианты Iterable
для прохода цикла:
|
|
|
Преобразование цикла for в расширенный |
Быстрая помощь (Ctrl+1)
способна преобразовать старые циклы с массивами и наборами в расширенные циклы
J2SE 5.0:
Быстрое исправление приводит к следующему результату: |
|
|
Один из переменных аргументов |
Компилятор Java может помечать подозрительные вызовы методов с переменным числом аргументов. Пустой последний аргумент не заменяется на массив с одним элементов. Требование явного приведения может сделать код чище.
Этот параметр задается опцией Java > Компилятор > Ошибки/предупреждения > Опции J2SE 5.0 > Неточное совпадение типов для аргументов vararg. |
|
|
Дополнение применяет статические импорты |
Дополнение кода в редакторе Java правильно обрабатывает статические импорты при вычислении дополнения, зависящего от контекста.
|
|
|
Группы |
Для того чтобы упорядочить статические импорты, создайте для них группы и поместите их в удобное место.
Задайте, например, группу
'others' для всех импортов, не вошедших в другие группы:
Группа 'others' также доступна для нестатического импорта. |
|
|
Поддержка |
Добавлена поддержка для специального исходного файла package-info.java, в котором записываются аннотации и документация пакетов.
Все инструменты JDT (помощник по коду, выбор кода, поиск, структура,
иерархии типов и пр.) могут работать с этим модулем компиляции.
Обрабатываются комментарии документации package-info.java, при этом проверяются синтаксис и ссылки в стандартных тегах комментариев. |
|
|
Форматирование конструкций J2SE 5.0 в коде |
Форматирование кода возможно со всеми новыми конструкциями языка J2SE 5.0. Эти параметры настраиваются на странице Java > Стиль кода > Форматирование кода:
|
|
|
Отладка кода 5.0 |
Исходный код 5.0 можно запускать и отлаживать в JRE 1.5. Отладчик Java может обрабатывать конструкции J2SE 5.0, такие как параметризуемые типы и расширенные циклы for. |
|
|
Изменение имен файлов классов для локальных внутренних типов |
В режиме совместимости с 5.0 компилятор Java генерирует файлы классов согласно спецификации JLS 13.1 для локальных внутренних типов. Вследствие этого, как в примере ниже, вместо файла с именем X$1$A.class будет создан просто X$1A.class .
|
|
|
|
Точки наблюдения и |
Двойной щелчок на линейке в редакторе Java создает точки наблюдения для полей и точки прерывания для объявлений методов. |
|
|
Блокировки и тупики |
Если включить пункт Показать мониторы в меню панели Отладка, то будут показаны блокировки, которыми владеют нити и которых ожидают нити. Тупиковые блокировки и их нити выделены красным. |
|
|
Просмотр трассировки стека |
Скопируйте трассировку стека и вставьте ее в консоль трассировки стека Java. Навигация трассировки осуществляется по ссылкам. Консоль трассировки стека Java можно открыть с помощью выпадающего меню Открыть консоль панели Консоль. Вставленные фрагменты трассировки можно отфоpматиpовать стандартной привязкой клавиш Отфоpматиpовать. |
|
|
Встраивание 'toString()' |
Вычисленное значение toString() переменной можно показать в дереве панели Переменные, а также в окне сведений. Для настройки этой опции применяйте команду Форматирование сведений Java... в выпадающем меню панели. |
|
|
Пользовательские логические структуры |
Отладчик Java позволяет управлять показом переменных для различных типов объектов. Например, набор может быть показан как простой массив элементов без излишних деталей реализации того или иного объекта. Это возможно на странице Java > Отладка > Логические структуры, где с классом или интерфейсом можно связать одно выражение, например, |
|
|
Расширенные возможности изменения значения переменной |
Отладчик Java позволяет изменить значение переменных. Введите выражение в окне Изменить значение или в области сведений о переменных и нажмите Сохранить. |
|
|
Найти переменную |
Действие Найти переменную панели Переменные позволяет найти переменную, введя ее имя. При вводе в панели отображается следующая переменная, совпадающая с вводимым текстом. Окно Найти переменную также показывает все переменные, совпадающие с уже введенным текстом. |
|
|
Вложения Javadoc |
С каждым из JAR библиотеки JRE можно связать свое расположение Javadoc. |
|
|
|
Новые опции |
Когда проверка Javadoc включена, можно настроить ее, чтобы
Это настраивается на странице Java > Компилятор > Javadoc. |
|
|
Диагностика постфиксного выражения - безрезультатное присваивание |
Необязательный параметр диагностики безрезультатного присваивания позволяет обнаружить типичные ошибки постфиксного выражения, например, i = i++;
|
|
|
UID серийного номера |
Необязательный параметр диагностики компилятора позволяет обнаружить сериализуемые классы с отсутствующим объявлением поля Этот параметр задается опцией Java > Компилятор > Ошибки/предупреждения > Потенциальные ошибки кода. |
|
|
Ранее обнаружение ссылок на внутренние классы |
Можно аннотировать библиотеку и проект в пути компоновки Java (Свойства > Путь компоновки Java > Библиотеки), чтобы обнаружить ссылки на внутренние пакеты, которых вы хотите избежать в коде.
Например, не стоит включать зависимости от сторонних пакетов, таких как com.ibm.* или com.sun.* , обычно входящих в состав библиотек J2SE.
Ограничения доступа выражаются сочетанием правил включения и исключения записей пути компоновки.
Синтаксис шаблонов совпадает с нотацией набора файлов Ant, и они сравниваются с путем к файлам классов.
Например, шаблон com/ibm/** как исключающий ограничит доступ ко всем пакетам в составе com.ibm . Шаблон
org/eclipse/**/internal/** исключит все ссылки на классы из внутренних пакетов Eclipse. Если задан шаблон включения, то будет использоваться только то, что с ним совпадает, а остальное будет исключено.
Опция Java > Компилятор > Ошибки/предупреждения > Устаревший и ограниченный API задает, будут ли потерянные ссылки считаться ошибками или предупреждениями (по умолчанию это ошибки для запрещенных ссылок и предупреждения для нежелательных ссылок). |
|
|
Правила доступа к библиотекам и проектам |
Правила доступа к библиотекам и проектам могут явно разрешать или запрещать доступ к отдельным типам.
|
|
|
|
Улучшенное свертывание значков и заголовков |
При свертывании элемента Java в редакторе Java остается строка с именем элемента.
Для свернутых комментариев Javadoc показывается первая строка комментария.
Новые упрощенные значки свертывания в редакторе Java теперь отличаются от указателей переопределения и реализации:
|
|
|
Свертывание комментариев заголовка |
В исходных файлах Java можно свернуть комментарии в заголовке и заявления об авторских правах:
|
|
|
Пометки вхождений унаследованных методов |
Редактор Java может выделять все объявления методов, которые реализуют или переопределяют методы, унаследованные из базового типа.
См. опцию Java > Редактор
> Пометить вхождения > Метод, реализующий интерфейс.
|
|
|
Новое быстрое меню Вхождения |
При нажатии Ctrl+Shift+U в редакторе Java открывается контекстное меню с вариантами вхождений.
Примечание: Для восстановления старого поведения присвойте эту последовательность клавиш команде "Искать все вхождения в файле". |
|
|
Выделение устаревших элементов классов в редакторе Java |
Устаревшие элементы класса выделяются цветом:
|
|
|
Ссылки в Javadoc |
Eclipse распознает ссылки на элементы
Java внутри комментариев (то есть, @see, @link,
@linkplain, @throws, @exception, @param и @value). Это обеспечивает работу всплывающих подсказок и ссылок на данный элемент Java.
|
|
|
Улучшенное дополнение пустых слов |
Дополнение пустого слова Java более не предлагает автоматически все типы, видимые в области дополнения.
Для того чтобы получить варианты дополнения, введите хотя бы один символ типа.
|
|
|
Описания в подсказках Javadoc |
Javadoc, показываемый при вызове Правка > Показать описание подсказки (F2), отображается в виджете браузера SWT. |
|
|
Корректировка отступа - Переместить строки |
Команды Переместить строки (Alt+Up/Down) и Скопировать строки (Ctrl+Alt+Up/Down) автоматически устанавливают правильный отступ строк в редакторе Java. |
|
|
Улучшенный редактор файлов свойств Java |
Улучшены редакторы файлов свойств Java. Они поддерживают выделение синтаксиса, обработку двойных щелчков и отдельную настройку шрифтов.
Цвета выделения синтаксиса настраиваются на странице Java
> Редактор файла свойств. Поддерживается проверка орфографии, и для исправления орфографических ошибок можно применять быстрое исправление (Ctrl+1).
|
|
|
Работа с экспортированными строками |
При наведении мыши на ключ экспортированной строки в редакторе Java показывается подсказка для его значения:
С помощью Ctrl+щелчок можно перейти сразу к записи в соответствующем файле свойств Java. |
|
|
Переход от ключа свойства в редакторе файла свойств к его ссылкам |
Используйте Навигация > Открыть (F3)
или Ctrl+щелчок для перехода от ключа свойства в редакторе файла свойств к ссылкам на этот ключ в исходном коде.
|
|
|
Мастер Экспортировать строки поддерживает новые комплекты сообщений |
Мастер Экспортировать строки поддерживает новый в этом выпуске Eclipse механизм экспорта строк:
|
|
|
Новый API для вариантов кода как в редакторе Java |
Разрабатываете редактор для языка, похожего на Java?
Создавайте свои варианты помощника по коду, работающего как в редакторе Java. Для этого следует инициализировать экземпляр CompletionProposalCollector или создать производный от него класс для получения вариантов предложений по коду.
CompletionProposalLabelProvider
позволяет правильно работать с изображениями и надписями, а отсортировать их можно с помощью CompletionProposalComparator .
Пакет: |
|
|
|
Окно Открыть тип |
Окно Открыть тип претерпело ряд улучшений:
Есть и более глубинные изменения архитектуры. Типы, показываемые в окне, теперь получаются по запросу службы поиска Java. Это экономит 4-6 Мб в обычной рабочей области Eclipse по сравнению с ранними версиями, пожиравшими память. |
|
|
Структуризация рабочей области с многими проектам |
В меню панели Структура пакетов входит пункт Показать > Рабочие наборы. В этом режиме рабочие наборы показываются как элементы верхнего уровня. Этот режим удобен при работе с рабочей областью, содержащей много проектов.
Используйте пункт Выбрать рабочие наборы меню Структура пакетов для настройки показываемых рабочих наборов. В этом окне можно создать новые рабочие наборы Java и задать число и порядок отображения рабочих наборов. Рабочие наборы можно также упорядочить прямо в панели Структура пакетов, перетаскивая их мышью или копируя и вставляя. |
|
|
Улучшенная страница исходных папок мастера Создать проект Java |
Улучшенная страница исходных папок мастера Создать проект Java помогает создавать проекты на основе существующего кода.
Можно задавать записи для исходных папок, включать или исключать папки прямо в дереве и тут же проверять результаты.
|
|
|
Параметры общего проекта Java |
Для каждого проекта Java можно задавать пользовательские параметры для опций компилятора и стиля кода.
Эти параметры хранятся в самом проекте, и будут автоматически применяться при загрузке или обновлении проекта из хранилища.
Если изменить параметры проекта Java в UI, то изменения будут автоматически записаны в файл в каталоге .settings. (Содержимое файла параметров генерируется автоматически, и вручную изменять его не следует.) |
|
|
Переход к особым параметрам проекта |
Страницы параметров можно также настроить для отдельных проектов. К ним ведет специальная ссылка.
|
|
|
Расположение Javadoc сохраняется в файле .classpath |
Расположение Javadoc для файлов JAR и папок классов сохраняется в файле .classpath и может быть использовано в работе над общим проектом.
При запуске 3.1 фоновое задание перенесет все расположения, ранее хранившиеся локально, в файл .classpath.
Расположения Javadoc применяются действием 'Открыть внешний Javadoc' (CTRL + F2) и мастером Javadoc. |
|
|
Горячие клавиши для быстрых исправлений и помощи |
Некоторые из часто применяемых вариантов быстрой помощи, такие как Переименовать в файле и Присвоить локальной переменной вызываются с помощью
Ctrl+2 R и Ctrl+2 L. Список горячих клавиш для других вариантов доступен на странице параметров клавиш.
|
|
|
Новые быстрые исправления |
Для нескольких опций компилятора Java были добавлены новые быстрые исправления:
|
|
|
Новая быстрая помощь |
Новая Быстрая помощь (Ctrl+1) в редакторе Java:
|
|
|
Отмена и повтор рефакторинга из меню Правка |
Отмена и повтор рефакторинга теперь входит в меню Правка. Отдельные действия Отмена и повтор рефакторинга были удалены из главного меню. Кроме того, отмена и повтор рефакторинга объединены с действиями Отмена и повтор редактора Java, что упрощает работу. Например, рефакторинг, сделанный в редакторе, можно отменить, нажав Ctrl+Z. |
|
|
Модификация области видимости элемента |
Команды рефакторинга Переместить метод, Переместить тип элемента в новый файл, Переместить статический элемент, Повысить уровень и Понизить уровень теперь автоматически изменяют область видимости участников операции, когда это необходимо.
|
|
|
Рефакторинг Переместить метод |
Команда Рефакторинг > Переместить теперь поддерживает перемещение методов экземпляра,
а именно:
|
|
|
Рефакторинг Использовать базовый тип, если это возможно |
Рефакторинг Использовать базовый тип, если это возможно был расширен. Новый параметр позволяет указать, следует ли обновлять вхождения типов в выражениях instanceof :
|
|
|
Меню Путь компоновки в панели Структура пакетов |
Контекстное меню панели Структура пакетов содержит новый пункт 'Путь компоновки'. С его помощью выполняются контекстно-зависимые действия для изменения пути компоновки проекта Java.
Можно добавлять и удалять исходные папки, архивы и библиотеки, включать и исключать файлы и папки в качестве исходных:
|
|
|
Новый встроенный профиль форматирования кода в Eclipse |
Хотя в Eclipse 3.0 профиль форматирования кода по умолчанию назывался Соглашения Java, в этом профиле отступы выполнялись табуляцией, а не пробелами. Был добавлен новый профиль, названный Eclipse, который отражает этот стиль форматирования отступов табуляцией. Для того чтобы использовать действительные параметры Соглашения Java, включите профиль Соглашения Java на странице Java > Стиль кода > Форматирование. |
|
|
Изменение сразу нескольких строк - параметр переноса строк |
На странице форматирования кода Java можно указать, изменять нужно сразу несколько строк, если выбрать их в дереве и применить изменения:
Эти параметры задаются на странице Java > Стиль кода > Форматирование кода. |
|
|
Смешанные варианты отступа |
В параметрах форматирования кода Java можно указать, что размер табуляции должен отличаться от размера отступа (вкладка Отступ профиля форматирования):
Например, задайте Размер табуляции равным 8 и Размер отступа равным 4, чтобы отступ в коде выполнялся четырьмя пробелами. Если Правило табуляции задано как Смешанное, каждые два отступа будут заменены на символ табуляции. Профили форматирования можно настроить на странице Java > Стиль кода > Форматирование. |
|
|
Первыми запускать тесты, которые не были пройдены |
В панели JUnit есть новое действие для того, чтобы первыми запускать тесты, которые не были пройдены.
|
|