Новое в 3.3 (JDT)

Ниже перечислены наиболее значимые изменения средств разработки на Java, вошедшие в выпуск 3.3 Eclipse, а именно:

Ознакомьтесь также с разделом Платформа Eclipse - новое в 3.3, где описаны нововведения платформы.


Действия для рефакторинга и для работы с исходным кодом Java

Рефакторинг без сохранения

Для выполнения рефакторинга более не требуется сохранять данные во всех редакторах. Рефакторинг будет работать правильно, даже если в редакторах Java или текстовых редакторах будут несохраненные изменения. Если вы не хотите использовать редакторы с несохраненными изменениями после рефакторинга, то можно указать, что измененные ресурсы всегда должны сохраняться, на странице Параметры Java параметров Java.

Рефакторинг переименования в редакторе

Рефакторинг переименования Java может выполняться непосредственно в редакторе, а не в отдельном окне.

При выборе действия Рефакторинг > Переименовать (Alt+Shift+R) в редакторе Java редактор переходит в связанный режим вместо открытия модального окна. Изменения применяются в рабочей области при нажатии клавиши Enter.

Режим встроенного переименования

Для того чтобы настроить параметры рефакторинга, нажмите Alt+Shift+R еще раз или в меню выберите Открыть окно переименования....

Если вы хотите использовать прежнее модальное окно, то можно выключить опцию Переименовать в непосредственно в редакторе на странице Параметры Java параметров Java.

Рефакторинг Представить объект параметров

Представить объект параметров - это новый вид рефакторинга, который заменяет набор параметров метода новым контейнерным объектом. Все вызовы метода будут обновлены, чтобы при этом они обращались к новому классу объекта параметров.

Варианты использования:

  • логическая группа параметров, например: Date start, Date end, String newValue, String oldValue
  • уменьшение числа параметров
  • значения по умолчанию в объекте параметров
  • передача параметров по цепочке вызовов

Для того чтобы выполнить рефакторинг Представить объект параметров, выберите метод, затем выберите Рефакторинг > Представить объект параметров, укажите параметры, которые будут полями, и присвойте им описательные имена.

Окно Представить объект параметров

Показанный на рисунке фрагмент кода

метод до рефакторинга

примет следующий вид:

метод после рефакторинга

Множественная сортировка элементов

Действие Сортировать элементы может применяться сразу для нескольких элементов. Выберите пакет, проект или набор элементов Java в панели Структура пакетов и затем выберите Исходный текст > Сортировать элементы.

Сортировать элементы

Профайлы очистки

Вместо мастера Исходный текст > Очистка теперь предусмотрена страница параметров. На этой странице можно настроить профайлы очистки. Профайл можно связать с рабочей областью или с отдельным проектом. Параметры проекта можно сделать общими посредством системы управления версиями. Каждый профайл можно также экспортировать и импортировать.

Очистка

Новые варианты очистки

Реализованы следующие новые варианты очистки:

  • Отформатировать исходный код: эти параметры настраиваются на странице Форматирование.
  • Удалить лишние пробелы: можно удалить лишние пробелы в конце строк или игнорировать пустые строки.
  • Реорганизовать импорты: импорты будут упорядочиваться согласно параметрам проекта или рабочей области.
  • Сортировать элементы: можно отсортировать все элементы единицы компиляции или же игнорировать поля, константы перечислений и инициализаторы (так как их сортировка может привести к нарушению работы кода).
Редактор Java

Очистка кода при сохранении

Теперь при сохранении редактора Java можно автоматически выполнять очистку кода. Эту опцию можно включить глобально на странице Действия при сохранении Java > Редактор > Действия при сохранении. Действия при сохранении можно также настроить для проекта, что позволяет применять общие параметры для проекта в группе:

Действия при сохранении

Помощник по содержимому для импорта избранных статических элементов

Помощник по содержимому (Ctrl+пробел) теперь может предлагать варианты дополнений для статических элементов из списка избранных вариантов, настроенного на странице параметры Избранного Java > Редактор > Помощник по содержимому > Избранное.

Например, если в этот список добавлен java.util.Arrays.*, то все статические методы этого типа, совпадающие с приставкой, будут добавлены в список вариантов:

варианты помощника по содержимому

В этих вариантах учитываются параметры импорта, настроенные на странице параметров Открывает страницу параметров Помощника по работе с содержимым Java > Редактор > Помощник по работе с содержимым.

Помощник по содержимому для переменных с неизвестным типом

В зависимости от параметра параметры помощника по содержимому Java > Редактор > Помощник по содержимому > Добавить import вместо полного имени редактор Java будет либо автоматически добавлять объявление import, либо приводить полные типы для таких вариантов.

