LINUX.ORG.RU

Что вы думаете сегодня про Kotlin Native

 ,


1

2

Насколько эта технология имеет смысл?

Есть ли шансы мигрировать существующие Java-проекты со Spring на неё?

Можете смеяться надо мной, но всё же после голанга Java выглядит как-то посерьёзнее. Поскольку в голанг-разработчика я так и не развился по ряду причин, а легаси проект для разгона на Java есть и за это платят, я опять в раздумьях.

Рынок труда по java на порядок шире, чем по голанг, и гораздо больше выбор предметных областей. Заниматься хайлоадами и бекендами, честно говоря, скучно.

Но jvm и всё вот это нагоняет грусть. Kotlin Native выглядит на вид неплохо, но хочется понять, это реальная технология или просто маркетологическая замануха.

★★★★★

Заниматься хайлоадами и бекендами, честно говоря, скучно.

Но jvm и всё вот это нагоняет грусть.

Может так скоро и до Хаскеля дойдешь ;)

kookoo ()

Я вот как раз свалил с Java на Go потому что она слишком серьезная. Ну как, любой проект, даже банальный xml-парсер превращается нечно монструозно серьезное. Да и разрабатывать в команде из 4х человек мне проще чем сидеть в распределеной толпе на 20-40.

Заниматься хайлоадами и бекендами, честно говоря, скучно.

А что еще пишут на Java за что платят ? Ну кроме мобилок.

Но jvm и всё вот это нагоняет грусть.

Попробуй C++, ну или Rust(хотя у него, наверняка вакансий в этой стране не так много)

Dred ★★★★★ ()

«Kotlin Native» отдельно, «мигрировать существующие Java-проекты со Spring» отдельно.

Протащить что-то монструозное типа spring'a с hibernate через native будет невозможно.

Во втором не вижу никаких проблем кроме kotlin'а.

Один вопрос писать на нем под старый дроид от безысходности, совсем другой вопрос писать на нем вместо восьмой жавы.

Реализация null-safety просто омерзительна. В ней сломана возможность вернуть из лямбды nullable.

Синтаксис с лямбдами в качестве параметров совсем трешовый logger.info { "serivce, $cells, $location" }

Короче если мне захочется поприседать - я возьму scala, если я захочу вернуться к разработке оперденей - я выберу java.

anonymous ()
Ответ на: комментарий от anonymous

Чем на чем? Ну чем на Java минимально веселее. Я всегда относился к этому языку особо без энтузиазма, так как улучшения по сравнению с Java были в рамках того, что Java могла поменять в рамках одной, двух версий, и это бы сделало Kotlin не нужным. Оставался такой риск.

Например Scala капитально шагнула от Java, вот это было интересно.

Я согласен что сейчас Kotlin чуть более привлекателен, учитывая что они начинаю реально что-то ощутимое предлагать, а не только сахарок

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Насколько я понимаю, котлин это та же java по итоговым возможностям. Какие-то плюсы конечно есть. Но столь ли они существенны чтобы менять предпочтительный язык? Это, во-первых, деньги: всю документацию нужно обновить, тулчейн, всё это поддерживать. Во-вторых, это плохо для людей: теперь кто не знает котлин - чувствуют вдруг становятся отстающими. Даже если это хороший язык, всё равно это замусоривание головы ненужным хламом которого и так уже выше крыши. Кроме того, это еще одна технология, имеющая сомнительное будущее, даже в пределах гугловых телефонов (на горизонте же фуксия). Вложения в изучение котлина сомнительны, это не назовешь фундаментальной инвестицией. Это нагрузка на разработчиков во всем мире.

