LINUX.ORG.RU

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

 ,


1

2

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

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

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

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

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

★★★★★

Последнее исправление: den73 (всего исправлений: 1)

Ответ на: комментарий от iZEN

Вы к кому обращаетесь? Кто виноват? Что делать?

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

Конечно Го приложения интегрируются с Явой через Си, но это всё автоматизированно.

Вот только не надо тут врать. С тем же успехом можно сказать что D позволяет программировать на Android.

В материалах по Android сказано, что Android программируется на Java, Kotlin и С++. Гугл не продвигает (даже не официально) и тем более не поддерживает программирование Android на Go.

То же касается Go для браузера. Гугл продвигая Web+JS, угробил полотрасли. Теперь они предлагают Go. Хорошо, где тогда Web+Go? Его нет.

Когда MS предлагал C#, они предлагали его как язык на котором вы будете программировать то, это, пятое и десятое. И они всё это обеспечили в лучшем виде (насколько это было возможно).

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

Можешь билдерами.

mylist.add(Stuff().a("some_str_1").b("some_str_2").alg(new AlgorithmABC()).err(2.5));
Будет примерно как в JSON-е. В простейшем случае это просто setter с таким именем.

Про List - используй статические методы. Импортируй статически Arrays.asList и пиши asList(loc1, loc2). В Java 9 (вроде бы) появился List.of, можно им, суть почти та же.

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

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

... вот это было интересно 3.5 человекам. Поправил, не благодари. Вроде распространение котлина против скалы показало, что интересно ширнармасам)

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

Учитывая консерватизм джавы каких-нить корутин там ждать лет 5. А нул сейфти, дсл, делегаты или екстеншен функций ближе к вечности. Котлин больше про уменьшение болерплейта, а не про сахар

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

обычно изучаю в «бою», на реальной работе

У тебя видимо склонность к везучести. Не у всех есть возможно изучать «в бою» (т.е. за счет заказчика).

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

У меня примерно 100 зарплата, я за два года на вторую квартиру накопил. Вы там в Москве вообще зажрались!

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

Учитывая консерватизм джавы каких-нить корутин там ждать лет 5.

Не, это когда они были накачаным гопником на дворе, тогда могли себе это позволить. А сейчас когда можно легко остаться на задворках истории, как только какой-то гугл решит что джава на Андроиде это не круто, а вебню надо писать на JavaScript или чем-то близком, а в облаках проще и шелковистее волосам на Go, то они шевелятся. Начинаю версии клепать, GraalVM, SubstrateVM и прочие вещи.

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

У тебя видимо склонность к везучести. Не у всех есть возможно изучать «в бою» (т.е. за счет заказчика).

Это так. Ну и данного конкретного скуповатого заказчика не очень жалко. Впрочем, свой продукт он получил.

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

До следующей всё тратишь или есть что отложить?

Потребности невелики, коплю на взнос для ипотеки. Но скоро будет 200.

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

А что потом со второй квартирой делать, склад ненужных вещей или сдавать в аренду (под инкубатор для чужих детей)?

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

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

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

Ну я там планирую отдыхать, т.к. большинство работы делаю из дома, а жить в окружении лесов, озёр и гор приятней, чем в пыльном городе. Хотя жена всё сдавать рвётся. Не понимаю, зачем, и так денег девать некуда. Для ненужных вещей есть гараж в десяти минутах ходьбы, для машины паркинг в двадцати метрах от подъезда.

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

А что потом со второй квартирой делать, склад ненужных вещей или сдавать в аренду

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

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

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

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

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

Sun всегда четко по поводу Java.

Была же история с Microsoft, которая как выяснилось (была выемка домкументов у Microsoft) хотела просто украсть джаву у Sun, путем подлого обмана разрабочиков. «Нужно сделать так, чтобы программисты думали, что они разрабатывают под Java, но на самом деле они будут разрабатывать под нашу реализацию.» И там очень подлые приемы были.

Java это товар, коммерческий офферинг, который хозян имеет право структурировать как ему угодно.

Так вот, тогда в деле c MS оспорить законность ограничений наложенных Sun на Java не удалось.

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

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

Я меньше получаю, сколько - не скажу. Пишу инструмент под NDA(но мы прорабатываем возможность выкинуть это в OpenSource). Работаю в НИИ(работаю над проектами заказчиков снаружи, так что платить есть чем), перешел без понижения.

ДС2, тоже офис, удаленка есть, но предпочитаю торчать в офисе, так комуницировать проще. Денег раз в год увеличивают, но через пару лет планирую идти дальше с увеличением ЗП. Как бонус, возят в командировки в жаркие страны.

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

Мое «еще» подразумевало что-то кроме

Заниматься хайлоадами и бекендами

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

заказчика не очень жалко

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

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

А как это сговнякать но очередном Хрен-ланг - второй вопрос.

То, что ты говоришь - это глупости. До сих пор некоторые наивные программисты продолжают в это верить. Правда в том, что возможности и вместимость головы очень ограничена.

На все эти Хрен-ланги нет места. Это мусор. Даже если технлогия хорошая, это всё равно вред.

