LINUX.ORG.RU
ФорумTalks

кто более опенсорсный, Java или C#?

 , , ,


0

3

Почитал тут тему Как установить и настроить javafx? и у меня вопрос, как сейчас вообще софт-то разрабатывать? C++ сложный, Rust нестабильный, Haskell мозголомный… (JavaScript слабопоточный, Python вообще ошибка проектирования)

★★★

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

На мой взгляд Java более опенсорсная. Есть как минимум две относительно популярные открытые реализации (OpenJDK и OpenJ9). У OpenJDK есть куча бинарных дистрибутивов от разных компаний. В разработке Java участвуют представители нескольких компаний. Кроме того имеется открытый maillist, в котором разработчики периодически просят отзывы у пользователей, то бишь есть вполне реальная прямая связь и твой голос может быть услышан (и проигнорирован, хех).

В экосистеме Java самый популярный фреймворк (Spring) разрабатывается отдельной компанией.

Имеется как минимум 4 известных мне IDE (Idea, Eclipse, Netbeans, Vscode) с вполне неплохой поддержкой языка. Все эти IDE открытые. Опять же они от отдельных компаний.

Про C# я много не знаю, но из того, что знаю, складывается впечатление, что там абсолютно всё завязано исключительно на Microsoft. Исходники от MS, сборка от MS, IDE от MS, фреймворки от MS. В общем на вкус и цвет, конечно, по определению FSF что то свободно, что это, тут уже каждый сам усматривает свои нюансы. Но для внешнего наблюдателя всё выглядит так, что сообщество не особо развивает экосистему, пользуется тем, что дают и всё.

Из минусов Java в этом аспекте можно назвать судебный процесс Oracle против Google. Хотя его суть не касается практически никого, кто разрабатывает на Java, но всё же какую-то тень он бросает.

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

На мой взгляд Java более опенсорсная. Есть как минимум две относительно популярные открытые реализации (OpenJDK и OpenJ9).

.NET Framework v4.x - legacy, закрытый. Есть частичный аналог Mono (без десктопного GUI WinForms), доступен даже в OpenBSD. Mono больше не развивается, .NET пока на BSD не портировали, т.е. BSD остается как бы без современного .NET ?

У OpenJDK есть куча бинарных дистрибутивов от разных компаний. В разработке Java участвуют представители нескольких компаний.

Прямым конкурентом с open-source Java являются последующие версии после .NET Core v3, (перепрыгнули v4 legacy) т.е. v5+

Сборки доступны только для Linux, macOS и Windows. Community что-то пытается сделать в плане порта хотя бы на FreeBSD.

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

.NET лежит на Github, там есть issues, discussions, PRs, etc.

В экосистеме Java самый популярный фреймворк (Spring) разрабатывается отдельной компанией.

CSLA.NET, DevExpress XAF, еще масса других.

Имеется как минимум 4 известных мне IDE (Idea, Eclipse, Netbeans, Vscode) с вполне неплохой поддержкой языка. Все эти IDE открытые. Опять же они от отдельных компаний.

С открытими IDE все плохо, из закрытых можно упомянуть MS VisualStudio for Windows, JB Rider и VSCode, в котором как-то странно в последнее время стало с открытостью плагинов для .NET

фреймворки от MS.

Очень много либ от других разработчиков, к примеру вместо EF есть nHibernate, через специальные переходники в своих прогах можно пользоваться готовыми либами питона, JavaScript, etc.

Хвалят производительность приложений на .NET:

https://devblogs.microsoft.com/dotnet/performance_improvements_in_net_7/

sanyo1234
()

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

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

В .net сам SDK сможешь отлаживать только под офтопиком при этом хорошенько повозившись перед этим.

В каком IDE? Это от IDE не зависит?

sanyo1234
()

Java

Кроме того, в Java нормальная кросс-платформенность, а не убогая Microsoft-style «кросс-платформенность».

EXL ★★★★★
()

C# конечно более опенсорсный.

MIT license vs GPL-2.0 license, по-моему ответ очевиден где больше свободы.

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

Lazarus – молодец, это про то, на чём разрабатывать десктоп окошки. Про java замечу не приятные вещи, которые холиварщики всяко оспаривают тем, что ты этим не пользуйся. java машина от oracle не только платная для комерческих клиентов, но ещё и в лицензионном соглашении указано, что соблюдают законодательство сша, то есть все санкции поддерживают. Также замечу, что современная джава машина – это мешанина C++ и asm кода, там очень много проблем. Замечу, все возражения я знаю. Что машин много, что можно быть постоянным тестером новых версий и джава будет бесплатна и так далее. Холиварить смысла не вижу.

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

