Вчера JetBrains опубликовал превью IntelliJ IDEA 15.

Для тех, кто не участвует в EAP, это возможность познакомиться с новой версией. Для нас это возможность рассказать о том, над чем мы работали в последнее время.

image

Во-первых, продолжая адаптировать IDE к Java 8, мы улучшили взаимодействие дебаггера с лямбда выражениями. Теперь при установке брейкпоинта вы можете указать не всю строку, а конкретное лямбда выражение, которое в ней содержится. Точно также вы можете применять Run to cursor по отношению конкретному лямбда выражению вне зависимости от того, на какой строке оно находится. И наконец если вы вызываете Step Into, IDE предложит перейти к лямбда выражению, являющемуся параметром.

image

Кроме того в дебаггер был добавлен экшн Force return, который позволяет прервать исполнение текущего метода и вернуть выбранное вами значение. Это удобно, если вы хотите поменять логику выполнения кода в целях отладки.

Во-вторых, недавние улучшения алгоритма индексации позволили реализовать инспекцию для мгновенного обнаружения дубликатов кода. Теперь если напишете или скопируете код, уже содержащийся в другой части проекта, IDE сразу же вам об этом сообщит и покажет совпадения. Чтобы сделать инспекцию ненавязчивой, мы показываем только совпадения длиннее 5-ти строк.

image

Интерфейс также подвергся изменениям. Run configurations теперь имеют индикаторы состояния. Если конфигурация типа Single instance only, кнопка Run будет выглядеть как Restart.

image

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

image

Появилась возможность скрывать ненужные Tool windows не отключая при этом плагин. Для этого достаточно выбрать пункт Remove from Sidebar в меню соответствующего Tool window.

Функция поиска текста также стала удобнее. Когда вы вызываете Find in Path, теперь IDE умеет отображать результаты мгновенно в закладке Preview. Это позволяет тратить меньше времени на переход в окно поиска и обратно.

image

Rebase стала полноценной операцией и доступна в меню Branches, унаследовав синхронные операции над несколькими репозиториями, автоматический стешинг (stashing) локальных изменений и резолв конфликтов. Само меню Branches стало доступно из закладки Log.

image

При нажатии на гаттер, IDE теперь выделяет изменения отдельных частей строки. Также гаттер научился отличать изменения whitespace от других изменений: грязно-желтый цвет вместо синего.

Во время операции по резолву конфликтов теперь можно пользоваться командой Undo. В Diff viewer был добавлен экшн Annotate.

Пользователи Mercurial получили инструменты для работы с патчами. Пользователи Perforce получили возможность хранить локальные изменения на сервере Perforce: операция Shelve in Perforce.

Плагин для работы с Docker улучшился за счет удобного редактирования настроек контейнера; быстрого создания контейнера для выбранного имаджа; и поддержки Docker Toolbox.

image

Мы поддержали новые возможности добавленные в Spring 4.2: @Bean на дэфолтных методах в интерфейсах; @Import для обычных классов; аннотации @EventListener, @AliasFor, и @ContextConfiguration.

image

Улучшена поддержка Spring Boot проектов: добавлены подсказки в application.yml и additional-spring-configuration-metadata.json файлах; добавлена автоматическая настройка фасета на основе аннотаций; улучшено создание проектов через Spring Initializr.

Для Arquillian мы добавили возможность конфигурации контейнеров. Затем контейнер можно указать при запуске тестов.

В Scala плагине были добавлены поддержка SAM (single abstract method); интеншн для развертывания макросов; Postfix комплишн; Inline рефакторинг дла Type aliases; а также распознавание динамических имен тестов (например “test(variable)” или “test(stringExpression)”).

Язык Kotlin, разрабатываемый в недрах JetBrains, приближается к скорому релизу, внося последние важные изменения в синтаксис, совместимость с Java, и поддержку IDE. Результатом этой работы стало то, что плагин для Kotlin теперь поставляется вместе с IDE. Для тех, кто не знаком с Kotlin, а также тех, кто давно не интересовался им, это прекрасная возможность исправить это. Подробнее о последних изменениях можно прочитать в блоге Kotlin.

Работая над Kotlin и Scala мы не забываем и про Groovy. Для него мы добавили поддержку Builder AST трансформации.

Фронтенд разработчики, использующие React, будут рады узнать об улучшенной поддержке в JSX файлах: добавлены комплишн, инспекшны, Surround with экшн, и навигация.

image

Также добавлена поддержка новых языковых конструкций TypeScript 1.6 и некоторые EcmaScript 7 (например async/await).

Не секрет, что JetBrains трудится над новой IDE для работы с SQL и базами данных. Поскольку IntellIJ IDEA включает этот функционал, стоит упомянуть его улучшения. Главным из них является нативная и быстрая интроспекция: получение информации об объектах базы данных с учетом специфики неучтенной в JDBC драйверах. Также появился удобный редактор таблиц, и возможность смотреть Execute plan для запросов.

image

Кроме прочего превью включает изменения Android Studio 1.3, включая Android Memory (HPROF) Viewer и Allocation Tracker.

