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.
Стандартная библиотека с огромным количеством всего что может понадобиться для разработки.
Батареек на каждый чих в репозитории больше чем у .NET
Нормальная кросс-платформенность из коробки, а не убогая MS-style «кросс-платформенность», когда, например, GUI только под Windows.
Высокий уровень з/п, наверное самый высокий из тех языков которые распространнены.
Куча enterprise-ready фреймворков, тот же Spring.
Сильные преимущества C#:
Развитие. В отличие от стагнирующей Java, развиваемой по капле в год, C# развивается активно и очень хорошо заправлен различным синтаксическим сахаром от чего программировать на нём после Java очень приятно. Для Java эту проблему решает Kotlin, но решает он её не очень.
Когда я тыкал палочкой C# мне не понравилось, что у меня было стойкое чувство, что это продукт скрещивания плюсов и жабы. Прям как в меме «списывай, но так, чтобы было не совсем похоже». Неймспейсы и указатели от плюсов, «всё есть объект» и «безопасность» из Джавы и т. д.
Хоть джава, хоть плюсы воспринимаются как самостоятельные языки, в которых если и оглядывались на аналоги, то лишь концептуально, а в шарпе как будто просто накопипастили удачных идей из других языков сохраняя даже тот же самый синтаксис как в исходнике и не заботясь о единообразии.
Ну так это очевидно. Sun придумала попытку подмять рынок под себя, Microsoft побрыкалась, попыталась задушить традиционными методами. Не получилось, поэтому просто скопировали подход, но не один в один, чтобы не нарушать патенты, а со своими бантиками.
А по сути, мне не нравится ни то, ни другое. Код на Java мне не нравится, когда-то писал немного на ней, и он выглядел каким-то громоздким, многословным. То, что можно сделать в 5 строк, оборачивается в 15 слоев EnterpriseFactoryFactoryFactory и прочих паттернов. Мне не нравится зависимость от JVM.
Многие из моих претензий идиосинкратические. Просто мне не нравится Java и всё. Как не нравится Perl, например, только он не нравится по другим причинам (хотя есть схожая: код на обоих тяжело читается).
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.
С# выигрывает в скорости генерации кода code-monkey . Объём люто растёт и нанять/сменить обезьянку не проблема. Код дешёвый.
Java плотно сидит в нише надолго-энтерпрайз. Если надо чтобы нечто работало и поддерживалось спустя 10 лет без переписывания всего, это надо на Java. Но её сцуку надо уметь с опытом.
на код и того и другого смотреть страшно. Но для Java этот страх лучше оплачивается.
Без непрерывного сосурити аудита на всех этапах разработки это все пальцем в нёбо (архитектору) на любом языке, особенно если что-то торчит в интернет, а неспециалистам не очевидно зачем тратить время и бабло на дополнительные проверки, т.к. их избаловал «тайм ту маркет», а сосурити-деформированный стафф ставит операцию «Х*як-х*як!» под угрозу, т.к. держать в штате кого-то еще бесполезнее и дороже «дево-собак» — дораха и большую часть времени бесполезна, а пентест в финале разработки внезапно заставляет архитектурга проводить операцию «прикрытие жеппы», т.к. он тоже не собирался думать про безопасный дизаен, оставляя это на откуп девелоперам... т.е. таким же не специалистам в сосурити :) далее тратится еще время на суматошные переделки для зашиты от очевидных косяков в дизайне и... добро если повторный пентнест (за отдельные деньги) не выявит новых уязвимостей или... официальных CVE фреймворка для которых даже патча нет :)
это иррелевантно ЯП. ЯП можно сравнивать по количеству потенциальных багов, хотя бы по количеству CVE за фиксированный период. Например, C проигрывает в этом Java. И если зажали денег на security by design (а так бывает и в конторах из списков Fortune XYZ), простая смена C на Java решает проблемы небезопасного кодирования.
Хоть джава, хоть плюсы воспринимаются как самостоятельные языки, в которых если и оглядывались на аналоги, то лишь концептуально, а в шарпе как будто просто накопипастили удачных идей из других языков
Язык программирование – это в первую очередь инструмент, а не творение исскусьва требующее уникальность. Так что ваш аргумент скорее в пользу C# (сочетает в себе наилучшие решения) а не Java.
Я не веб-разработчик, но интересно - а как такое делается (запрет выделения текста в браузере)? Кто-нибудь знает, чтоб не искать (а то найду, узнаю и забуду…)?
эта ваша «выразительность» не впилась. в реальной жизни нужна читабельность, а не писабельность. это было рас. два - богатство экосистемы жабы в сравнении с хоть чем - это жырнючий плюсище, который позволяет двигать проекты в разы (буквально ) быстрее, чем барахтанье в выразительности языка. двигать - это не только тайм ту маркет, это еще и прототипирование. пока вы там выражаете свою выразительную мысль средствами своего выразительного языка жабокодер уже будет кнопки в прототипе нажимать.
Оно довольно уродливое особенно со стандартной темой.
Соглашусь с тем, что темы Metal и Nimbus уродливые и выглядят лишь чуть лучше темы Motif/CDE, которая тоже там имеется, однако никто не запрещает просто использовать системную тему в той операционной системе, где запускается приложение.
Что? Раздутая стандартная библиотека в Java это внезапно уберудобная штука.
проблема в том что и «нестандартные» библиотеки раздуваются в огромные иерархии.
Вот говорят вам интерфейс Java - можно всякое быстро писать. Так там просто на ознакомление с документацией API месяца 3 надо. При том что прикладная область хорошо знакома.
это реальная проблема - java это по 3 класса на каждый чих. Энтерпрайз
В джаве в отличие от шарпа как раз весьма тонкая стандартная либа, благо всё что нужно легко найти и подключить. В шарпе у тебя наоборот, очень много чего идет из коробки, а вот десяти альтернативных решений для парсинга жсона не будет.
Она так и не вошла в стандартные, только как левая зависимость, просто изначально разрабатывалась в недрах Sun.
AWT и Swing это стандартные GUI, где AWT это биндинг к системным UI, давал доступ к очень небольшому числу платформенных UI компонентов. А Swing завезли в Java 1.3, значит это где-то 2001 год.
Плюс стоит упомянуть еще SWT который используют Eclipse и DBeaver, но это чисто сторонний UI тулкит. JavaFX сейчас тоже какой-то левой компанией поддерживается и они берут деньги за LTS версию.
Боже, как вспомню, так аж передернет. Даже по тем временам, Awt и Swing выглядели просто кошмарно. Можно было наказывать людей не тюремным сроком, а необходимостью делать что-либо в Java GUI. Мерзотные выцветшие цвета, квадратно-гнездовые виджеты, и дичайшие лаги на любое действие.
Только IntelliJ какой-то немыслимой магией смогла сделать юзабельный UI на Java. Не знаю, как им это удалось.
Только IntelliJ какой-то немыслимой магией смогла сделать юзабельный UI на Java. Не знаю, как им это удалось.
Есть тема для Swing под названием FlatLaf, она сделана подобно Idea.
Меня внешний вид Swing никогда не напрягал, как и Tcl/Tk тот же gtik.
А вот шрифт в Swing под Linux меня раньше напрягал, но теперь все исправили, с FREETYPE_PROPERTIES='truetype:interpreter-version=40' для меня выглядит годно.