The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В Android обеспечена официальная поддержка разработки на языке Kotlin

18.05.2017 10:01

Компания Google объявила о включении Kotlin в список официально поддерживаемых языков для разработки приложений для платформы Android. Более того, совместно с компанией JetBrains, курирующей разработку Kotlin, инициировано создание некоммерческой организации, которой будут делегированы функции принятия решений в отношении дальнейшего развития языка.

Язык Kotlin создан в санкт-петербургском центре разработки компании JetBrains и изначально рассчитан на компиляцию приложений в форму для последующего выполнения внутри стандартной виртуальной машины Java (JVM) или Android. Разработчики Kotlin попытались сохранить максимальную совместимость и похожесть на Java, при этом избавившись от имеющихся в Java ограничений и недостатков. Язык обеспечивает неплохую переносимость с Java - из программ на Java можно вызывать компоненты, написанные на Kotlin, и, наоборот, из программ Kotlin можно вызывать Java-классы. Среди отличий Kotlin выделяется ориентация на обеспечение более высокой безопасности за счет реализации статических проверок, отсутствия raw-типов, полного сохранения информации о типах в процессе выполнения и реализации массивов в виде инварианта. Язык обеспечивает поддержку функций высшего порядка, вывода типов значений, уточняющих "примесей" (mixin) и делегирования.

Одновременно представлен тестовый выпуск интегрированной среды разработки Android Studio 3.0, в состав которой включён плагин для написания Android-приложений на языке Kotlin. Кроме средств для сопровождения разработки плагин предоставляет возможность преобразования имеющихся Java-проектов в представление для дальнейшей разработки на языке Kotlin.

