LINUX.ORG.RU

Java против C# в 2022г.

 ,


1

6

вот наткнулся на сравнение:

https://www.cisin.com/coffee-break/technology/c-vs-java-which-is-better-for-building-your-product-2022.html

если коротко, C# выигрывает в скорости сгенерированного кода, а Java в безопасности

★★★★★

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

Спасибо за сравнение.

Сайт, на котором нельзя выделить текст и скопировать… Мда…

Performance: C# performs better than Java according to benchmarks found on the internet.

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

В общем, желтизна, но спасибо за информацию.

blex ★★
()

По поводу скорости они более-менее одинаковые.

Сильные преимущества Java:

  • Стандартная библиотека с огромным количеством всего что может понадобиться для разработки.
  • Батареек на каждый чих в репозитории больше чем у .NET
  • Нормальная кросс-платформенность из коробки, а не убогая MS-style «кросс-платформенность», когда, например, GUI только под Windows.
  • Высокий уровень з/п, наверное самый высокий из тех языков которые распространнены.
  • Куча enterprise-ready фреймворков, тот же Spring.

Сильные преимущества C#:

  • Развитие. В отличие от стагнирующей Java, развиваемой по капле в год, C# развивается активно и очень хорошо заправлен различным синтаксическим сахаром от чего программировать на нём после Java очень приятно. Для Java эту проблему решает Kotlin, но решает он её не очень.
EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)

Когда я тыкал палочкой C# мне не понравилось, что у меня было стойкое чувство, что это продукт скрещивания плюсов и жабы. Прям как в меме «списывай, но так, чтобы было не совсем похоже». Неймспейсы и указатели от плюсов, «всё есть объект» и «безопасность» из Джавы и т. д.

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

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

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

А по сути, мне не нравится ни то, ни другое. Код на Java мне не нравится, когда-то писал немного на ней, и он выглядел каким-то громоздким, многословным. То, что можно сделать в 5 строк, оборачивается в 15 слоев EnterpriseFactoryFactoryFactory и прочих паттернов. Мне не нравится зависимость от JVM.

Многие из моих претензий идиосинкратические. Просто мне не нравится Java и всё. Как не нравится Perl, например, только он не нравится по другим причинам (хотя есть схожая: код на обоих тяжело читается).

emorozov
()

When writing code, it is important to understand the dangers associated with a framework. Java’s security is a strong feature of its design. It is statically typed which reduces the likelihood of type-related errors. Automatic code verification ensures that all code is correct before it executes. Java’s vulnerabilities are mainly due to integrated libraries and programs. C#, on the other hand, is more susceptible to SQL injections and CMD injections. This is due to the large number of C# functions. Microsoft provides clear guidelines on secure C# programming to address potential issues.

Галоперидол автору.

ritsufag ★★★★★
()

С# выигрывает в скорости генерации кода code-monkey . Объём люто растёт и нанять/сменить обезьянку не проблема. Код дешёвый.

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

на код и того и другого смотреть страшно. Но для Java этот страх лучше оплачивается.

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

Без непрерывного сосурити аудита на всех этапах разработки это все пальцем в нёбо (архитектору) на любом языке, особенно если что-то торчит в интернет, а неспециалистам не очевидно зачем тратить время и бабло на дополнительные проверки, т.к. их избаловал «тайм ту маркет», а сосурити-деформированный стафф ставит операцию «Х*як-х*як!» под угрозу, т.к. держать в штате кого-то еще бесполезнее и дороже «дево-собак» — дораха и большую часть времени бесполезна, а пентест в финале разработки внезапно заставляет архитектурга проводить операцию «прикрытие жеппы», т.к. он тоже не собирался думать про безопасный дизаен, оставляя это на откуп девелоперам... т.е. таким же не специалистам в сосурити :) далее тратится еще время на суматошные переделки для зашиты от очевидных косяков в дизайне и... добро если повторный пентнест (за отдельные деньги) не выявит новых уязвимостей или... официальных CVE фреймворка для которых даже патча нет :)

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

Просто мне не нравится Java и всё. Как не нравится Perl, например

эта тема строго про C# vs. Java. По другим ЯП просьба в другие темы писать. Исключения только для Kotlin как тесно связанным с Java тематикой.

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

Без непрерывного сосурити аудита

это иррелевантно ЯП. ЯП можно сравнивать по количеству потенциальных багов, хотя бы по количеству CVE за фиксированный период. Например, C проигрывает в этом Java. И если зажали денег на security by design (а так бывает и в конторах из списков Fortune XYZ), простая смена C на Java решает проблемы небезопасного кодирования.

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

простая смена C на Java решает проблемы небезопасного кодирования.

Не решает :) особенно если фронт написан на js :)

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

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