Lazarus – молодец, это про то, на чём разрабатывать десктоп окошки.

На FireMonkey? Есть какие наборчики для него кроме обозначенных на странице:

https://www.fmxlinux.com/tlist.html

?

Как сдружить FireMonkey GUI с .NET приложением кроме RPC и вызовов в бинарные либы?

RemObjects Oxygen может собрать FireMonkey приложение для запуска на .NET?

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

есть в базовой поставке дистрибутивов

Из осей: Linux, macOS, Windows. Из архитектур: x86 и ARM в новых релизах.

На этом поддерживаемые оси и архитектуры заканчиваются.

Хоть они и популярные, но это лишь очень малая часть от доступных архитектур и осей:

https://www.openbsd.org/plat.html

Возможно все упирается в оптимизации, ассемблерные вставки и т.п.? Поэтому так мало разнообразия поддерживаемых .NET процов?

sanyo1234
()
Последнее исправление: sanyo1234 (всего исправлений: 2)
Ответ на: комментарий от no-such-file

Только для тех, кто хочет писать сложно.

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

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

C++ сложный, Rust нестабильный, Haskell мозголомный…

пиши на go.

Minona ★★☆
()

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

goingUp ★★★★★
()

Haskell мозголомный

Одного видео таки не хватило?

5 языков

А остальные 100500+? Если ты хотел многопоточности и простое - бери go или beam.

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

Всё упирается в .net sdk, который нужен для сборки .net sdk. Некоторые личности собирали под фрю, но официально МС такое не поддерживает.

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

Лож. Сейчас самое время разрабатывать на Rust.

Правильно говорить клади.

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

В каком IDE? Это от IDE не зависит?

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

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

Сначала хотел написать - false. Потом видать, где-то мягкий знак потерялся)

th3m3 ★★★★★
()

Пишите на C. Он простой, есть множество реализаций, язык отдельно, реализации отдельно, а не как любят «реализация и есть стандарт языка» в новомодных языках

cvs-255 ★★★★★
()
Последнее исправление: cvs-255 (всего исправлений: 2)

C# потому что более свободная лицензия MIT и отсутствие историй с судебными исками (можно ещё вспомнить старую реализацию от Microsoft) на альтернативные реализации.

Java показала свою токсичность и опасность вести с ней дело открытым проектам.

X512 ★★★★★
()

У жабы есть проприетарный рантаймииикомпилятор от Оракла, которые за деньги

.Нет все открыто

Гугла до сих пор судят за реализацию Жабы

МС предоставило публичную оферту, которая имеет юридический статус, что никого судить не будет.

Я сейчас с Го развлекаюсь

Достаточно интересно

grim ★★☆☆
()

C++ сложный

можно использовать хороший сабсет

Haskell мозголомный…

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

Python вообще ошибка проектирования

как по мне, то всё приятнее, чем public static class MyClass бойлерплейт читать постоянно

caryoscelus
()

Как правильно сказали выше, что то, что это – в целом сойдет. И опять же, у C# всё сильно завязано на Microsoft.

Я бы предпочёл Mono, если бы Mono не убили. Но нет – так Java.

С другой стороны, не могу сказать что write once, run everywhere остался вообще хоть в каком-то виде. Так как часть известного мне софта хочет разные версии JVM, одной нужен 8, другой 11, а третьим и последний сойдёт. Свобода ли это нет, но стагнация экосистемы – однозначно.

Как я говорил, Java уже попахивает мертвечиной, так как нигде она больше не нужна, кроме как в Android и модах на Minecraft. И там, и там тоже в общем-то от Java уже избавляются.

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

Как я говорил, Java уже попахивает мертвечиной,

Java - это уже почти как Cobol, разлагаться будет долго и тем более в новых версиях вроде многое исправляют ? :)

IMHO главное в мире Java - это не сам язык, а JVM runtime/SDK и огромное количество полезных либ типа Hibernate, которые могут исполняться на JVM на самых разных железках и осях.

Есть неплохие языки программирования для компиляции в JVM типа Scala и даже, я бы сказал, приятные в том числе и для скриптинга типа Groovy.

А с учетом наличия RemObjects Elements почти все современные языки Microsoft типа C#, VisualBasic.NET, etc. и даже ObjectPascal в лице Oxygen могут компилирироваться в различные таргеты, в т.ч. и в JVM, .NET, Native, etc.:

https://www.remobjects.com/elements/