Нажмите ;, как показано ниже:

помощник по содержимому для переменных с неизвестным типом

и в результате получится:

помощник по содержимому, результат ';'

Помощник по содержимому предлагает варианты объявления для неопределенных локальных переменных

Помощник по содержимому может определять вариант объявления локальной переменной по ее использованию далее в коде, как показано на рисунке:

варианты для неизвестных переменных

Другие улучшения помощника по содержимому

  • Помощник по содержимому (Ctrl+пробел) может определять имена типов исключительной ситуации в блоке try-catch по вариантам исключительных ситуаций, генерируемым в соответствующем блоке try. Эти исключительные ситуации показываются перед прочими вариантами.
  • При дополнении ссылки на имя помощник по содержимому предлагает варианты неопределенных имен, найденных в других частях кода.
  • Варианты дополнений кода в пустых операторах теперь включают локальные типы в текущей единице компиляции.
  • Варианты дополнений кода после символа @" включают все видимые типы аннотаций.
  • Варианты дополнений кода в элементе аннотации включают все еще не указанные атрибуты.

Варианты быстрой помощи

Функции, ранее доступные только из меню Рефакторинг, теперь также включены в быструю помощь (Ctrl+1). Как обычно, варианты быстрой помощи предлагаются не в отдельном окне, а в связанном режиме, где можно изменить типы имен.

  • Извлечь в локальную переменную и Извлечь в константу: выберите выражение в коде
  • Встроить локальную переменную: доступно для имени переменной
  • Преобразовать локальную переменную в поле: доступно для имени переменной
    Быстрая помощь - Извлечь локальную переменную
  • Преобразовать анонимный тип в локальный: доступно для имени типа анонимного класса
    Преобразовать анонимный класс во вложенный - до
    При работе с этой функцией клавишей Tab пройдите по созданному коду, чтобы изменить имя нового типа и выбрать варианты имен полей и параметров.
    Преобразовать анонимный класс во вложенный - после

Быстрое исправление для создания метода из @Override

При добавлении аннотации @Override в метод, для которого переопределение еще не создано, быстрое исправление (Ctrl+1) предложит создать метод в одном из базовых типов.

Быстрое исправление для создания методов get и set

Для поля, недоступного из-за ограничений видимости, предусмотрено быстрое исправление. В следующем сценарии нажмите Ctrl+1 для вызова быстрого исправления:

невидимое поле

Если для этого поля существует метод get, то его можно использовать.

использовать метод get

Если для этого поля не существует метод get, то его можно создать.

создать метод get

Шаблон для добавления методов тестирования JUnit 4

Новый шаблон Тестирование позволяет быстро добавлять методы тестирования JUnit 4.

Выделение цветом скобок

Параметры цветового выделения скобок можно настроить на странице Выделение синтаксиса цветом Java > Редактор > Выделение синтаксиса цветом:

Редактор Java - красные скобки и синие операторы

В конференциях больше не пишут: "Не вижу исходный текст"

По умолчанию теперь скрыта группа команд, содержащая кнопку панели инструментов Показывать исходный код только выбранного элемента кнопка панели инструментов. Этот параметр можно настроить на странице Редактор Java - параметры Java > Редактор > Показывать только выбранный элемент Java.

Настройка шрифта Javadoc

Настроить шрифт Javadoc можно на странице Цвета и шрифты Общие > Вид > Цвета и шрифты. Шрифт для Javadoc применяется в панели Javadoc, в подсказках Javadoc и для показа дополнительной информации помощника по содержимому.

Панель Javadoc с другим шрифтом

Цвет фона для подсказок по исходному коду

Цвет фона для подсказок по исходному коду в редакторе Java можно настроить на странице Редактор Java - параметры Java > Редактор.

подсказка по коду - цвет фона

Редактор файлов классов показывает дизассемблированный код

Редактор файлов классов Java показывает дизассемблированный байт-код, если исходный код недоступен.

Редактор файлов классов - дизассемблированный код

Компилятор Java

Улучшенная обработка повторяющихся локальных переменных и типов

Обработка ошибочного кода с повторяющимися локальными переменными и типами оптимизирована, в особенности исключены вторичные ошибки. Это позволяет применять инструменты Java в коде с ошибками, например, для быстрых исправлений.

  • Локальное переименование (Ctrl+2,R) теперь работает даже в ошибочных вложенных циклах, и возможно быстрое исправление имени повторяющейся переменной во всех местах, где она применяется.

    Переименование повторяющейся локальной переменной


  • Вызов метода или доступ к полю посредством повторяющейся переменной теперь ограничивается ближайшим определением локальной переменной. При этом уменьшается число вторичных ошибок.

    Вызов метода с повторяющейся локальной переменной