Буду рад ответить на любые вопросы!

Комментарии (49)


  1. Googolplex
    02.10.2015 15:48
    +2

    Дебаг лямбда-выражений по отдельности — это очень круто, но очень хотелось бы такое получить в Scala-плагине для анонимных функций. Это одна из немногих вещей, отсутствие которой делает дебаг сложных выражений со многими функциями высшего порядка очень неудобным. Планируется ли что-то такое?


    1. andreycheptsov
      02.10.2015 15:55
      +10

      Для Scala это теперь тоже работает.


      1. Googolplex
        02.10.2015 16:57
        +1

        Потрясающе!


      1. divor
        03.10.2015 14:29

        а Kotlin?


        1. andreycheptsov
          03.10.2015 16:18

          Да, для Kotlin тоже работает.

          Для Groovy еще в процессе: youtrack.jetbrains.com/issue/IDEA-145578


  1. itspers
    02.10.2015 17:24
    +2

    Немного не в тему, но есть ли в текущих стабильных версиях какие-либо актуальные ключи для принудительного НЕ включения дискретной графики на макбуках?
    Что-то типа devnet.jetbrains.com/message/5509880


    1. andreycheptsov
      02.10.2015 17:52

      Вообще проблем не должно наблюдаться. Если у вас что-то такое было, то напишите продукт и версию.


      1. itspers
        02.10.2015 18:08
        +1

        Так с точки зрения OS и IDE проблем и не наблюдается. Запускается джава-приложение, рендерит в OpenGL и ему включается GPU.
        У меня вот запущен PhpStrom версии 141.24_62, я пробовал на всякий случай ему ставить ключи и той ссылки, что я писал вверху — но он не реагирует (особо и не надеялся — топик старый, но лучше не нашел). А с постоянно включенным радеоном бедняга переводит батарею в тепло за 4 часа. Поэтому я поставил программку, которая принудительно позволяет переключать на интергрированное видео. Жить можно, но на всякий случай решил спросить, может есть какой-то современный ключ для конфига…


        1. enDal
          02.10.2015 18:55

          Эта проблема исправлена, в продуктах с версией 142 включаться не должно уже


  1. Darthman
    02.10.2015 17:35
    -2

    Можно вопрос человека, не использовавшего никогда эту IDE, но постоянно на неё посматривающего?
    А тёмная тема для IDE есть? Я вот не люблю жирные ключевые слова и белый фон, у меня от такого быстро глаза болеть начинают.


    1. Kokker
      02.10.2015 17:40
      +6

      Есть, и она прекрасна. Там не только фон становится темным, но и все интерфейсные элементы. Картинки


      1. Darthman
        02.10.2015 18:10

        Спасибо, то что нужно.


    1. dzigoro
      02.10.2015 17:42
      +2

      Есть, конечно, Darcula


    1. andreycheptsov
      02.10.2015 17:45
      +1

      Можно посмотреть например здесь: www.jetbrains.com/idea/features/darcula_retina.html


      1. TachikomaGT
        02.10.2015 18:17

        Классная страница. Жаль только что ещё далеко не все иконки стандартных плагинов, в том числе и достаточно распространённых, таких как maven, grails или testNG адаптированы под retina.


        1. andreycheptsov
          02.10.2015 19:19

          Вообще страница старая, в IDE уже почти все обновлено.


          1. TachikomaGT
            02.10.2015 19:35

            Увы, специально скачал 15-ю чтобы проверить.


            1. andreycheptsov
              02.10.2015 19:36
              +1

              О как, проверим!


    1. yarg
      05.10.2015 08:52
      +2

      А ещё есть замечательный сайт с сотней тёмных (и сотней светлых) тем: ideacolorthemes.org


  1. calx
    02.10.2015 17:51
    +6

    Есть какой-то шанс, что под линуксом когда-нибудь появится нативный рендеринг шрифтов?


    1. stalk
      02.10.2015 18:40
      +13

      Да. Для этого мы наладили выпуск собственной JRE, построенной на базе OpenJDK. Там у нас есть возможность фиксить проблемы рендеринга без участия Oracle. Мы постараемся открыть доступ к сборке под линукс для особо нуждающихся, чтобы собрать фидбек. В ближайший релиз мы не успеем всё протестировать, чтобы гарантировать качество на всех Линуксах.
      image


      1. calx
        02.10.2015 23:30
        +1

        Да пребудет с вами сила!


      1. boblenin
        03.10.2015 23:07
        +1

        Есть ли хотя бы какая-то фича, о которой вас спрашивают и она не в процессе или не готова? :)


        1. BaRoN
          06.10.2015 17:17

          Я сам зрячий, но предположу, что с Voiceover всё не так радужно :-)
          А для видящих — отличное IDE :)


          1. stalk
            09.10.2015 19:23
            +2

            Чтобы не быть голословным:
            1. Это сравнение шрифтов в NetBeans (красное подчёркивание) и в идее с нашей новой прокаченой JRE.
            drive.google.com/a/stalk.ru/file/d/0B8b1GSZZalvKRHFDS3g1T0YxUmc/view

            2. С Voiceover не всё так гладко, но мы сейчас его делаем вместе ребятами из Гугла. Пруф.
            tools.android.com/tech-docs/accessibility/editor
            android-review.googlesource.com/#/c/136471

            Про людей без конечностей мы уже начали думать www.youtube.com/watch?v=eARvFI7hm40 (это один из участников Хакатона 2015)


        1. stalk
          09.10.2015 19:13

          Не припомню такой.


    1. Lol4t0
      02.10.2015 23:28

      Да вроде он и сейчас нормальный, нет?

      image


      1. calx
        02.10.2015 23:40

        Увы, нет. Вот, например, Consolas 13 в Sublime и в IDEA:
        https://habrastorage.org/files/b98/4d5/7ca/b984d57ca08b4b50b998a4c3b56d41c5.png


        1. Lol4t0
          02.10.2015 23:45

          Попробуйте прост понднстроить рендеринг. У меня не наблюдается такой разницы
          image

          (На фоне — idea)


          1. calx
            03.10.2015 00:03
            +1

            Что вы имеете в виду под «поднастроить»? У вас на скриншоте видна разница, правда не такая бросающаяся в глаза, как у меня, да.

            Antialiasing для JVM переменными окружения я ставил, но это имеет лишь некоторый позитивный эффект. Я изготовил шрифт Consolas без hinting и он выглядит несколько лучше, но имеются другие косяки, а именно некоторые штрихи стали непропорционально толще. В Ubuntu рендеринг шрифтов патченный, а у меня Arch. Ставил Infinality. Всё равно не то.

            Все программы, включая Sublime, Eclipse и прочие, рендерят шрифты одинаково и только в IDEA у меня что-то иное. Из-за этого и не пользуюсь этой, во всех остальных отношениях замечательной, IDE. Это такая странная тема, я согласен. Коллеги недоумённо качают головой, когда я пытаюсь показать им в чём разница и почему я сижу в Sublime. Но она есть и я не могу её не замечать.


            1. Lol4t0
              03.10.2015 00:25

              Отличается начертание самого шрифта — потому что это разные шрифты — но я бы не сказал, что один шрифт хуже или лучше второго, и что один рендерится хуже или лучше второго


              1. calx
                03.10.2015 00:33
                +4

                Ну что вы меня обманываете? :( Мой пойнт в том, что один и тот же шрифт рендерится по-разному там и здесь.


                1. Lol4t0
                  03.10.2015 00:39

                  А мой в том — что и в idea рендерится хорошо :)

                  Мне как-то больше важно, чтобы смотрелся хорошо, а не конкретное начертание.

                  Ну и если честно, то я и сам забыл, что шрифты отличаются. в Idea — source code pro


        1. semmaxim
          04.10.2015 23:38

          А в чём проблема, не подскажете?


  1. MaximChistov
    02.10.2015 19:59

    Оффтоп: никто не подскажет, как включить отображение табов стрелками в идее под виндовс? Не смог найти :(


    1. stalk
      02.10.2015 21:27
      +2

      Сначала так screencast.com/t/FrxQ0nxqNb61 потом так screencast.com/t/0ygCkHrlnycm для определённого языка


      1. MaximChistov
        02.10.2015 23:47

        спасибо :)


        1. grossws
          03.10.2015 01:05

          Второе не нужно, кроме того случая, если вы хотите при нажатии tab вставлять \t, а не соответствующее количество пробелов.


          1. MaximChistov
            03.10.2015 01:09

            да я догадался)



  1. vba
    05.10.2015 10:34

    Добрый день,

    Скажите пожалуйста, планируете ли вы добавить в IDEA решения типа Continuous Testing, на подобие того что команда из R# добавит в DotCover след версии? Заранее благодарен за информацию.


    1. andreycheptsov
      05.10.2015 10:43

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


  1. radionoise
    06.10.2015 13:07

    Распознавание и autocomplete тегов Thymeleaf починили?


    1. andreycheptsov
      06.10.2015 15:32

      А можно номер issue?


  1. grossws
    06.10.2015 17:20

    Потыркал в editor.zero.latency.typing и не заметил улучшения. В scala-проекте субъективно есть даже ухудшение latency. FYI, используется IdeaVim plugin.


  1. ruslanys
    06.10.2015 19:56

    Все еще нет поддержки последних версий Spring Data, а именно: репозиториев без явных реализаций, а так ждал…


    1. Borz
      06.10.2015 22:18
      +1

      всё пашет. возможно у вас эта бага.


      build: IU-142.5239.7


      1. ruslanys
        07.10.2015 01:49

        Точно, спасибо!


  1. pltnkv
    07.10.2015 13:27

    Aвтоимпорты в TypeScript это мега-круто, но хотелось бы чтобы они работали с абсолютными путями.
    Нужна возможность указать корневую директорию src, относительно которой строился бы абсолютный путь.

    Как сейчас:
    import CanvasContextMenu = require("../../../commons/contextmenu/CanvasContextMenu");

    Как хочется:
    import CanvasContextMenu = require(«application/canvas/commons/contextmenu/CanvasContextMenu»)