Аватарка пользователя Рафаил Агазода
Рафаил Агазода

Как появился С# и при чём тут конфликт Sun и Microsoft

Рассказали, как появился язык программирования C# после неудачного сотрудничества Microsoft и Sun и долгих войн между компаниями.

3957

Рассказали, как появился язык программирования C# после неудачного сотрудничества Microsoft и Sun и долгих войн между компаниями.

Конфликт Sun и Microsoft

Sun выпустила Java в 1995 году, сделав главным девизом языка “Компилируй один раз, запускай где угодно”. Такие амбиции заставляли Sun добиться от всех существующих ОС поддержки Java “из коробки”. В числе компаний, с которыми Sun предстояло договориться о поддержке, была Microsoft.

Язык показался Microsoft довольно перспективным, поэтому компании приступили к совместной разработке IDE только для Java — Visual J++. Также Microsoft разработала виртуальную машину Windows Java (JVM), на которой Java работала быстрее, чем на других ОС, и которая поддерживала несколько специфичных для Windows команд.

Разработки оказались настолько успешными, что Java работала быстрее на компьютере Windows стоимостью 1000 долларов, чем на компьютере Sun стоимостью 5000 долларов.

Однако у виртуальной машины были и недостатки: она не поддерживала удаленный вызов методов (RMI) или собственный интерфейс Java (JNI). Это не устраивало Sun.

Во-первых, это противоречило подходу Java “Компилируй один раз, запускай где угодно”. Программы, написанные на Java для Windows, не могли запускаться на станциях и серверах самой Sun.

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

Во-вторых, в Sun хотели, чтобы у Java была только одна среда выполнения — их собственная. В компании хотели сохранить контроль над развитием языка программирования, но Microsoft попросту не могла сделать реализацию достаточно сложной спецификации на 100% совместимой с другими системами и платформами, это невозможно.

Хэл Беренсон, бывший сотрудник Microsoft, рассказывал, что решение компании было отчасти вынужденным: было необходимо, чтобы Java поддерживала всю экосистему Windows. Sun не хотела идти на уступки и настаивала на том, чтобы Microsoft внедряла только их решения, а не собственные. В конце концов, Sun подала в суд.

Тогда в Microsoft просто отказались от Java. Не было никакого смысла создавать собственные решения, сталкиваясь с постоянными ограничениями. Если бы в Microsoft продолжили разработку продуктов для Java, те бы ничем не отличались от решений Sun. Тем более, пользователь мог самостоятельно выбрать и установить любую симпатичную ему IDE и пользоваться ей.

Как появился C# — ответ Java

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

Кроме того, некоторые сотрудники уже пытались разработать подобные языки, и результатами этих экспериментов стали Common Language Runtime и .NET.

Microsoft решили продолжить заниматься инновациями в сфере языков программирования. Сперва они внедрили поддержку C++ и Visual Basic (VB) в .NET, и на VB были сделаны большие ставки. В компании ожидали, что именно VB станет самым популярным языком программирования в .NET-среде.

Параллельно Microsoft обратилась к Андерсу Хейлсбергу и попросила его создать новый язык, который подходил бы под это определение. Этим языком программирования и стал C#. Спустя время оказалось, что C# так хорош, что уверенно обогнал Visual Basic по популярности в .NET. Конечно, этому способствовали и минусы самого Visual Basic.

Любопытный факт Изначально Microsoft хотела, чтобы C# работал только на их собственных ОС, и язык должен был быть только для Windows.

Спустя время компания обнаружила, что C# действительно превосходит Java в некоторых аспектах, но Java всё же удалось стать королевой кросс-платформенности. Microsoft задумался и решил поступить так же, пойдя навстречу другим операционным системам типа UNIX. Это решение принял Сатья Наделла, который сейчас является СЕО Microsoft.

Оказалось, что С# всё же опоздал на гонку вооружений, и догнать Java в плане кросс-платформенности языку всё же не удалось. И неизвестно, удастся ли ещё когда-нибудь.

Хэл Беренсон признаётся, что гонка Java и C# случилась не из-за стремления создать лучший язык программирования. Это был вопрос развития экосистем: Sun встала в позу и не позволила Microsoft создавать своё ПО для Java, а компания Гейтса нуждалась в подобных решениях. Создание и развитие C# стали вопросами поддержки инфраструктуры, и цели “убить” Sun у Microsoft не было.

Чем всё закончилось

Sun не отличалась эффективным менеджментом. Спустя время компания обнаружила, что Java не используют на настольных ПК и снова подала в суд на Microsoft, обязав ту распространять Java в течение следующих 10 лет.

У Microsoft к тому времени было достаточно собственных проблем, поэтому они согласились на условия Sun. Срок дистрибьюции Java ещё не подошёл к концу, как Sun выкупила компания Oracle. Когда срок соглашения истёк, ни Oracle, ни Microsoft не были заинтересованы в продвижении Java, и долгие войны подошли к концу.

Согласно рейтингу TIOBE, в августе 2023 года Java опережает C# в популярности: 10% против 7%.

Следите за новыми постами по любимым темам

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

Java
История IT
C#
Microsoft
Oracle
3957
Что думаете?
6 комментариев
Сначала интересные
Аватар пользователя Илья Эрлихман
На самом деле основное отличие .Net framework от виртуальной машины Java было в том, что было разработано несколько языков программирования, работающих с совершенно идентичными фреймворками. И интерфейс для разработки языков программирования сторонними разработчиками. Для JVM тоже есть языки, отличные от Java, но там с совместимостью хуже
Аватар пользователя Василий Беляев
Опросы будто ребёнок составлял
Аватар пользователя Рафаил Агазода
Автор
Василий Беляев, А как было бы лучше?
Аватар пользователя Михаил Киц
Kotlin
Аватар пользователя DerSkythe
Михаил Киц, Язык, который был сделан чтобы хоть как-то преодолеть убогость джавы
Аватар пользователя DerSkythe
Михаил Киц, Язык который был создан чтобы хоть как-то преодолеть отставание самой джавы. Типа Typescript для JS. Но отставание самой JWM никто не отменял. Типичный веб сервис на джаве, это фреймворк (J2EE), для запуска фреймворка (Spring), чтобы запустить фреймворк (Spring Boot). Типичные ошибки джавы происходят в рантайме, тогда как В dotnet это ошибки компиляции
Курсы
набор еще идетонлайн7590₽
набор еще идетонлайнбесплатно
набор еще идетонлайнбесплатно
набор еще идетонлайн2790₽
Все курсы