Мы были бы рады, но к сожалению не всегда понятно, какие из проблем, о которых сообщают пользователи EAP-версий — это действительно мажорные баги, которые ломают процесс тысячам пользователей. Мы пытаемся улучшить процесс разбора фидбэка так, чтобы по возможности не пропускать такие проблемы.
Про поддержку работы с проектами, где исходники лежат только на сервере, мы пока не готовы ничего анонсировать. Понятие «окружение для сборки» имеет смысл далеко не для всех проектов — сборка большинства Java проектов не зависит от окружения, а для Ruby/Python/PHP собирать часто вообще ничего не надо — поэтому у нас нет планов вводить такое понятие на уровне платформы.
На GraalVM мы конечно смотрим, но пока что мы не видим такого соотношения cost/benefit, которое оправдывало бы серьезные в него вложения.
Это известная проблема, связанная с переходом на новую версию JDK, мы ее чиним. Пока что вы можете скачать версию с JDK 8 с www.jetbrains.com/idea/download/other.html, в ней дизайнер работает.
1) В jar-файл экспортируются настройки уровня IDE. В него не попадают, например, ран-конфигурации, которые специфичны для проекта. Инспекции можно настроить по-разному для разных модулей в проекте, такую конфигурацию тоже нельзя экспортировать в jar. Ну и workflow совсем не такой удобный — нужно явно просить коллег импортировать jar (и делать это каждый раз, когда что-то меняется). В случае с шаренным .idea настройки автоматически применяются у всех, кто открыл проект, и автоматически подхватываются, когда кто-то их обновляет.
2) Вы можете добавить .idea в .git/info/exclude. Ну и нет ничего ужасного в PR, который добавит .idea в .gitignore проекта — нашими IDE пользуются достаточно людей, чтобы такие PR воспринимались вполне адекватно.
Нет, потому что наш основной механизм шаринга настроек внутри команды, работающей над одним проектом (ран-конфигураций, настроек инспекций, code style) — это именно помещение папки .idea в систему контроля версий. Мы сейчас автоматически создаем .idea/.gitignore, в который добавляются те файлы из .idea, которые содержат личные настройки. Остальные файлы рассчитаны на то, что их можно шарить через систему контроля версий.
Нет, вопрос-то задавать можно, конечно, просто я не знаю, как на него отвечать. Особенно трудно с утверждениями про то, что в Clojure есть на 99% то же, что в котлине — учитывая, насколько эти языки друг на друга не похожи.
Вот, например, поддержка nullability. Мы считаем, что это преимущество. Очень многие люди, которые используют Kotlin, тоже так считают. С вашей точки зрения, это преимуществом не является. Какого продолжения разговора вы ожидаете? Я мог бы называть вам другие фичи, которые на наш взгляд являются преимуществами, но не очень понимаю, зачем это делать, если вы уже с ними со всеми ознакомились и ничего хорошего в них не нашли.
Ну я даже не знаю… задавать вопрос «зачем» в комментариях к посту, в котором мы рассказываем о том, какое распространение получил Kotlin? Зачем же, интересно, люди из Google, Pivotal, Gradle и многих других компаний вкладывают столько ресурсов в поддержку технологии, которая несёт так мало новых концепций? Возможно, потому, что продуктивность работы программиста определяется не только тем, сколько новых концепций несёт в себе язык, которым он пользуется?
Про возможности Kotlin вы можете узнать в очень многих местах, начиная с официального сайта языка, и дальше вам уже решать, какие из этих возможностей вы считаете существенными.
Аннотация NotNull не является частью системы типов Java, и компилятор Java никак не ограничивает использование nullable-значений в выражениях, которые могут привести к NPE.
Все, что делает компания JetBrains (за исключением минимального стартового капитала, на который трое основателей жили первый год), она делает на самостоятельно заработанные деньги. Владельцы компании, практически весь ее менеджмент, вся команда Kotlin — все русские. Так что непонятно, кто тут кому «просто наемный работник».
Ну почему «не так»? Он просто ориентирован на другую целевую аудиторию, другой способ мышления.
Самый яркий пример, на мой взгляд — nullable/optional types. От программистов на Scala я слышал, что эта фича неправильная и ненужная, потому что она поддерживает один конкретный случай, а не общую концепцию монады. Для меня же наоборот, использование Option.flatMap и тому подобных вызовов для работы с опциональными значениями выглядит намного более сложно и менее интуитивно, чем котлиновский ?., а возможность создания абстракций, которые одинаково обрабатывают списки и nullable-значения, не представляет практически ниакого интереса.
Освоиться с синтаксисом Java в любом случае крайне полезно, потому что основная масса документации и примеров, которые на данный момент доступны, использует именно Java. Каких-то задач, которые можно было бы решить только на Kotlin и нельзя было бы решить на Java, не существует. Так что в конечном итоге смотрите сами — если вам приятнее писать на Kotlin, то используйте его.
Я не знаю, что вы имеете в виду под словом «обвертка». Kotlin может транслироваться в байткод JVM (который может выполняться также на совместимых с ней виртуальных машинах, таких как Android), а также в исходный код на JavaScript и в нативный код, выполняемый вообще без виртуальной машины. У Kotin своя система типов и свои языковые фичи, несколько более сложные, чем "#define блять ;".
Пользуясь вашим определением, обвертками, кажется, следует считать все языки, не имеющие своей виртуальной машины, начиная с C++.
Котлин — это не синтаксический сахар, а полноценный язык со своей системой типов и своей семантикой. Ключевое отличие системы типов Kotlin от Java — это поддержка nullable и non-null types, то есть, возможность определять в момент компиляции, какие выражения могут приводить к NPE, и запрещать компиляцию таких выражений. Свою JVM для этого иметь не надо, достаточно иметь свой компилятор.
Буковки «JVM» в названии «Kotlin/JVM» как бы намекают, что целевой платформой для компиляции и исполнения является JVM, то есть Java Virtual Machine, то есть виртуальная машина Java.
В Scala, помимо всего того, о чем вы говорите, есть также дизайн языка. Вкладывая силы в поддержку и развитие Scala, мы могли бы решить проблемы со временем сборки, удобством отладки, тестирования и т.д., но принципиально изменить дизайн языка мы не смогли бы. А мы считаем, что в этом мире должен существовать не только язык с таким дизайном, как у Scala, но и язык с таким дизайном, как у нас.
В целом вы правы, конечно. В случае котлина эта цена меньше, чем во многих других случаях — например благодаря тому, что котлин дает полный контроль над тем, как API библиотеки выглядит со стороны джавы, и то, что библиотека использует котлиновские фичи, не приведет к тому, что ее пользователям надо будет непременно переходить на котлин. Но да, про документацию и примеры всё так.
Но тем не менее хочется всё-таки, чтобы мир двигался куда-то вперёд :)