Что самое интересное, насколько я видел, в Android Studio максимально поддерживаемая версия Java - 8. Новейшие версии джавы в Android Studio не поддерживаются. Мне непонятно, как можно не доведя даже поддержку Java до современного уровня переключаться какой-то дополнительный язык. Это, во-первых, халтурный подход: беремся, но не доводим до ума, бросаем недоделанное и начинаем другое. Во-вторых, для андройд-разработчиков это невыгодно, потому что в итоге это не «разработчики имеющие опыт Java», а разработчики имеющие опыт Java 8, весьма урезанной причем.

Как-то странно всё это. Почему гугл это делает?

anonymous ()
Ответ на: комментарий от anonymous

Я чуть обновил пост выше.

на горизонте же фуксия

И там еще один нескучный Котлин - Dart. В нем хотя бы риалтаймовый сборщик мусора во Flutter.

Это, во-первых, халтурный подход: беремся, но не доводим до ума, бросаем недоделанное и начинаем другое.

Как-то странно всё это. Почему гугл это делает?

Нет, это если сидеть в танке и не знать сколько проблем Oracle создает гуглу своими бессмысленными судебными исками. Они по хорошему не хотят судя по всему. Раз так, значит Kotlin и Dart, пускай горят в аду со своей Java.

Вся дрочка вприсядку по этой ссылке.

https://en.wikipedia.org/wiki/Oracle_America,_Inc._v._Google,_Inc.

Особенно финал сочный

While Linux is fully open sourced, it is based on POSIX, a set of APIs that mimic those of the commercial Unix operating system that enable high levels of interoperability for developers; a programmer would only need to write one set of code which then can compile on any system that has the same API, even if the computing architecture of the systems are different. If case law favors Oracle, the current owners of Unix, Micro Focus, could seek damages from any POSIX-based operating system developer intending to use the operating system for commercial use.[70] This POSIX claim is nevertheless doubtful as the certifier of the Unix copyright, The Open Group, worked in concert with the ISO and IEEE to develop the POSIX standard and agreed to joint copyright on the resulting documents

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 2)

Но jvm и всё вот это нагоняет грусть.

Субъективная штука, мне всегда наоборот - нравилось, виртуальная машина, абстракция от железа и осей. Всегда меня удивляло, что вот например делаем огромный CRUD с swing интерфейсом, а потом нам баги приходят со скриншотами, а там такой нативный виндовый интерфейс, прямо как будто мы с этим замораичвались, пристойно выглядит. Ну и все через вебстарт работало, корме JVM ничего не машины не ставили, т.е. обновление приложения это выкатывание на сервер новой версии и ничего больше. Понятное дело это все про корпоративный сегмент.

Aber ★★ ()

Kotlin Native выглядит на вид неплохо

У этого есть история, изучите её и решите. Если вам важно мнения левых людей, то да, это хорошая применимая вещь.

реальная технология или просто маркетологическая замануха.

Это не пересекающиеся между собой вещи.

anonymous ()
Ответ на: комментарий от Aber

Были времена десктопа, сейчас ничего не устанавливать никуда - это уже стандарт. В половину банков заходишь, консультант с планшетом, потом пересаживается на десктоп. Progressive Web Application - и задача решена. Потому вещи вроде Java Web Start уже не взлетят

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Да, это разказ 5-ти летней давности. Сейчас делаю вебсервис, вроде уже без рзазницы на каком языке, никому нативные интерфейсы ненужны.

Aber ★★ ()
Последнее исправление: Aber (всего исправлений: 1)
Ответ на: комментарий от vertexua

ну хоть бы очертил «рамки применимости», а то «ничего не устанавливать» - и звиздец!

Это ты сейчас про разные кады, обработку (серьёзную) аудио/изображений/видео и т.д.?

Нет, с банками, медиками и прочими мордами к БД понятно...

yyk ★★★★★ ()
Ответ на: комментарий от vertexua