Улучшенная проверка сравнения с null

Существующая опция Ссылка на null на странице параметров Открывает страницу параметров Ошибки/предупреждения Java > Компилятор > Ошибки/Предупреждения разделена на три опции:

  • Обращение к пустому указателю ('Потенциальные ошибки программирования')
    Если эта опция включена, то компилятор будет сообщать об ошибке или предупреждении при любой попытке использования переменной, которая статически ссылается на null, для получения доступа к полю или методу, см.

    Пример обращения к пустому указателю


  • Возможное обращение к пустому указателю ('Потенциальные ошибки программирования')
    Если эта опция включена, то компилятор будет сообщать об ошибке или предупреждении при любой попытке использования переменной, которая может статически ссылаться на null.

    Возможное обращение к пустому указателю


  • Лишняя проверка на null ('Ненужный код')
    Если эта опция включена, то компилятор будет сообщать об ошибке или предупреждении при любой попытке сравнения с null переменной, которая статически равна или не равна null, см.

    Лишняя проверка на null


    Лишняя проверка на null

Предупреждение для непараметризованных типов включено по умолчанию

Необязательный параметр компилятора для обнаружения применения непараметризованных типов включен по умолчанию.

Этот параметр можно настроить на странице Ошибки/предупреждения Java > Компилятор > Ошибки/предупреждения, параметр Параметризуемые типы > Использование непараметризованного типа.

Предупреждение о непараметризованных типах

Расширенное предупреждение о неиспользуемом параметре

Предупреждение о неиспользуемом параметре теперь включает в себя опцию обнаружения ложных срабатываний. Компилятору можно указать, что параметр будет использоваться, если добавить тег комментария @param.

Эта опция включается на странице Ошибки/предупреждения Java > Компилятор > Ошибки/предупреждения, в разделе Лишний код.

Ошибки/предупреждения

Панели и окна Java

Выделение меток цветок в панелях Java

В окне Открывает страницу параметров представления Java > Вид можно настроить выделение цветом меток в панелях Java, выберите Использовать цветные метки.

Структура пакетов - цветные метки

Оформление для полей типа transient и volatile

Поля типа transient и volatile теперь оформляются соответствующими значками:

поля transient и volatile

Группировка JAR и папок классов в панели Структура пакетов

В панели Структура пакетов связанные библиотеки теперь группируются в новый контейнер.

Структура пакетов - сгруппированные библиотеки

Дополнительные возможности поиска Java

В окне поиска Java теперь доступны расширенные возможности управления областью поиска в исходных текстах, проектах, библиотеках JRE и библиотеках приложений.

окно поиска с новыми опциями поиска

Фильтр поиска ссылок на переопределенные методы

Служба поиска Java теперь содержит новый критерий для категоризации совпадений ссылок на методы. Вызов из типа или одного из его производных типов отличается от вызова из базового типа (последний считается менее точным совпадением). В панели Поиск реализован фильтр, позволяющий дополнительно уточнить ссылки на искомый метод.

В следующем примере пользователь искал ссылки на метод A.toString() и получил три совпадения. Так как o.toString() - это вызов метода, переопределенного искомым методом A.toString(), его можно отфильтровать из панели Поиск фильтром "Ссылки на переопределения", как показано ниже:

Фильтр ссылок на переопределения

Примечание: по умолчанию фильтр "Ссылки на переопределения" не включен.

Выбор среды выполнения при создании проекта Java

При создании общего проекта Java рекомендуется использовать среду выполнения, а не конкретную JRE.

Среда выполнения - это символическое представление JRE в стандартном виде, например, 'J2SE-1.4', 'J2SE-1.5'. Это означает, что пути файловой системы не будут применяться в общем пути компоновки.

JRE можно связать с средами на странице Среды выполнения Java > Установленные JRE > Среды выполнения.

мастер Создать проект Java

Добавление нового проекта Java в рабочий набор

В мастере создания проекта Java появились дополнительные поля для указания рабочих наборов, к которым добавляется новый проект. Эти поля инициализируются из текущего выбранного набора или фильтра активных рабочих наборов в панели Структура пакетов.

мастер Создать проект Java

Присвоение рабочих наборов

Реорганизация элементов Java или ресурсов в рабочих наборах стала проще. Для того чтобы присвоить элемент другому рабочему набору, выберите элемент в панели Структур а пакетов и выберите в контекстном меню Присвоить рабочие наборы....

