LINUX.ORG.RU
ФорумTalks

За что любят java / причина популярности ?

 ,


0

2

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

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

Десктоп:

за всю свою жизнь видел всего одну кроссплатформенную тузлу - TrafficCompressor. Остальное всё или не работало или текло, в отличие от тузл на с/c++. Покажите мне измазанный java-программами десктоп. Плееры, IM, и всё остальное. Ах, нет его ? Ну тогда о какой кроссплатформенности кода может идти речь ? Значит по факту кроссплатформенность java - фикция, не более.

Веб:

Всё что я видел на java - млять всё тормозит. И дико жрёт ресурсы. Все эти системы деплоя бестолковые, все эти управлялки тех. процессом. Да вообще всё. Ну юзают java всякие там вендоры железа и что ? Бросаться из-за этого на java аки собака на кость ?

Мобильная сфера:

Да. Андроид. Вроде работает. Жрут эти апликейшены на java в обнимку со своим андроидом как bmw M в режиме M. Более чем уверен, что будь андроид написан на cpp и все аплеки к нему, то телефон нужно было бы заряжать раз в неделю, а не раз в день.

★★★★

Какой смысл вообще было ее юзать ?

Хотя бы за тем, что там нет 100500 реализаций строк и нормальные пакеты сделали. Плюс удобный рефакторинг (читай удобные IDE), дебаг и рефлекшн. Еще там крутой JIT делающий долгоживущий код почти/иногда/при должном умении - вровень крестовому.

В общем этот ЯП занял нишу между скрипотой и нативом. Других популярных альтернатив в эту нишу не было. А тот, что появился (не будем называть его имя) не мог в кроссплаформу (точнее в линукс).

Но мы не видим обилия тузл кроссплатформенных

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

Покажите мне измазанный java-программами десктоп.

Для этого нужно куда-нибудь устроиться на работу. И тогда есть шанс обнаружить десктоп использующий джаву как офисе, так и дома. На десктопах школоты - да, джавы нет.

Всё что я видел на java - млять всё тормозит.

Не всё.

будь андроид написан на cpp и все аплеки к нему, то телефон нужно было бы заряжать раз в неделю, а не раз в день

Изучи опыт айос, там считай на cpp всё писано, но вроде телефон не намного дольше работает.

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

За что любят java / причина популярности ?

За неоправданно низкий порог вхождения. Любое говнище, написанное задней лапой макаки с корректным синтаксисом кое-как будет работать. Разумеется, обезьяна никогда не будет задумываться об оптимизации, тормозах, диком ужоре памяти, накладных расходах на запуск и т.п.

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

В общем, жаба до сих пор не сдохла только потому, что позволяет использовать макак в качестве «программистов».

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

Изучи опыт айос, там считай на cpp всё писано, но вроде телефон не намного дольше работает.

Nokia N9 живёт в разы дольше аналогичного ведроидофона с аналогичным аккумулятором и при этом работает в разы быстрее.

Stanson ★★★★★
()

какой то очень слабенький вброс

umren ★★★★★
()

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

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

Но мы не видим обилия тузл кроссплатформенных.

Kafka, Spark, Elasticsearch, Storm, Cassandra, flockdb, neo4j и еще 100500 других серверных решений

Покажите мне измазанный java-программами десктоп. Плееры, IM, и всё остальное.

99.9% применений оракловой джавы - бекенд на серверах, а не десктоп, у тебя странные хотелки, остальные 0.1% это иде, кроме того покажи мне иде на цпп которые более функциональы чем иде на джаве?

Всё что я видел на java - млять всё тормозит.

так ты же слепой, что ты мог видеть? это уже понятно из того что ты написал выше

Да. Андроид. Вроде работает. Жрут эти апликейшены на java в обнимку со своим андроидом как bmw M в режиме M. Более чем уверен, что будь андроид написан на cpp и все аплеки к нему, то телефон нужно было бы заряжать раз в неделю, а не раз в день.

заряжаю свой андроид раз в 2-3 дня, работает в среднем дольше моего айфона (юзаю оба телефона), купи что-нибудь дороже 50 долларов и желательно почитай обзоры перед этим

umren ★★★★★
()

Итого: ява она для сервера где сейчас и используется в основном и где она весьма хороша, ява для десктопа ущербна по своей сути из-за модели исполнения и инфраструктуры, где она и не взлетела, гугловская ява на андроиде это совсем «другая» ява в отличии от оракловской и работает неплохо (пришлось им сделать свой гц, байткод, виртуальную машину, аот)