Я как-то изучал эту тему. Насколько я помню дело было так: Sun разработала Java и наложила ограничений на нее. Например нельзя создавать имплементацию Java не спросив их разрешения, не заплатив им денег, не сертифицировав свою имплементацию у Sun. Sun как коммерческая компания наложила вполне разумные ограничения, это их разработка, их коммерческое предложение, им решать что и как разрешать. Гугл нарушал уловия, нарушал закон, причем осознанно это делал. Ты можешь разработать VertexuaLang и запретить альтернативные реализации, или разрешить на определенных условиях. Это твое полное право.

Если бизнесу нужен какой-нибудь язык программирования, то вариантов сейчас множество. Языков десятки, бери имплементируй тот, который разрешено. Иди создай реализацию C#. Или D, да что угодно. В конце-концов, сделай свой новый язык. То, что выбор уже существующего языка сделает платформу успешней - так это твои проблемы, твой бизнес. Вкладывайся, разрабатывай, продвигай, покупай готовое, а как иначе? Гугл мог сделать свою имплементацию любого другого языка. Зачем было выбирать именно Java, для которой это явно, конкретно, четко запрещено? Зачем было специально, намеренно нарушать?

Вот у тебя есть 10 языков, все можно реализовать без последствий, законно. Но они выбрали именно Java. Ну хорошо, видимо, они тогда посчитали ее дизайн самым лучшим - но тогда прямиком нужно звонить было в Sun и спрашивать «по результатам эвалюации ваш ЯП победил, сколько это будет стоить?». Но почему-то было решено явно закон.

anonymous ()

Насколько эта технология имеет смысл?

Если тебе нужно иметь общий код между Java и нэйтив, имеет смысл. Например пишешь приложение для андроида и айфона. Какую-то общую логику, если её достаточно много, можно попробовать написать на Kotlin и использовать и из Android-приложения и из Swift-приложения.

Есть ли шансы мигрировать существующие Java-проекты со Spring на неё?

Нет. А зачем? В этом нет никакого смысла. Это не замена JVM и с большой вероятностью один и тот же код на JVM будет работать быстрей.

Legioner ★★★★★ ()
Ответ на: комментарий от anonymous

В ней сломана возможность вернуть из лямбды nullable.

Что ты имеешь в виду?

Синтаксис с лямбдами в качестве параметров совсем трешовый logger.info { «serivce, $cells, $location» }

Короче если мне захочется поприседать - я возьму scala

И как же эта строчка будет выглядеть на Scala?

Legioner ★★★★★ ()
Ответ на: комментарий от anonymous

Насколько я понимаю, котлин это та же java по итоговым возможностям. Какие-то плюсы конечно есть. Но столь ли они существенны чтобы менять предпочтительный язык?

Если плюсы котлина для тебя несущественны, я считаю, что Java не настолько хуже. Вообще лично для меня в Java бесит только отсутствие пропертей. Я люблю плодить data классы на каждый чих. И то, что класс с тремя полями превращается в лапшу на полтора экрана со всеми этими геттерами-сеттерами, меня откровенно бесит. Вот добавили бы в жаву проперти, я бы про котлин, наверное, и думать перестал бы. Правда последние годы жаву портить начали всякими @Nullable. До сих пор не знаю, как этот бред отключить в идее. Там одна инспекция и на полезные вещи и на @Nullable.

Почему гугл это делает?

До недавнего времени там и 8-ки не было. Я даже не уверен, что сейчас она по дефолту ставится, по-моему до сих пор по дефолту 6. Почему делает? Возможно из-за того, что он джавой не владеет и оракл уже ему по ушам надавал из-за джавы. Поэтому и слезает с неё насколько возможно. Поэтому, кстати, мне и Котлин кажется не слишком надёжным будущим. Если, конечно, гугл не купит жетбрейнсов. А вот флаттер это чисто гугловая разработка. Гугл обожает всё своё или то, где он влез по максимуму и откуда его никто не выпихнет.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 2)
Ответ на: комментарий от Legioner