От того, что, мол «там всё 90% то же самое просто немного по-другому» способности человеческой головы не увеличатся. Даже если бы это действительно были просто «100 алиасов для ранее известного», то это ничего не меняло бы: потому что невозможно и противоестественно изучать 100 алисов.

Конкретно из языков программирования нужно знать и использовать полтора-два языка программирования, не более. То, что индустрия требует больше, не значит, что это нормально, оправдано или даже возможно.

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

Ну у тебя и цели. Не боишься, что придёт 40 и ты вдруг осознаешь, что цели твои были г*но и что жизнь ты потратил не на то ? :D :D :D

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

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

Мы тут, в офисе, не слишком перетруждаемся. Приходим в 11, уходим в 18 (как правило, хотя положено позже), с учётом обеда получается шестичасовой рабочий день. 200 тыр для Go в Москве норм, опытные имеют больше, некоторые много больше.

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

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

Начнем с того, что 0b100000 == 1 << 5.

Во-вторых, зачем пердолиться, изворачиваться, учить эти трюки если можно просто использовать двоичный литерал?

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

Ну у тебя и цели. Не боишься, что придёт 40 и ты вдруг осознаешь, что цели твои были г*но и что жизнь ты потратил не на то ?

Это не цель, а план выживания. Что касается жизненного предназначения, то я его уже исполнил (вытянул всех своих родственников из азиатской дыры, в которой они оказались после распада Союза). Осталось мирно доживать :).

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

Это не цель, а план выживания.

Оно и видно. Это похоже на всяких нуворишей, которые из «грязи в князи» и не могут остановиться. Если ты не ловишь кайф от работы, то быстро перегораешь и через некоторое время тухнешь, как в жизненном так и в профессиональном плане. Так что бесплатный совет - лучше ставить немного другие цели.

Осталось мирно доживать :).

Ну судя по тому что ты работаешь в стандартной распил конторе, то давай удачи тебе в выживании. :-)

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

Если ты не ловишь кайф от работы, то быстро перегораешь и через некоторое время тухнешь, как в жизненном так и в профессиональном плане.

Именно. Как только работа перестаёт приносить кайф, я её меняю. А деньги — так, побочный эффект, всё-таки трудно программисту в Московии умудриться зарабатывать совсем мало.

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

Ну оправдано, впервые нормальный байткод вкатали, это тебе не ждать 30 секунд Java-applet и потом трястись от дыр в безопасности.

Сейчас вон новая идея - просто пользоваться WebAssembly как отдельной VM. Новый такой себе «натив» 21ого века. Просто не работающий как говнище (в силу я не знаю чего). Не знаю как взлетит.

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

Понял, спасибо.

Еще вопрос, если не трудно. Есть

calc(int[] data);, где в data - 10 миллионов эл-тов.

но нужен еще и

calc(byte[] data);. (те же 10М эл-тов, но работает быстрее даже с учетом предобработки данных int->byte)

Смысл алгоритма таков, что текст кода для обоих методов получится одинаковым.

Я пытался что-то сделать на generic methods. Но у меня не получилось: параметры byte[] и int[] превращаются в Object

Это вообще возможно в рамках Java?

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

Нет никакого трюка, просто два числа и оператор. Мне как проводящему 100% времени у компа проще глазами в <<. Да и любому в принципе проще. И iota под это заточена. Вообще нет смысла в двоичном литерале. Даже ноль-икс-шестнадцатеричная последовательность 1-2-4-8-сдвиг проще двоичного литерала. А нужен он только придонным. Трепангам. Из крови трепанга можно получать ванадий в промышленном объёме.

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

Я в блокчейне, офисная работа в Москве
160 тыр.

похоже, хайп про блокчейн наконец затихает xD

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

Хорошо, сделай 0b1001100 на bitwise операторах, оценим красоту.

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

Если/когда обрастёт инфраструктурой как жабка - будут и запуски «апплетов» по 30 секунд. И откуда уверенность в отсутствии дыр?

yyk ★★★★★
()

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

Жаба в основном это и есть. Ну, может еще андроид.

Современное программирование в своей массе, вообще, не особо, чтобы интересным было.

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

Можно сделать на reflection, но производительность будет на пару-тройку порядков ниже, не думаю, что тебе это подойдёт. На generic-ах это сделать нельзя. Так или иначе надо копипастить, или вручную или препроцессором (которого в Java нет, поэтому его тоже придётся прикручивать).

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

похоже, хайп про блокчейн наконец затихает xD

Может быть, в хайпах не слишком разбираюсь. Но проект реально интересный, много нового для меня (и полезного для резюме: криптография, git, docker, распределённая база данных). А главное — можно много писать на Go, что само по себе удовольствие.

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

И прям нормально берут плюсовиков, без опыта на го?

Как правило, требуют выполнения тестового задания. Первую вакансию я провалил (задание — микросервис с REST-интерфейсом, функционал реализовал, но не в нужном стиле, видимо), вторую вакансию тоже (без задания, но жёсткое собеседование в OZON — слил HTTP и SQL), третьим было задание сделать Go-биндинги к простой C-библиотеке — прошёл (думали использовать готовые C-реализации некоторых алгоритмов, но в итоге не пришлось).

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