Присвоить рабочие наборы

При вставке объявления типа создается новый проект

Хотите быстро проверить присланный фрагмент кода? Скопируйте фрагмент в буфер обмена, перейдите в панели Структура пакетов, отмените выбор любых элементов и нажмите Правка > Вставить (Ctrl+V).

Eclipse проанализирует текст в буфере обмена и, если он пригоден для создания файла *.java, создаст новый проект Java и файл *.java.

после вставки (файл *.java создан и открыт)

Разумеется, как и в версии 3.2, можно выбрать существующий проект или пакет как целевой для нового файла.

Расширенная вставка в панели Структура пакетов

При вставке текста Java с несколькими объявлениями пакетов в панель Структура пакетов автоматически будут созданы все необходимые пакеты и единицы компиляции. Структура в правой части будет создана, если фрагмент кода из левой части будет вставлен в панель Структура пакетов, в которой ничего не выбрано:

package a;
public class Target {
}

//--
package b;
import a.Target;
public class Test {
  void reference() {
    new Target();
  }
}
            
Структура пакетов - создана структура проекта и пакетов

Отмена удалений в панелях Java

Действие Правка > Отменить теперь работает и для удаления элементов Java в панелях Java. Случайно удаленные пакеты, единицы компиляции и пр. можно восстановить нажатием Ctrl+Z.

Перетаскивание мышью элементов Java в панели Структура проекта

При перетаскивании мышью элементов Java в панели Структура проекта генерируются события рефакторинга Java.

перетаскивание мышью Java

Экспорт и импорт тестов JUnit

Прогоны тестов JUnit теперь можно экспортировать и импортировать.

панель JUnit - действия импорта и экспорта

Eclipse может читать собственные файлы XML с прогонами тестов, а также файлы XML, созданные при выполнении задач Ant JUnit.

Действие Открыть тип работает с несколькими типами

В окне Открыть тип (Ctrl+Shift+T) теперь можно открыть сразу несколько редакторов за раз.

Открыть тип - несколько типов

Шаблон для поиска пакетов и вмещающих типов

Шаблоны с символами '*' или '?' теперь могут применяться для пакетов и вмещающих типов в окне Открыть тип.

Открыть тип: java.*.ChangeHandler

Отладчик Java

Переход по ссылкам (только Java SE 6)

Можно показать все ссылки на объект (только при отладке в виртуальной машине Java SE). Ссылки на объекты показываются в панели Переменные при выборе опции Показать ссылки в меню панели. Ссылки на различные объекты сгруппированы в наборы.

меню панели - Показать ссылки

Ссылки также можно показать в всплывающем окне. Для этого выберите объект в панели Переменные и в контекстном меню выберите Все ссылки.

контекстное меню - Все ссылки

Ссылки будут показаны в всплывающем окне.

всплывающее окно с ссылками

Показ экземпляров (только Java SE 6)

Можно показать все экземпляры типа Java (только при отладке в виртуальной машине Java SE). Экземпляры будут показаны в всплывающем окне. Для этого выберите тип в схеме редактора, введите имя типа в редакторе Java или имя переменной в панели Переменные и в контекстном меню выберите Все экземпляры.

контекстное меню - Все экземпляры

Экземпляры будут показаны в всплывающем окне.

окно с экземплярами

Принудительный возврат (только Java SE 6)

Можно выполнить принудительный возврат из метода (только при отладке в виртуальной машине Java SE). При этом будет возвращено значение из текущего фрейма стека. Никакие инструкции метода больше выполняться не будут, а все блокировки в точках синхронизации будут удалены. Возвращаемое значение создается при выборе выражения и действии Принудительный возврат (Alt+Shift+F). Это действие доступно в контекстном меню редактора Java, меню Выполнить, в панели Показать и в окне сведений панели Переменные.

Принудительный возврат из метода, возвращающего непустое значение, требует указания выражения. Например, если метод возвращает значение false, то можно возвратить значение true, выбрав выражение в панели Показать и вызвав Принудительный возврат. В следующем примере значение elementCount не равно нулю, и метод возвратил бы false (наведите мышь для подсказки на elementCount).

метод возвращает false, когда elementCount != 0

Используйте Принудительный возврат из меню панели Показать, чтобы возвратить значение true.

Принудительный возврат из контекстного меню

Пошаговое прохождение гиперссылок

При отладке можно пройти в метод по гиперссылкам. Нажмите Ctrl+Alt+щелчок для входа в метод (Ctrl+щелчок ведет к исходному коду).

Пошаговое прохождение гиперссылок (Ctrl+Alt)

Двойной щелчок и Ctrl+Shift+B для всех видов точки прерывания