Язык программирование – это в первую очередь инструмент, а не творение исскусьва требующее уникальность. Так что ваш аргумент скорее в пользу C# (сочетает в себе наилучшие решения) а не Java.

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

Я не веб-разработчик, но интересно - а как такое делается (запрет выделения текста в браузере)? Кто-нибудь знает, чтоб не искать (а то найду, узнаю и забуду…)?

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

Правильное сравнение:

  1. По выразительности языка C# впереди. Фич в языке ещё на 3 языка хватит. Это и хорошо, и плохо.

  2. По библиотекам Java впереди. Хотя скорей всего все типовые нужды и у C# закрыты.

  3. По востребованности Java впереди, хотя в России C# необычно популярен.

Резюмируя — обе экосистемы хороши. Брать ту, где разработчики доступней на текущий момент.

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

Сайт, на котором нельзя выделить текст и скопировать… Мда…

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

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

обе экосистемы хороши

да щас.

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

крч нашли что сравнивать, как обычно.

olelookoe ★★★
()
Ответ на: комментарий от ya-betmen

Ндаа

Что? Раздутая стандартная библиотека в Java это внезапно уберудобная штука.

Захотел сделать что-то с GUI? Быстренько написал на Swing/AWT и оно будет работать везде.

Захотел с сетью поковыряться – да вот, пожалуйста, бери.

Нормальная многопоточность без всяких GIL как в Python? Держи и используй.

И т. д. без всяких фреймворков и зависимостей и с нормальной кросс-платформой.

До сих пор вижу кучу вспомогательных утилиток на Java во всяком ынтерпрайзе, у которых одна зависимость – JVM.

И Qt из мира C++ тоже пошли по пути Java, что не может не радовать.

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

Оно довольно уродливое особенно со стандартной темой.

Соглашусь с тем, что темы Metal и Nimbus уродливые и выглядят лишь чуть лучше темы Motif/CDE, которая тоже там имеется, однако никто не запрещает просто использовать системную тему в той операционной системе, где запускается приложение.

Выглядеть оно будет как-то так: https://raw.githubusercontent.com/EXL/JIconCreator/master/images/jiconcreator_windows10.png

Ну а если хочется чего-то современного, то https://github.com/JFormDesigner/FlatLaf спешит на помощь Java-програмистам. С этой крошечной библиотекой можно получить в своём Java-приложении такой же Look-and-Feel как в IDEA: https://raw.githubusercontent.com/EXL/JIconCreator/new_lafs/images/jiconcreator_macos10_13.png

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

Что? Раздутая стандартная библиотека в Java это внезапно уберудобная штука.

проблема в том что и «нестандартные» библиотеки раздуваются в огромные иерархии.

Вот говорят вам интерфейс Java - можно всякое быстро писать. Так там просто на ознакомление с документацией API месяца 3 надо. При том что прикладная область хорошо знакома.

это реальная проблема - java это по 3 класса на каждый чих. Энтерпрайз

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

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

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

В джаве в отличие от шарпа как раз весьма тонкая стандартная либа

Где? Там на минутку в её Java 7 эпостаси было целых три системы GUI: AWT, Swing и JavaFX. Уже это не позволяет назвать стандартную либу тонкой.

P.S. Речь идёт не о java.lang, конечно же, а о всё том что входит в дефолтную поставку JRE и JDK.

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

JavaFX

Она так и не вошла в стандартные, только как левая зависимость, просто изначально разрабатывалась в недрах Sun.
AWT и Swing это стандартные GUI, где AWT это биндинг к системным UI, давал доступ к очень небольшому числу платформенных UI компонентов. А Swing завезли в Java 1.3, значит это где-то 2001 год.
Плюс стоит упомянуть еще SWT который используют Eclipse и DBeaver, но это чисто сторонний UI тулкит. JavaFX сейчас тоже какой-то левой компанией поддерживается и они берут деньги за LTS версию.

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

Боже, как вспомню, так аж передернет. Даже по тем временам, Awt и Swing выглядели просто кошмарно. Можно было наказывать людей не тюремным сроком, а необходимостью делать что-либо в Java GUI. Мерзотные выцветшие цвета, квадратно-гнездовые виджеты, и дичайшие лаги на любое действие.

Только IntelliJ какой-то немыслимой магией смогла сделать юзабельный UI на Java. Не знаю, как им это удалось.

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

Только IntelliJ какой-то немыслимой магией смогла сделать юзабельный UI на Java. Не знаю, как им это удалось.

Есть тема для Swing под названием FlatLaf, она сделана подобно Idea.

Меня внешний вид Swing никогда не напрягал, как и Tcl/Tk тот же gtik.

А вот шрифт в Swing под Linux меня раньше напрягал, но теперь все исправили, с FREETYPE_PROPERTIES='truetype:interpreter-version=40' для меня выглядит годно.

Aber ★★★★★
()