umren ★★★★★
()

Дополнение: на c++ можно решить любую задачу в программировании (и оно будет работать быстро), а теперь задумайся почему у нас больше одного активно используемого языка программирования?

umren ★★★★★
()

Ведроид так плохо живет не из-за Java. Батарею разряжает куча проприетарного дерьма, которое лезет в сеть каждые 10 секунд, дергает локацию и творит еще непонятно что. Скажу лишь за десктоп: Все IDE от JetBrains написаны на Java. И лично для меня это лучший инструмент для разработки. Да, он тяжелый и железка для него нужна хорошая, но работать в нем очень комфортно ввиду количества фич, которые он умеет.

Jefail ★★★★
()

Работа с массивами на низком уровне

Ты действительно очень немного почитал.

no-such-file ★★★★★
()

Вот так пройдут какие-нибудь курсы хеллоуворлда из вконтактика, или вездесущего javarush, а потом и создают n+1 тред «джава жрет, тормозит и для домохозяек на нем не пишут».

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

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

MuZHiK-2 ★★★★
()

Java - многословный язык, как и русский, позволяет очень подробно всё объяснить, когда использовать ненормативную лексику затруднительно или нежелательно. В трёх словах: Java это C, только с «объектами» и сохраняет обратную бинарную совместимость всего написанного за последние 20 лет. Любить за такое язык? Ну, не знаю. Скорее - привычка к постоянству.

iZEN ★★★★★
()

Но мы не видим обилия тузл кроссплатформенных.

Херасе ты слепой.

Tark ★★
()

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

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

Сравнивать managed язык и страуструповскую поделку - это сильно конечно. Сколько уже уязвимостей было из-за переполнения буфера и всех остальных радостей https://ru.wikipedia.org/wiki/Безопасность_доступа_к_памяти#.D0.A2.D0.B8.D0.B...
Нет, продолжим плясать с указателями, это же так весело.

Inshallah
()

видел

я видел

мы не видим

Из общества слепых?

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

позволяет использовать макак в качестве «программистов».

просто бизнес, ничего личного.

Rastafarra ★★★★
()
Ответ на: комментарий от MuZHiK-2

Ну и можно хоть дебила научить кодить

В России эту нишу обычно занимал Delphi.

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

За неоправданно низкий порог вхождения. Любое говнище, написанное задней лапой макаки с корректным синтаксисом кое-как будет работать. Разумеется, обезьяна никогда не будет задумываться об оптимизации, тормозах, диком ужоре памяти, накладных расходах на запуск и т.п.

Ты сейчас дельфикодера описал.

cantus
()

посмотрел в книгу по java и увидел, что в принципе это light_cpp. Работа с массивами на низком уровне.

ты точно не идиот?

Rastafarra ★★★★
()

Зависит от задач. Я вот, если нужно быстро что-то навелосипедить для работы с midi-файлами, звуком, com-портами, парсингом xml, обходом web-страниц и т.п., скорее всего возьму какой-нибудь C#. Просто потому, что код после выполнения будет сразу удалён. Это у меня такой чуть более сложный вариант bash'а, красота и миллисекунды исполнения в таком случае меня мало волнуют. Ещё с теми же целями использую Python и Matlab. Раньше у меня таким языком был Java, но оказался сильно тормозным и многословным.

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

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

DELIRIUM ☆☆☆☆☆
()

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

Весь смысл Java в виртуальной машине.

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

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

Да. Андроид. Вроде работает. Жрут эти апликейшены на java в обнимку со своим андроидом как bmw M в режиме M. Более чем уверен, что будь андроид написан на cpp и все аплеки к нему, то телефон нужно было бы заряжать раз в неделю, а не раз в день.

Возьми iOS и посмотри на её батарейку. Она написана на C/Objective C. Разница есть, но не в 7 раз. Хотя андроид как раз таки к Java отношение имеет очень отдалённое.

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

Уже больше 10ти лет я проектирую и внедряю системы очень большим банковским конторам, сам себя считаю экспертом в Джаве. Выступал и архитектором и тех. директором на проектах 40+ разработчиков.