Я если честно Java особо не знаю. Про Kotlin видел новости. Там есть var вывод типов - это удобно, но так ли это важно... Для классов с данным там вроде бы есть какой-то автоматический конструктор. Конструкторы в стиле this.width = width действительно выматывают, это хорошо. Но я к тому, оправданы ли такие вот гугловские движения. Kotlin теперь preferred - это же затрагивает людей по всему миру.

anonymous ()
Ответ на: комментарий от Legioner

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

Ломбок не решает проблему? Я просто переехал на Kotlin, на проперти смотрю как-то равнодушно, для меня другие фитчи впечаталяют, как например: типобезопасные строитили, дефолтные аргументы методов, ну и самое главное для меня это типизация с информацией о nullability. Причина почему они меня впечатлили в том, что они позволяют резко улучшить читаемость кода.

Aber ★★ ()
Последнее исправление: Aber (всего исправлений: 2)
Ответ на: комментарий от anonymous

Там есть var вывод типов - это удобно, но так ли это важно.

В Java тоже есть var.

Но я к тому, оправданы ли такие вот гугловские движения.

Гугл считает, что оправданы. А нам чего рассуждать. Нам остаётся только жить в той реальности, которую для нас рисуют большие дяди.

Legioner ★★★★★ ()
Ответ на: комментарий от te111011010

Не, говно типа 0b1101, специально для тех кто не смог в 1 << 5, чтобы считать нули умело. И чтобы легче было считать нули, числа теперь разрешено разделять подчёркиванием.

anonymous ()
Ответ на: комментарий от Legioner

Гугл обожает всё своё

Обожает? Только как-то странно это делает. Посмотри на Go.

  1. Гугл сумел уничтожить весь компьютинг заместив его вебом. Промывал мозги про Web Platform, которая якобы существует. Хорошо, положим она существует и базирует исключительно на Chrome. Обеспечена ли поддержка программирования на Go под веб? Нет
  2. Обеспечивается ли программирование на Go под Android? Нет.
  3. Обеспечивается ли программирование на Go кросс-платфоменных десктопных приложений? Нет.

Это не говоря уже о том, что даже среды разработки нет.

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

Что до флюттера я как-то слушал подкаст с разработчиком Flutter. Очень неприятный тип.

anonymous ()
Ответ на: комментарий от Aber

Ломбок не решает проблему?

Может и решает. Но я не хочу его использовать. Т.к. это уже не Java получается, а если я отказываюсь от Java, я могу и Kotlin с тем же успехом использовать. Вот если бы Idea умела как-то автоматом скрывать такие геттеры-сеттеры, как она делает с анонимными классами... Я всё хочу написать свой фреймворк, когда дата-класс и билдеры описываешь интерфейсами, а быструю реализацию уже генерит либа, вроде должно получиться очень удобно, но руки всё не доходят.

Я просто переехал на Kotlin, на проперти смотрю как-то равнодушно, для меня другие фитчи впечаталяют, как например: типобезопасные строитили, дефолтные аргументы методов, ну и самое главное для меня это типизация с информацией о nullability. Причина почему они меня впечатлили в том, что они позволяют резко улучшить читаемость кода.

Многое из этого нужно только из-за угорания по иммутабельности. Зачем тебе строители, если ты можешь простой мутабельный класс использовать, например? А даёт ли иммутабельность достаточно плюсов, я не знаю. Не помню за последние годы ни одного бага, который был бы связан с тем, что я меняю то, что нельзя менять. Возможно это проблема проявляется в больших командах, я код обычно пишу и поддерживаю один.

А нуллабилити зачастую вообще порождает кучу лишнего кода, только чтобы компилятор был доволен. Хотя штука может и хорошая, но в Kotlin реализована недостаточно хорошо на мой взгляд, особенно в том месте, когда я проверяю поле на null но после этого компилятор про это забывает.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 2)
Ответ на: комментарий от anonymous

Го для андроида откровенно не подходит. Смысла не было его туда тащить. Го это такой DSL для микросервисов. И в этом его ниша, где он хорош.

