Конференция "Прочее" » Как бросить писать на дельфи и начать на ява?
 
  • картман © (14.03.19 15:48) [160]

    > Дмитрий Белькевич ©   (14.03.19 12:48) [159

    Джава сильна фреймворками и библиотеками, в итоге, более-менее сложное приложение зарастает десятками прослоек, жрущими ресурсы - тут никакой топ сделать ничего не в состоянии, только если все самописное, но тогда преимущества языка сходят на нет. Впрочем, одноклассники так и сделали. (Ремарочка: они еще и неуправляемую память используют, ну чтоб быстро и она не кончалась). - как раз тот случай, когда на джаве сложно и дорого.
    Ну, могут себе позволить, чего бы не поизгаляться? К тому же "стало быстро" - относительно традиционнго подхода джавы.
  • sniknik © (15.03.19 11:03) [161]
    > они еще и неуправляемую память
    Это как? В смысле можно отключить сборщик мусора, и самому выделять-освобождать память-обьекты, есть такой режим? Или это очередной "велосипед"-метод использовать определенные-свои функции?
    p.s. не ради флуда, просто заинтересовало и по теме, в отличие от... в поиске находится только, о том что ява является полностью управляемым языком, в том числе и памятью, и утечек быть не может, исключая обьекты "застрявше" в стеке, и решения про "слабый стек". и ничего о том как это можно использовать.

    p.p.s я понял зачем в книге "философия", это не философия, это религия... и как у каждой религии у нее есть свои фанатики. рад что ее пропускал, и относился критически к все таки прочитанному, а вот был бы неокрепший разум начинающего, не закаленный асмом, дельфи, фоксом, питоном и другими языками и глядишь еще одн... да не, ну нафиг, не может такого быть.
  • картман © (15.03.19 15:43) [162]

    > sniknik ©   (15.03.19 11:03) [161]
    > > они еще и неуправляемую память
    > Это как?

    Только память: выделил сколько нужно, потом сам очистил. С классами можно какие-то хитрые манипуляции делать. Класс Unsafe можно погуглить. В яве есть всякие такие штуки, редко используемые, "магические классы" их называют.
  • картман © (15.03.19 15:49) [163]
    Современная энтерпрайз джава - загроможденный SQL: на класс пяток аннотаций, на каждое поле столько же, если не десяток, своего кода почти нет, экземпляра ты нигде не создаешь, но очень функциональный объект получился! Тока ты не знаешь, что внутри, а так норм, дело привычки. Меня напрягает такое положение вещей, коллег - ничуть.
  • картман © (15.03.19 15:51) [164]

    > загроможденный SQL:

    Декларативщина, в смысле
  • Alex Konshin © (17.03.19 17:48) [165]

    > картман ©   (15.03.19 15:43) [162]
    > Только память: выделил сколько нужно, потом сам очистил.
    >  С классами можно какие-то хитрые манипуляции делать. Класс
    > Unsafe можно погуглить. В яве есть всякие такие штуки, редко
    > используемые, "магические классы" их называют.

    Class Unsafe они собрались удадить. В Java11 уже замучаешься им пользоваться, хотя пока работает.
  • Alex Konshin © (17.03.19 18:36) [166]

    > sniknik ©   (15.03.19 11:03) [161]

    Я вроде как знаю и Delphi, и Java достаточно хорошо. Да и много другого тоже.
    Замыкаться на Delphi точно не стоит потому, что это технология, которая давно уже пережила свои лучшие времена. Скажем спасибо Борланду, который "просрал все полимеры".

    Тут много чего говорилось про Java. Для того, кто знает Java, в Delphi много чего не хватает. И нативность кода его не спасает, даже скорее иногда создаёт проблемы. Например, я пишу большие проекты, которые работают на всех поддерживаемых платформах. И на Java это обычно работает так "один раз построил - работает везде". Да, есть ньюансы, и бывают проблемы, специфичные для платформ, но сам код работает.
    Ещё скажу про саму разработку для Delphi и Java. Я даже не буду говорить про IDE и библиотеки. Я редко использую дебаггер в Java. Обычно хватает стек трейса который выдает сама джава на исключения. Вот этой фичи очень не хватает в Delphi. Я много лет назад даже реализовал что-то подобное в Delphi, хотя всё равно это лишь жалкое подобие. И это ещё один недостаток из-за нативности кода.

    И самое важное - умирает комьюнити Delphi. А это ведёт к тому, что никто не хочет использовать её в новых проектах, труднее найти ответы на вопросы, слабо развивается сам Delphi, и всё это в целом ведёт к дальнейшему уходу девелоперов с Delphi. Замкнутый круг. И я не вижу перспектив для выхода из него. Грустно, но нужно это признать и двигаться дальше.
  • sniknik © (18.03.19 00:15) [167]
    > которые работают на всех поддерживаемых платформах.
    уже говорил, значение кроссплатформенности сильно преувеличивают. тем более в "живую" я вижу совершенно отличное от того в чем мемя пытаются убедить "в интернетах". в конторе одну программу пишут то-ли 3 то-ли 4 группы... все на яве, разница? одна пишет под винду, другая под мак, ... не знаю насколько оправдано, чем объясняется, но им всем платят зарплату, видимо не просто так. а еще когда то "драйвер"(не настоящий низкоуровневый, а просто прослойку между железом и программой) писали, начальство захотело "кросплатформенность на уровне кода" из-за этого выбрали С++, писали долго, раза в 3 дольше чем обычно, и нормально так нигде и не работало, пока все сроки не прошли, и тогда "вспомнили" - нахера нам линукс? программа для которой пишем существует только на винде... в общем то что вижу это либо блаж, либо выдается желаемое за действительное... не, я не говорю про проги уровня "хелло ворд", и не то что собирается исключительно на стандартных компонентах без оглядки на систему, может быть... но я таких никогда и не писал.

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

    > Вот этой фичи очень не хватает в Delphi.
    это же ввели то ли начиная с 2007й то ли с 2009й дельфи... сам нормально не использовал, т.к. по некоторым причинам до сих пор на D7, но помню были обсуждения новшеств, даже тестил что-то из них.

    p.s. вообще чем то напоминает позицию эппла, "нет какой то фичи, какая даже у китайфона есть? - она вам не нужна! зато у нас форма кирпича лицензирована!". практически анекдот про коммунизм, это когда "сегодня подробности в мясе нет!"
  • sniknik © (18.03.19 00:24) [168]
  • Eraser © (18.03.19 00:27) [169]

    > sniknik ©   (18.03.19 00:15) [167]


    > уже говорил, значение кроссплатформенности сильно преувеличивают


    > нахера нам линукс?

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

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

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

    учитывая вышесказанное, кроме C++ альтернативы практически нет, к сожалению.
  • niteshade © (18.03.19 05:21) [170]
    >Дмитрий Белькевич ©   (14.03.19 12:48) [159]
    >И, вообще, нормальной скорости на нативе, мне кажется добиться проще чем на жаве. Может она и >быстрая у топовых программистов, которые знают всё до абсолютных мелочей.
    >То, что мне встречалось на жаве по скорости было так себе, что уж поделать.
    Java уже давно умеет компилироваться в executable и работать без JVM
  • картман © (18.03.19 06:47) [171]

    > Java уже давно умеет компилироваться в executable и работать
    > без JVM

    Да ну?
  • sniknik © (19.03.19 16:48) [172]
    > мне лично запросами про линукс, за последний год, все остатки мозга проели.
    чисто по приколу, так то понятно у всех все по разному... был у нас один агент, тоже этим доставал, ну то ли ему пообещали, то-ли как то узнал планы/обсуждения, тогда решали куда с doc-а переходить (и это даже не прошлый век... мы doc то ли до 2006-го то-ли до 2008го использовали, или 2004?? не помню). лично я был тогда за линукс, ну т.к. в этом случае прогу мне отдавали, причем на разработку с 0, без всяких поддержек старого... но выбрали таки виндовс, и решающим стал голос этого самого агента... он тогда при начальстве ляпнул "да сделайте наконец на линуксе, надоело уже за программу такие деньги платить"... т.е. у него ассоциировалось линукс = бесплатно, а то что прогу для него-других агентов будут писать "под заказ", и писателям зарплату вообще то платить нужно это фигня, типа "это для буржуйской винды за программы платят, а у линукса за поддержку, но мне поддержка не нужна, я сам, вы главное напишите". ну а т.к. он был один такой активный, и как оказалось по сути хотел не линукс, а халявы, то выбор автоматом сделали "от противного".

    > настойчивые приказы или рекомендации, использовать софт, совместимый с линуксом.
    да нет проблем, если софт есть... с чем он там будет совместим пофиг.
    а вообще такой вопрос, риторический, можешь не отвечать, вы за софт на линуксе платите?
  • Eraser © (19.03.19 17:08) [173]

    > sniknik ©   (19.03.19 16:48) [172]


    > был у нас один агент

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


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

    мы практически не используем в работе линукс. та экосистема, в которой идет разработка используется в бесплатном варианте (под все платформы), но к релизу ее придется покупать скорее всего, чтобы снять некоторые ограничения. что очень не дешево, а конкретно $500 в месяц за рабочее место (на любой платформе).

    тоже самое касается и нашего софта, он не лицензируется в зависимости от платформы.
  • Alex Konshin © (27.03.19 07:21) [174]
    Enterprise приложения сейчас идут в облака. А это практически подразумевает Linux. И чем дальше, тем больше.
    Поддержка Windows в облаках - это то ещё удовольствие, я даже конкретизировать не хочу. MS осознаёт это и пытается что-то делать, я бы даже назвал это "мечется". Я имею реальный опыт с их Azure и могу сравнивать с AWS. Но суть даже не в клауде, а в том, какое место там занимает Windows. Оно там только тогда, когда по каким-то причинам нельзя использовать Linux. Например, нужно тестировать приложение на Windows платформах - понятно, что тут уж без самого Windows не обойтись. Вы только вдумайтесь: MS выпустило свой MS SQL под Linux, внедряет эмуляцию Linux в своих Windows серверах, пытается сделать докер под винды, и т.п.. Всё это неспроста. Те, кто делают что-то в облаках тихо ненавидят Windows - с ними постоянно какие-то проблемы. Да, можно заставить их работать, но усилия несравнимы, да и зачем?

    Ну а причём тут Java? Да притом, что ей более-менее всё равно где работать. Переносимость достаточно хорошая. Мода и платформы меняются, а приложения остаются. Например, за время моей работы одно приложение (очень большое) поддерживало следующие платформы: все серверные Windows, Linux x86_64, Solaris Sparc и x86_64, HPUX Itanium и PA Risc, AIX on IBM RS6000, и т.п.. Сейчас остались только Linux и Windows. Совсем не удивлюсь, если будет поддержка Linux ARM. Платформы меняются - приложение остаётся и развивается. Поддерживать подобную переносимость на C++ - намного более трудоёмко и дорого. Есть у нас и большой продукт на С/C++ - я видел, чего это стоит.

    Но писать UI на Java не советую. Можно, но не нужно. Лично меня очень раcстроило, что там так и не сделали декларативный UI по типу dfm в Delphi. Все эти извраты с разбором и генерацией исходного кода при редактировании форм в IDE - это просто героическое преодоление трудностей созданных ими самими на ровном месте.
  • Mystic © (27.03.19 12:55) [175]

    > И на Java это обычно работает так "один раз построил - работает везде"


    Нюансы кроссплатформенности есть везде, вот только у меня такое впечатление, что сейчас почит всё работает везде. Чем хуже тот же C? Один и тот же код прекрасно работает и на сервере, и на десктопе, и на специальных железках с минимумом памяти. Вот это действительно кроссплатформенный язык :) Ну и так любые языки со своей VM вроде Python, Lua, ... Опять же, большинство компиляторов, транслирующих в LLVM, тот же Rust. Так что кроссплатформенность сейчас аргумент, может быть, для Delphi, и то не уверен.


    > Я редко использую дебаггер в Java. Обычно хватает стек трейса
    > который выдает сама джава на исключения.


    Иногда я не совсем уверен в том, что я правильно понял мануал. И тут быстрый запуск до точки останова позволяет решить проблему. Или Python путь, когда команды вводятся по одной, и тут же видно результат. Стектрейс это конечно хорошо, вот только он не спасает в случае, когда исключения нету, а программа работает не так, как ожидалось. Тут куда приятнее следать точку остановки, сделать случайный сэмпл из набора данных, посмотреть, что там храниться, проверить несколько инвариантов, ...


    > Enterprise приложения сейчас идут в облака. А это практически
    > подразумевает Linux. И чем дальше, тем больше.


    Кроме того становится более популятной микросерсивная архитектура, где хорошо проявляются себя golang, asyncio (js node и Python) делая вещи проще.
  • Eraser © (27.03.19 14:44) [176]

    > Всё это неспроста. Те, кто делают что-то в облаках тихо
    > ненавидят Windows - с ними постоянно какие-то проблемы.

    самый главный минус - цена. откуда вообще пошла мода на облака, node js, микросервисную архитектуру, докер и т.д? то что сейчас стало мейнстримом. почти все крутые технологии разработаны крутыми софтовыми компаниями.

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

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

    вот живой пример, простенький VPS
    1 CPU
    2048MB Memory
    2000GB Bandwidth
    в Чикаго стоит $10 под бесплатную ОС.

    для него же выбираем винду, получаем $26.
    а если таких серверов нужно 20? а если 1000 железных и по 64 ядра в каждом?
  • Styx © (27.03.19 22:04) [177]

    > самый главный минус - цена

    Не самый. В свободной ОС, когда возможностей стандартной системы не хватает, её можно допилить до нужного функционала. Нелегко и ой как недёшево, но если надо - всегда можно. И все большие игроки это делают. А с Виндой допилить может фактически только MS. И если он это делать не захочет - то никакие деньги не помогут.
  • Kerk © (27.03.19 23:02) [178]

    > Eraser ©   (27.03.19 14:44) [176]
    >
    > > Всё это неспроста. Те, кто делают что-то в облаках тихо
    > > ненавидят Windows - с ними постоянно какие-то проблемы.
    >
    > самый главный минус - цена. откуда вообще пошла мода на
    > облака, node js, микросервисную архитектуру, докер и т.д?

    Мы сейчас завершаем миграцию с винды+делфи на вот это вот что ты перечислил. Вопрос цены не основной. Но весьма занимательно, что вся эта облачная инфраструктура целиком стоит дешевле, чем одни только лицензии винды, которые нам скоро перестанут быть нужны.
  • Eraser © (28.03.19 02:17) [179]

    > Kerk ©   (27.03.19 23:02) [178]

    ты немного не поняли мой посыл.
    да, для небольших компаний стоимость не имеет значения. я об этом написал.

    а для фейсбука и гугла стоимость имеет значение. привязка к ОС конкурента в виде MS тоже имеет значение.

    поэтому именно гиганты индустрии и продвигают/разрабатывают эти т.н. модные технологии, причем изначально под линукс.

    тут MS, конечно, попадает в замкнутый круг. этот вопрос как-то придется им решать, даже если они начнут раздавать бесплатно, вот так сразу все туда не побегут, с учетом [177].
 
Конференция "Прочее" » Как бросить писать на дельфи и начать на ява?
Есть новые Нет новых   [97973   +12][b:0.019][p:0.006]