Основные доводы: - Университеты в массе своей преподают Java на первом курсе. С/C++ появляются на третьем-четвертом. Поэтому да, обилие дешевых говнокодеров. - На фронтенде, как правильно заметили, оно не используется, за исключением JetBrains, Eclipse (бесплатно и сердито, хоть и тормознуто и глючно) ну и всякой экзотики типа того же Oracle SQL Developer. - Огромное community. - Колоссальные средства индустриализации. Пример: на одного сениора можно повесить до 10ти джуниоров. При этом косяки будут отлавливаться автоматически с помощью Gitflow + Jenkins + Sonar + PMD + JUnit + Selenium + еще куча всего гарантирующего что джуниор зальет не только работающий код, но еще и отформатированный-имплементированный как надо, а не как он захотел. - Даже при большом желании как то особо накосячить на Java сложно, учитывая предыдущий пункт фактически невозможно. - Работает на говне, ну то есть реально можно взять consumer-grade сервер и запустить без проблем. Впрочем для клиентов пишущих на Java по настоящему, железо является минимальной частью расходов. - Огромное поле для параллельного исполнения, опять же на тех самых consumer-grade при желании. - Оно действительно кросс-платформенно, соблюдая несколько нюансов вроде использования File.separator вместо «/», хотя на моей памяти было всего 2 или 3 проекта которые запускались на Unix-подобном.

На данный момент ни один язык не предоставляет даже части перечисленного. И да, я говорю от лица business only, не вдаваясь в технические реализации, которые тоже весьма неплохи.

P.S. И таки да, для всяких костылей на 15-20 строк я тоже использую Python/Bash.

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

Сорри, не могу править:

на моей памяти было всего 2 или 3 проекта которые запускались не на Unix-подобном.

Разумеется.

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

Это к stevejobs, я его процитировал. Сам я на джаве не пишу, только на крестах.

DELIRIUM ☆☆☆☆☆
()
Ответ на: комментарий от cantus

Ты сейчас дельфикодера описал.

Они ж практически вымерли уже лет 5 назад. Теперь вместо дельфи жаба и, наверно, питон. Впрочем, гуйня на питоне, даже написанная макаками, всё-же не такой тормозной ужас как жаба.

Stanson ★★★★★
()

Немного посмотрел в книгу по java и увидел

фигу

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

Видео файл весом 4.5 Gb Nokia N9 зашифрует через gpg?

Если ответ утвердительный, то можем провести тесты для подтверждения фразы

в разы быстрее

Так то у меня и Nexus 4 лежит, у которого интерфейс с прошивкой Lineage OS (Android 7.1) в разы отзывчивей флагманов. Только отзывчивость интерфейса - это иллюзия скорости (хоть и приятная).

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

Кроме Фаулера еще есть) Например, Кент Бек - «экстримальное программирование - разработка через тестирование». Паттерны проектирования применительно к Жабе (вне Java/C#/C++ их любят гораздо меньше). Enterprise Integration Patterns написана с Java и C# в уме. Всякие Effective Java и Code Complete (Совершенный код). К этому добавляется вся теория ООП, например принципы SOLID. Которые в свою очередь тащат соответствующую матлогику.

А на практике ты открываешь код какого-нибудь Spring или Swing, и понимаешь что за каждой строчкой, за каждым PropertySourcesPlaceholderConfigurer implements BeanFactoryPostProcessor лежит огромный культурный пласт, благодаря которому например этот класс называется и работает именно вот так и никак иначе

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

нифига у тебя бомбануло, уже который раз вижу эту цитату :)

вполне конкретные понятия о структуре мира

конечно. как известно, мир состоит из объектов в понимании джавы. Поэтому написуя программу на джаве, НЕОБХОДИМО ревностно фанатично следовать принципам ООП.

Но и в жизни это роляет. Например, общаясь в новым человеком первая мысль - а какой у него интерфейс и контракты, можно ли считать что Дима - расширенная версия Миши, и тп :)

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

свою логику

ну да, логика основанная на типах в широком понимании. Например, очень сложно пишется метод equals, потому что цепляет философские вопросы, как мы поймем что две вещи действительно эквивалентны? Что такое эквивалентность в разрезе типов? классов? http://www.artima.com/lejava/articles/equality.html

и даже морально-этические нормы

например, есть норма «программные сущности … должны быть открыты для расширения, но закрыты для модификации».

В плане кода это значит вполне конкретные вещи - при получении новой спецификации ты идешь хреначить еще классов. Больше классов богу классов! Кодеры на других языках не понимают этого морально-этического выбора и считают, что «много классов - это плохо». А по мне так, много классов если они взялись из этого принципа - это очень хорошо.