Web Platform это не только хром. Это куча браузеров. Как минимум 3 движка сейчас и 4 в недавнем прошлом. Опять же даже если бы гугл захотел протащить го в хром, остальные бы его не поддержали. А вот через вебассембли может и протащат.

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

Потому, что хотят зарабатывать деньги, очевидно :)

Legioner ★★★★★ ()
Ответ на: комментарий от Dred

Я вот как раз свалил с Java на Go

Кстати, в каком режиме работаешь и сколько платят? Считаю, мы, разработчики, имеем право делать информацию об условиях труда и зарплате публичной: всё, что невыгодно плохому работодателю, выгодно нам.

Я в блокчейне, офисная работа в Москве без удалёнки, команда тоже 4 человека, зарплата 160 тыр. Следующая цель по зарплате — 200 (уже ищу).

Интересно сравнить.

hbee ★★★ ()
Последнее исправление: hbee (всего исправлений: 1)
Ответ на: комментарий от anonymous

Десктопных нет, остальное да. Конечно Го приложения интегрируются с Явой через Си, но это всё автоматизированно. Вообще гугл веб-вью тоже счтиает десктопным гуем, так что и десктоп поддерживается. С яваскриптом и цээсэсом.

anonymous ()
Ответ на: комментарий от hbee

Меня как фрилансера интересует сколько делают офисные программисты в среднем и что считается норм. Есть какой-то способ оценить объём работы в неделю на пальцах?

С уважением, профсоюз программистов-фрилансеров Го.

anonymous ()
Ответ на: комментарий от yyk

Это ты сейчас про разные кады, обработку (серьёзную) аудио/изображений/видео и т.д.?

И они будут в браузере. Ничего не мешает. Unreal Engine собрали в WebAssembly, любой кад соберут.

vertexua ★★★☆☆ ()
Ответ на: комментарий от Legioner

Слушай, а можно тебе вопрос про Java?

У меня в коде несколько наборов, например:

[ {a: "some_str_1", b: "some_str_2", alg: new AlgorithmABC(), err: 2.5, x: 1, y: 2, x:3}, {...}, ... ]

Я описал соотв. класс, и объектами набиваю список.

mylist.add(new Stuff("some_str_1", "some_str_2", new AlgorithmABC(), ... и т.д.)) Работает, но выглядит уже монструозно.

Теперь нужно расширить

... err: 2.5, x: 1, y: 2, x:3} ]

до

... err: 2.5, [x: 1, y: 2, x:3], [x: 4, y: 5, x:6]} ]

Значит теперь нужен еще класс для x, y, z (ExpectedLocXYZ), далее Stuff нужно переделать на прем List<ExpectedLocXYZ>. Кроме того, теперь чтобы сделать new Stuff(...) придется заранее подгодовить экземпляр List<ExpectedLocXYZ> и наполнить его ExpectedLocXYZ. Но это будет выглядеть еще монструозней.

Есть ли какие-то средства/технологии чтобы такие ситуации упростить/облегчить?

anonymous ()
Ответ на: комментарий от Legioner

Зачем тебе строители, если ты можешь простой мутабельный класс использовать, например?

Создать что-нибудь DSL like стиле. Уж как-то начал такое делать такое, но передумал, DSL часто понятен только его создателю, причем только в момент создания :) Вот если придется таргетировать конкретные бизнес процессы, то можно использовать и резко повысить читаемость/поддерживаемость. Пока не нашел применения, но примеры то у всех наведу, как например Gradle Kotlin DSL.

А нуллабилити зачастую вообще порождает кучу лишнего кода,

Не заметил, ИМХО синтакс шугар весь бойлерплейт-код умножает почти на ноль, как например:

val entry = state.data?.get(id) ?: throw IllegalStateExcetpion()
...
val entry = cache[id] ?: storage.find(id)?.also { cache[id] = it } ?: throw IllegalStateException()