Т.е. по сути RemObjects стирает грань между франт ендами типа Java, C#/VB, etc. и делает их взаимозаменяемыми на одном и том же проекте. Собирать можно хоть для JVM, хоть для .NET

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

С чего это Rust нестабильный?

WatchCat ★★★★★
()
Ответ на: комментарий от cvs-255

Писать на Си не в экосистеме юникс-лайк окружения (ака там где Unix -среда программирования от Кернигана-Пайка без особых гамаков_и_стоя(стохея так правильней) приемлема как учебник к )(ой и. Win и. Lin и. OsX ща в этом смысле таковы ) просто изолирование языком от окружения - для микроконтроллеров - да и то в которых реально почти нет оси - да Си как мобильный ассемблер годен -

но ваще мы же знаем как называется Си в котором есть(без заката sun в ручную) лямбды функции как граждане хибкие массивцы и произвольные ключи в значения и да build мусора в сапоги - а много_точек_исполнения отдано на откуп рантайму расширенной машины

жаль что это знание расколото на фракции

qulinxao3
()

NetBeans 15 и OpenJDK 18 с открытыми исходниками идут. Ставишь эту связку, указываешь путь до JDK в файле: netbeans/etc/netbeans.conf и запускаешь среду netbeans/bin/netbeans.

В визуальном дизайнере NetBeans можно создавать оконные приложения на Java Swing. JavaFX тоже поддерживается, но это кака и нестандарт.

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

Java показала свою токсичность и опасность вести с ней дело открытым проектам.

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

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

Если надо просить разрешения у автора – то это несвободный продукт. Для .NET я так понимаю не надо спрашивать никаких разрешений для создания несовместимых форков.

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

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

Microsoft выпустила свою JVM без библиотеки Swing, но со своими расширениями COM (для использования апплетов в OLE-контейнерах приложений) и AWT в качестве стандартных визуальных компонентов с COM-обёртками, за что в своё время и поплатилась. Правда, библиотеку Swing первых версий Sun Microsystems, Inc. не стандартизировала, библиотека формально не была стандартом первой Java и загружалась отдельно (по типу Borland JBCL, которая поставлялась в составе Borland JBuilder IDE). Тем не менее, суд обязал MS выплатить компенсацию за нанесённый ущерб несовместимости первой Java изначальному автору. Первыя версия Java без Swing поставлялась в составе Windows XP, в какой-то момент её убрали, потом снова позволили загружать MS JVM.

После случая судебного преследования со стороны гордой и независимой компании MS поразил синдром NIH, и она разработала Java-подобные язык C# и среду .Net Framework за авторством всё того же Андерса Хейлсберга, который в своё время разработал среды Turbo/Borland Pascal, Borland Delphi 1.0, а после перемания Microsoft — J++ и Microsoft Foundation Classes (MFC для C++).

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

MFC для C++

в википедии написано что он работал над MFC,а не разработал MFC.

Он перешёл в Microsoft в 1996 году, а первый релиз MFC был в 1992 году, поэтому он не мог быть автором MFC.

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

Вы только что рассказали поччему Java токсичная проприетарщина и почему с ней лучше не иметь дела в отрытых проектах. Могли бы ещё суд Google vs Oracle вспомнить.

но со своими расширениями COM

Как будто что-то плохое. Всяко удобнее неуклюжего JNI.

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

Вы только что рассказали поччему Java токсичная проприетарщина

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

NetBeans, OpenJDK имеют лицензии, запрещающую закрывать их код.

Google поплатилась тем, что назвала Java не то, что должно работать везде. Android — это проприетарный продукт одной компании, использующий Java не так, как предполагал разработчик платформы Java. В Google сделали в точности то, что в своё время провернула Microsoft: разделила Java на составляющие и попыталась продвигать только выгодные ей части в собственном аспекте развития.

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

использующий Java не так, как предполагал разработчик платформы Java

Что в этом плохого? Повторяю: со свободным проектом можно делать всё что угодно, в том числе несовместимые форки и реализации. Если кто-то запрещает, то проект не свободный. .NET более свободный.

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

JNI — это стандарт программирования для использования нативного кода (созданного на языке C) из Java-программ.

COM — это технология встраивания и взаимодействия компонентов, представленных в бинарном коде (независимо от языка программирования), только в среде Windows. Это потеря изначально заложенного принципа Java — Write once, run anywhere.

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

Повторяю: со свободным проектом можно делать всё что угодно, в том числе несовместимые форки и реализации.

При условии того, что вы не будете распространять его под авторским именем (Java).

iZEN ★★★★★
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)