Но и в жизни так же. Например, инструменты для велосипеда - у меня нет ни одного мультитула с тыщами разных отверточек и лезвий, которые так любят друзья-велосипедисты. Потому что по тому же правилу, если возникает новая проблема - нужно пойти и купить ключ, который решает конкретно эту проблему (это перекликается с юниксвеем), либо применить наследование - новый ключ должен содержать все отверточки которые у тебя уже есть + новые. Так как второй вариант экономически не эффективен, приходится покупать отдельные отверточки.

Это очень долгое объяснение, обычно не рассказываю его велосипедистам - непрограммистам - они не поймут. Когда спрашивают «почему нет мультитула» в ход идет ламерский вариант объяснения: «нет разницы».

Теперь подумай какое это влияние оказывает, например, на выбор друзей или подруг. Или на отношения на работе (если относиться к коллегам как к классам и объектам)

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

Видео файл весом 4.5 Gb Nokia N9 зашифрует через gpg?

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

Лучше пользовать скриптик, который в цикле запускает какую-нибудь простенькую гуйню типа xedit раз 100500 и сравнить.

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

или вот подумай, как TDD влияет на мозг

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

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

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

так же как и при написании кода, тебе хочется в жизни Agile. И так же как при написании кода почти любая попытка будет вести к «красной полоске» на тестах - к зафакапленой встрече, неработающему продукту, херовой документации итп - чтобы на следующей итерации осознать фиговость и починить

в результате это выливается в специфичный ответ на вопрос «что такое хорошо, что такое плохо». Хорошо ли, что ты зафакапил встречу? Кому-то это ужасно. А мне это очевидно хорошо, потому что мы эту встречу еще десяток раз перезапустим, короткими интенсивными итерациями, и таки наткнемся на какое-то решение, подходящее к общим целям =)

stevejobs ★★★★☆
()

Покажите мне измазанный java-программами десктоп. Плееры, IM, и всё остальное. Ах, нет его ? Ну тогда о какой кроссплатформенности кода может идти речь ? Значит по факту кроссплатформенность java - фикция, не более.

Вот тут ты и спалился, толстячок.

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

Я пытался донести мысль, что я бы с удовольствием купил себе смартфон с операционной системой отличной от Android, если будут выполнены два условия:

1) Набор доступного программного обеспечения покрывает мои задачи.

2) Железо актуально сейчас и будет актуально еще пару лет (для моих задач).

Соответственно, при прочих равных скорость будет одинакова

Вот именно, что при прочих равных. Но у меня в смартфоне процессор в 15 раз быстрее процессора в N9.

Реально современных качественных аппаратов не на Android или iOS я не встречал.

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

с удовольствием купил себе смартфон с операционной системой отличной от Android

Есть вероятность, хоть и близкая к нулю, что sailfish как-то выкарабкается, а не всплывёт кверху брюхом. Больше ничего приличного не видать.

2) Железо актуально сейчас и будет актуально еще пару лет (для моих задач).

Актуальность железа сильно зависит от говнописателей говнософта.

Вот именно, что при прочих равных.

Ну а какой смысл сравнивать скорость разных ЯП и их рантайма на разном оборудовании?

Но у меня в смартфоне процессор в 15 раз быстрее процессора в N9.

А гуй в N9 всё равно быстрее. :)

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

Есть вероятность, хоть и близкая к нулю, что sailfish как-то выкарабкается, а не всплывёт кверху брюхом. Больше ничего приличного не видать.

Слежу за развитием, но пока все плохо.

А гуй в N9 всё равно быстрее. :)

Я уже написал, что у меня Nexus 4 лежит, там GUI молниеносный. Только толку от него сейчас нет.

Ну а какой смысл сравнивать скорость разных ЯП и их рантайма на разном оборудовании?

Я сравниваю по конкретной задаче. Nokia N9 на моей задаче захлебнется или будет решать ее сутки. А мой смартфон успешно выполняет такое шифрование. Это означает, что я могу взять свой смартфон на отдых и обходиться только им (без ноутбука), а Nokia N9 мне не подходит.

Операционная система на десктопе (или смартфоне) - это прослойка для запуска приложений и только.

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

Nokia N9 на моей задаче захлебнется или будет решать ее сутки.

user@Nokia-N9:~$ time gpg -r test@test.test --encrypt stellarium-n9_0.3.6_armel.deb
real    0m 27.01s
user    0m 23.20s
sys     0m 0.91s
user@Nokia-N9:~$ ls -la stellarium-n9_0.3.6_armel.deb
-rw-r--r--    1 user     users     50202786 Aug 24  2013 stellarium-n9_0.3.6_armel.deb

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

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