Двойной щелчок на вертикальной линейке или действие Переключить точку прерывания (Ctrl+Shift+B) теперь создает соответствующий вид точки прерывания в позиции курсора - точка прерывания в строке, точка наблюдения точка прерывания в методе или точка прерывания загрузки класса. Для того чтобы создать точку прерывания загрузки класса дважды щелкните на строке с объявлением класса.

точка прерывания загрузки класса

Проход через фильтры и выход

Пошаговые фильтры можно настроить так, чтобы возвращаться из отфильтрованного расположения или проходить дальше через фильтр. Например, если отфильтрованным расположением является java.util, то вход в метод HashMap мог бы привести к обратному вызову кода приложения для проверки равенства объекта. Если включен режим Проход сквозь фильтры, то при пошаговом входе вы попадаете в код приложения. Если же режим Проход сквозь фильтры выключен, то вход в HashMap равнозначен пропуску этого шага.

Параметр Проход сквозь фильтры указывается на странице Пошаговая фильтрация Java > Отладка > Пошаговая фильтрация.

Автоматическое форматирование трассировки стека

Автоматическое форматирование трассировки стека выполняется при вставке ее в консоль трассировки стека Java. Кнопка Автоматическое форматирование доступна на панели инструментов консоли.

Автоматическое форматирование - панель инструментов консоли трассировки стека

Экспорт логических структур

Параметры логических структур Java можно экспортировать и импортировать отдельно от прочих параметров рабочей области. Логические структуры Java настраиваются на странице Открывает страницу параметров Логические структуры Java > Отладка > Логические структуры. Логические структуры применяются для альтернативного представления сложных структур данных и показываются при просмотре объектов в панели Переменные. Например, можно показать java.util.Collection как массив вместо показа внутренней структуры этих данных.

Экспорт логических структур

Разное

Новые параметры форматирования исходного кода

Страница параметры - форматирование Java > Стиль кода > Форматирование содержит новые опции.

  • Форматирование комментариев теперь выполняется отдельно для каждого типа комментария (Javadoc, блок, строка или заголовок). Для блочных и строчных комментариев можно выключить отступ.

    параметры - форматирование


  • Число пустых строк, вставляемых при действии Реорганизовать объявления импорта (Ctrl+Shift+O), можно настроить на вкладке Пустые строки. При форматировании этот параметр имеет приоритет при вычислении числа пустых строк.

    форматирование - число пустых строк между группами импорта


  • Двоичные выражения теперь могут выделяться до или после оператора.

    параметры - форматирование


  • Для оператора return можно указать число пробелов перед выражением в скобках блока throw. Эта опция доступна на вкладке Пробел.

    форматирование - число пробелов для throw

Права доступа для среды выполнения

Права доступа присваиваются для каждой среды выполнения на основе профайла. Например, может быть запрещен доступ к пакетам com.sun.*, которые могут отсутствовать во время выполнения. Эти правила применяются только для проектов с указанными средами выполнения. Проекты, привязанные к конкретной JRE, будут иметь доступ ко всем ее библиотекам.

Правила доступа для системных библиотек

Нерекомендуемые и неизменяемые переменные пути к классам

Системные переменные classpath могут быть объявлены нерекомендуемыми и/или доступными только для чтения с помощью точки расширения org.eclipse.jdt.core.classpathVariableInitializer.

Пользователи должны применять вместо нерекомендуемых переменных classpath другие механизмы, например, библиотеки.

путь компоновки Java - нерекомендуемые переменные

Для некоторых переменных (например, JUNIT_HOME) в панели Неполадки предусмотрены быстрые исправления для переноса существующих проектов.

Относительные пути рабочей области для расположения Javadoc

Для расположения Javadoc для архивов и папок с классами могут применять пути относительно рабочей области:

окно настройки расположения Javadoc

Динамическая генерация типов

Обработка аннотаций Java 5 (APT) была включена в Eclipse 3.2, но до сих пор новые типы генерировались только при компоновке. Обработчики аннотаций Java 5 теперь могут генерировать новые типы прямо в момент редактирования аннотаций. Эта функция по умолчанию выключена из соображений производительности. Для того чтобы ее включить, обработчик должен содержать строку "enableTypeGenerationInEditor" в наборе, возвращаемом из AnnotationProcessorFactory.supportedOptions().

Обработка аннотаций Java 6

Eclipse 3.3 полностью поддерживает обработку аннотацией Java 6 в пакетном компиляторе Java Eclipse. Некоторые функции обработки аннотаций Java 6 реализованы и в IDE, но полная поддержка будет в будущем.