Дело вовсе не в этом, никто не может это понять почему-то.

Старая браузерная жава была сделана плохо. Она была сторонним плагином, который поставлялся третьей стороной. Она не имела возможности взаимодействовать нормально со сраницей так же полно как это сделано для JavaScript. Реализация имела так себе безопасность. Апплетная java проектировалась и развивалась отдельно от веба-страниц, браузера, стандартов.

Если бы WebAssembly проектировали и внедряли так же - это было бы такое же говно как java-applet.

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

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

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

Если/когда обрастёт инфраструктурой как жабка - будут и запуски «апплетов» по 30 секунд

Нету какой-то магической инфраструктуры, каждый кусочек которой добавляет по секунде в загрузку. Загрузка определяется очень конкретными алгоритмами, паттернами использования сети и диска, удобством байткодов для компиляции, удобством поиска элементов линкинга и зависимостей. И результат есть - WebAssembly собраный в «статический» блоб компилируется быстрее чем качается из сети. А качается он быстро. Это все осознано, by design, его делали именно так.

И откуда уверенность в отсутствии дыр?

Работает внутри JavaScript sandbox. Это очень проверенная вещь по состоянию на 2019й год. Конечно если вернуться в какой-то 2000й, то ух

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

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

+1. Мои утверждения не в пику разработчиками Java платформы, просто все это делалось в разное время и при разных обстоятельствах

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

И откуда уверенность в отсутствии дыр?

Но откуда уверенность в обязательном наличии дыр? По аналогии с java-applet? Опять же тут другое дело. Да, браузерную Java называли дырявой. Так оно и было.

Но если бы Java интегрировали в сам браузер в виде спецификации, совместными усилиями и в стандартизированном виде, то вопрос бы ставился иначе. Говорили бы о дырявых браузерах.

Никто же не говорит о «дырявости JavaScript»? Правильно? Говорят об уязвимости в конкретном браузере конкретной версии.

Вполне возможно, что в конкретных браузерах будут дыры так или иначе связанные с выполненим WebAssembly. Но дырявым, всё таки надо признать, тут будет IE/Chrome/Firefox, но не сама WebAssembly.

Это я говорю при всей ненависти к браузерам, гуглу и его деятельности.

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

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

Компиляется.

array.mapNotNull { c ->returnNullableValue(c) }
    
private fun returnNullableValue(c: O1): 02? {
  return when (c.a) {
    is 1 -> {
      return O2(c)
    }
    else -> null
  }
}

Не компиляется.

array.mapNotNull { c ->  
    return when (c.a) {
    is 1 -> {
      return O2(c)
    }
    else -> null
  }}

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

Не менее всрато, но речь не об этом. При наличии полноценной JVM, а не ведроида Scala ≫ Kotlin.

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

Вот компиляющийся пример полностью. Что не так? return возвращает управление из верхней функции, а не делает то, что ты, похоже, думаешь.

class O1(val a: Int)

class O2(val a: Int)

fun f(array: Array<O1>) {
    array.mapNotNull { c ->returnNullableValue(c) }

    array.mapNotNull { c ->
        when (c.a) {
            1 -> {
                O2(c)
            }
            else -> null
        }
    }
}

private fun returnNullableValue(c: O1): O2? {
    return when (c.a) {
        1 -> {
            return O2(c)
        }
        else -> null
    }
}
Legioner ★★★★★
()
Ответ на: комментарий от anonymous

Вполне возможно, что в конкретных браузерах будут дыры так или иначе связанные с выполненим WebAssembly. Но дырявым, всё таки надо признать, тут будет IE/Chrome/Firefox, но не сама WebAssembly.

Так жаба по другому изначально делалась, там не было песочницы подобной js, у жабы было больше низкоуровнево доступа к fs, к сокетам, настоящим потокам, создания direct buffer и использования unsafe и все это нужно было ограничить, плюс учесть манипуляции с рефлекшеном.

А WebAssembly, насколько я понимаю, про байткод, как его транслировать в другие языки, как байткод исполнять через AOP в машинных инструкциях, а песочница броузера останется, т.е. никаких низкоуровневых механизмов доступа к фитчам ОС не будет.

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

Два чаю тебе. Теперь лямбды котлина для меня стали чуть менее странными, а поведение return'а более странным.

В пылу угара решил, что в лямбде нужно явно писать return. При желании это конечно можно делать, но нужно аннотировать - return@mapNotNull when (c.a) {

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

низкоуровнево доступа к fs, к сокетам, настоящим потокам, создания direct buffer

Я не вижу как это связано с безопасностью. Что касается ФС, то можно замапить на виртуальную пустую ФС. Насколько я понимаю, это всё часть стандартной библиотеки Java, если что-то смущает можно убрать это спецификации. Вот тебе и sandbox. JNI или как-то ограничить или либо убрать вовсе.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.