Aber ★★ ()
Ответ на: комментарий от anonymous

Справку о з/п покажите. Не мамкину.

Ну ну)

У меня коллеги тут сидят - не корректно это будет по отношению к ним.

Я в ДС2 и тут это не считается большой зарплатой(по крайней мере у Scala-разработчиков).

nihirash ★★★ ()
Ответ на: комментарий от anonymous

четко запрещено

Во как четко запрещено. Написано запрещено красными буквами, а во дураки - суд, не могут 10 лет разобраться. И еще Оракл проиграла первый раз. Четче не бывает

vertexua ★★★☆☆ ()

А по поводу Kotlin Native/Scala Native/Kotlin.JS/Scala.JS - стоит понимать, что в реальности это очень разные вещи относительно JVM-версий.

Поведение отличается, далеко не все соберется из того, что работает на JVM.

Если хочешь нативный бинарь - бери грааль, оно умеет из JVM делать статический(вроде статический) бинарь.

nihirash ★★★ ()
Ответ на: комментарий от hbee

На Go.

Неудачно соскочил. Зря согласился на понижение.

Уверен, что тебя взяли бы и без него. А так гошники, кмк получают в районе 180-240к, если с головой.

После плюсов сложно быть без головы(хотя возможно).

Это частая ошибка стек свичеров - сам на такое попадал.

nihirash ★★★ ()
Ответ на: комментарий от nihirash

Это частая ошибка стек свичеров

Никогда этого не понимал. Ну вот серезно так ментальной мощности не хватает чтобы изучать новые языки по методичке за неделю-пару месяцев? Вроде же надо быть хорошим инженером и понимать компьютерные науки и архитектуры систем. А как это сговнякать но очередном Хрен-ланг - второй вопрос. Они после 5-10 языков уже все на одно лицо, может с парой уникальных фич.

Ну пусть будет сразу не идеальный подход, потом поправите в процессе итерации. Язык не будет ничего решать, алгоритм - будет. Вот как раз алгоритм можно проверять разными методиками тестирования и тд.

vertexua ★★★☆☆ ()
Ответ на: комментарий от nihirash

Неудачно соскочил. Зря согласился на понижение.

Согласен. Не в то время искал работу — в начале года, это ошибка. Нужно осенью. Очень уж не терпелось :).

hbee ★★★ ()
Ответ на: комментарий от nihirash

У меня коллеги тут сидят - не корректно это будет по отношению к ним.

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

Aber ★★ ()
Ответ на: комментарий от vertexua

так ментальной мощности не хватает чтобы изучать новые языки по методичке за неделю-пару месяцев?

У меня так. Средненькие способности вообще и склонность к лени в частности. Чтобы качественно освоить язык, нужно сделать пару нетривиальных проектов, а это лень делать на ровном месте. Поэтому обычно изучаю в «бою», на реальной работе.

hbee ★★★ ()
Ответ на: комментарий от hbee

Ну я имел ввиду как раз в бою за неделю-месяц. Просто надо чтобы уже были эксперты по языку и они были твоими ревьюверами. Я не имел ввиду что надо сидеть 2 месяца что-то в стол варганить. Максимум книжку за выходные прочитай, а проблемы в коде коллеги подскажут во время ревью

vertexua ★★★☆☆ ()
Последнее исправление: vertexua (всего исправлений: 1)
Ответ на: комментарий от vertexua

Уничтожить одну инфраструктуру (J2ME) за счёт проповеди и финансово подкреплённого хайпа за всеобщее счастье с несовместимой на уровне бинарного кода Java (Android), чтобы потом выкинуть больше ненужный стул (Java SE) и усесться в кресло с удобной спинкой (Kotlin). А чем вам Spring не угодил? Стул стал неудобен? А чего ж на JavaEE не сиделось?

iZEN ★★★★★ ()