Как появился С# и при чём тут конфликт Sun и Microsoft
Рассказали, как появился язык программирования C# после неудачного сотрудничества Microsoft и Sun и долгих войн между компаниями.
4К открытий9К показов
Рассказали, как появился язык программирования C# после неудачного сотрудничества Microsoft и Sun и долгих войн между компаниями.
Какой язык программирования круче?
Java
C#
Конфликт 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 и пользоваться ей.
Кто прав в конфликте?
Sun
Microsoft
Как появился 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%.
4К открытий9К показов