Из других заметных улучшений в Android Studio 3.0 отмечается новый набор инструментов для профилирования и диагностики проблем с производительностью, а также существенное ускорение процесса сборки больших проектов с использованием Gradle, включение Google Play Store и поддержки OpenGL ES 3.0 в эмулятор Android, поддержка разработки для Android Things, средства разработки Instant App (приложения, которые можно напрямую запускать из Google Play без выполнения процесса установки), поддержка новых возможностей языка Java 8 и платформы Android O, режим отладки уже собранных APK-файлов.



  1. Главная ссылка к новости (https://android-developers.goo...)
  2. OpenNews: Релиз Kotlin 1.0, языка программирования для JVM и Android
  3. OpenNews: Инструментарий для разработки приложений на языке Python для платформы Android
  4. OpenNews: Две трети популярных Android-приложений используют вставки на языке Си
  5. OpenNews: Google развивает средства создания высокопроизводительных Android-приложений на языке Dart
  6. OpenNews: В язык Swift добавлена начальная поддержка платформы Android
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46568-android
Ключевые слова: android, kotlin
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (50) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (-), 10:57, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Очередной проблемно-ориентированный язык.
    "Мышки плакали, кололись, но продолжали жрать кактус!" (с)
     
     
  • 2.9, Iaaa (ok), 12:21, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Очередная реинкарнация Паскаля.
    "Мышки не смогли осилить ничего выше школьного курса информатики, но тоже хотят в IT" (с)
     
     
  • 3.24, Аноним (-), 17:32, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • –3 +/
    сейчас в школах помимо паскаля доступны СИ, пейтон, жабаскрипт.
     
  • 3.28, Аноним (-), 17:45, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Да тут целый тред экспертов!
     
     
  • 4.41, Аноним (-), 21:32, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Среди учащихся всегда много экспертов.
     
     
  • 5.42, Andrey Mitrofanov (?), 21:33, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Среди учащихся всегда много экспертов.

    ...и только те, кто сами ничего не умеют, удут дугих учить.

     
     
  • 6.48, Аноним (-), 18:06, 19/05/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Всегда знал что с преподшой было что-то не так.
     
  • 6.49, Аноним (-), 20:30, 20/05/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ага, иди Сократу расскажи
    один дурак скажет, так другой обязательно повторит
     
  • 5.50, Michael Shigorin (ok), 13:31, 22/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Крепитесь, скоро ещё и каникулы.
     

  • 1.3, Аноним (3), 10:57, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    больше всяких языков, на которых даже олигофрен программировать сможет. ну и полученный код сможет любое быстрое железо легко опустить.
     
  • 1.4, th3m3 (ok), 11:18, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Лучше бы Rust запилили. А то шило на мыло.
     
     
  • 2.5, Аноним (-), 11:26, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • –9 +/
    Для гугла перейти на Rust - значит признать бесполезность Go. Это примерно то же, что надеяться на официальное включение Swift в андроид-студию
     
     
  • 3.6, Аноним (-), 11:52, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Cмешались в кучу кони, люди.
     
  • 3.7, Аноним (-), 12:01, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Вообще разные языки с разными назначениями.
     
  • 3.54, KBAKEP (ok), 01:00, 23/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Был уже вброс: https://thenextweb.com/dd/2016/04/07/google-facebook-uber-swift
     
  • 2.29, Аноним (-), 17:46, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    С каких пор Rust стал инструментом для относительно быстрой разработки с большим инструментарием?
     
     
  • 3.44, Вареник (?), 21:36, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Хеллоувордщикам хочется переписать весь мир на ассемблере.
     
  • 2.53, iZEN (ok), 18:46, 22/05/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Rust

    Очень долго компилируется, почти как WebKit-Gtk2.

     

  • 1.8, Аноним (-), 12:18, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    А ее какие языки там поддерживаются и почему этой студии нет в репах?
     
     
  • 2.40, Аноним (-), 21:28, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Есть она в репах. Дистрибутив меняйте.
     

  • 1.10, прохожий (?), 13:08, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +10 +/
    сразу видно большинство комментаторов ничего не писали под android, но мнение имеют
     
     
  • 2.11, Аноним (-), 13:19, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Прохожий #мимопроходя сказал ровно настолько насколько смог выщурить со стороны.
     
  • 2.14, НяшМяш (ok), 14:17, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    я бы сказал больше - большинство комментаторов даже рядом с андроид разработчиками не сидели
     
     
  • 3.16, Аноним (-), 14:30, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Не так, я думаю все еще хуже: большинство комментаторов даже рядом с разработчиками не сидели.
     
     
  • 4.25, Аноним (-), 17:33, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Не так, я думаю все еще хуже: большинство комментаторов даже рядом с
    > разработчиками не сидели.

    Может хватит называть html верстальщиков разработчиками?

     

  • 1.12, ferux (ok), 13:59, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Алгебраические типы данных и pattern-matching в Kotlin уже добавили? Если нет - то ненужно. Зачем вообще создавать язык в 2010-х, не закладывая в него этих фич?
     
     
  • 2.15, Crazy Alex (ok), 14:28, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Первая "фича" в языке, поддерживающем ООП может и имеет какой-то смысл (хотя обычно спокойно делается в библиотеке). Вторая - на фиг не нужна, а то и вредна. На то и наследование, требующее вменяемого проектирования вместо ad-hoc подхода pattern-matching.
     
     
  • 3.19, ferux (ok), 15:00, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Библиотечная реализация алгебраических типов через ООП всегда будет выглядеть более громоздкой чем реализация "в языке".
    >Вторая - на фиг не нужна, а то и вредна. На то и наследование, требующее вменяемого проектирования вместо ad-hoc подхода pattern-matching.

    И почему тогда разработчики Swift и C# так не считают т.к. реализовали/добавили pattern-matching? Никто ведь не призывает использовать pattern-matching вместо наследования с виртуальными методами.

    И да, Kotlin разве не мультипарадигмальный язык, что вы делаете такой упор на ООП?

     
     
  • 4.20, Crazy Alex (ok), 15:38, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Что там громоздкого? Описал Variant - и вперёд.

    Тоже мне, примеры.
    Swift - вообще не аргумент, судя по ругани сидящих рядом со мной ios-ников это полигон, в который напихали что можно и что нельзя без какого-либо проектирования. Шарп - тем более сборная солянка, созданная в надежде привлечь всех мыслимых developers.

    А на ООП я в данном случае делаю упор, потому что оно предоставляет гораздо более поддерживаемый подход, чем pattern matching. Ровно то же различие, что, например, между case c кодами ошибки и иерархией исключений, или между finally и плюсовым RAII, или между пользовательской функцией init и конструктором  - в одном случае можно что-то забыть или сделать неконсистентно, во втором - получаешь предсказуемое поведение.

     
     
  • 5.21, ferux (ok), 15:58, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Попробуйте реализовать что-то похожее https://doc.rust-lang.org/std/result/ через ООП без patter-matching и алгебраических типов данных, а потом попробуйте это использовать. И не надо здесь говорить, что нужно использовать исключения - есть случаи, когда похожий на Result подход более приемлем.

    Сразу скажу, что получается громоздко и далеко не так красиво, как в Rust: приходится каждый раз создавать классы для возвращаемых значений функции вместо использованиями sum-type; отсутствует возможность проверки на этапе компиляции, все ли типы в switch-е перебрал из sum-type, реализованного в виде иерархии/композиции классов.

     
     
  • 6.32, Crazy Alex (ok), 18:03, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Нет, спасибо, я лучше пешком постою. Кром совсем уж сурового эмбеда такого же сурового легаси именно исключения и надо использовать. Я вдоволь напроверялся ошибок на C чтобы ненавидеть этот адски неудобный (и тормозной) подход.

    И нет, в приличных языках вроде С++/D ничего каждый раз создавать не надо - делается один раз шаблон с неявным преобразованием в тип-результат, для проверки статуса ошибки - либо специальная функция (для параноиков), либо реализовываем оператор преобразования в bool. Выглядит всё совершенно прозрачно. А проблема "все ли типы в свитче перебрал" - это явно не к этому примеру, здесь перебирать нечего. А там, гд ехочется перебрать - нужны интферфейсы/абстрактные классы и наследование, там не реализовать метод не дадут.

     
     
  • 7.33, ferux (ok), 18:20, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > А проблема
    > "все ли типы в свитче перебрал" - это явно не к
    > этому примеру, здесь перебирать нечего. А там, гд ехочется перебрать -
    > нужны интферфейсы/абстрактные классы и наследование, там не реализовать метод не дадут.

    Ок. Пример: модуль взвращает ошибки 5-и типов (пусть будут хоть объекты Exception-в, если вам они ближе). У модуля 2 пользователя и каждый из них по-совему обрабатывает ошибки этих типов.

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

    Как вы предлагаете обрабатывать эти ошибки с помощью интерфейсов и наследования?


     
     
  • 8.34, ferux (ok), 19:47, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Вот следуя подсказке анонима в ветке ниже как это будет выглядеть на сабже для... текст свёрнут, показать
     
  • 5.27, Аноним (-), 17:40, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > Swift - вообще не аргумент, судя по ругани сидящих рядом со мной
    > ios-ников это полигон, в который напихали что можно и что нельзя
    > без какого-либо проектирования.

    И это правда, переход на версию 3 был болезненным. Но надо отдать должное для своих лет очень даже неплохо всего понапихали.

     
  • 4.52, Michael Shigorin (ok), 13:34, 22/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > И почему тогда разработчики [...] C# [...] реализовали/добавили pattern-matching?

    Не удивлюсь, если в итоге по соображениям вида "вали всё в раковину", которая kitchen-sink.

     
  • 2.22, анон (?), 16:54, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вообще-то в котлине более широкий подход чем pattern matching. К тому-же оператор when вкупе со смарт кастами делает то же самое что и паттерн матчинг, нет нужды реализовывать его отдельно.
     
     
  • 3.23, ferux (ok), 17:02, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    и что, when + smart casts на этапе компиляции обнаружит добавление ещё одного дочернего класса для базового типа, объект которого проверяется в when?
     
     
  • 4.26, анон (?), 17:36, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Обнаружит, но только при условии использования sealed классов.
     
     
  • 5.30, ferux (ok), 17:47, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда за это большой плюс для Kotlin!
     
  • 5.35, ferux (ok), 20:07, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Не обнаруживает, хотя по спецификации действительно должен.
    https://try.kotlinlang.org/#/UserProjects/125pl5cgj8l6daio9vo7i96njr/68cpqd68b

    Может ещё сырой?

     

  • 1.13, Аноним (-), 14:03, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    А кложуру не добавили? Понятно, Андроид всё ещё не нужен.
     
     
  • 2.17, Crazy Alex (ok), 14:35, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Это кложур (всё ещё и уже) не нужен
     

  • 1.18, Аноним (-), 14:38, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так здорово же. JetBrains молодцы!
     
  • 1.31, Strachan (?), 17:51, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    но зачем, когда есть groovy?
     
     
  • 2.39, KonstantinB (ok), 21:22, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сравнили ж*пу с пальцем. Еще бы с php сравнили (а что, есть jphp).
     

  • 1.38, Шарпей (ok), 21:11, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Лучше бы официально C# добавили без взяких Замаринов.
     
     
  • 2.43, Аноним (-), 21:35, 18/05/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    но зачем - еси java то же самое и уже давно есть
     

  • 1.45, Вареник (?), 21:45, 18/05/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Kotlin

    Отлично!

     
     
  • 2.46, Mail (?), 00:20, 19/05/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Очередное "ненужно"! :)))
     
     
  • 3.51, nc (ok), 13:32, 22/05/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Всегда хотел спросить у тех кто пишет "ненужно" - а что "нужно"?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру