Telamon.RU | ||||||
|
C# глазами JavaВерсия 2.0
Есть два подхода к сравнению языков программирования:
религиозная война и «a нам всё равно».
Я постараюсь втиснуться между ними и начну с общего.
Ключевой особенностью и Java, и C# является
автоматическое управление памятью. Оба языка
Конечно, бывают другие подходы: например, языки с динамической типизацией, да и старый добрый C++ не стоит на месте, но сейчас Java и .NET получили наибольшее распространение. Битва гигантовВ .NET есть такой язык J#. Он до такой степени похож на Java, что на нём можно писать код, из которого будут получаться сразу два практически одинаковых приложения: одно для .NET, а другое для Java. Такой подход иногда применяется на практике, но не даёт использовать в полной мере возможности ни той, ни другой платформы. Однако, большинство инвесторов хотят добиться как можно более хорошего результата, поэтому им приходится выбирать. И Microsoft, и Sun Microsystems стремятся всеми правдами и неправдами привлечь потенциальных клиентов на свою сторону и это хорошая основа для взаимовыгодного партнёрства. Но какая главная цель у больших корпораций? Правильно, они хотят заработать побольше денег. Поэтому нельзя принимать за чистую монету всё, что говорят их маркетологи. Арифметика получается довольно простая: чтобы получить поддержку со стороны миллионов программистов, гиганты вкладывают миллиарды долларов в разработку технологий, создание ресурсов для разработчиков, проведение конференций и другие мероприятия. Конечно, всё это помогает в работе, но, чтобы добиться существенных профессиональных успехов, недостаточно просто влиться в общий поток, необходимо вкладывать собственный труд, знания и способности. Целевая аудиторияЕсли вы разрабатываете на .NET, то ваше приложение будет запускаться под Windows и пользователи будут ждать от вас интеграции с Outlook, Word и Excel, причём, возможно, делать это нужно будет через COM. Ваши клиенты будут находиться под очень сильным влиянием Microsoft, поэтому с Microsoft вы будете стараться дружить по полной программе. Но если .NET развивается на авторитете Microsoft, то Sun Microsystems благодаря Java сводит концы с концами, поэтому Java-разработчики от Sun Microsystems практически не зависят. Условно рынок Java можно разделить на четыре части: веб-приложения (преимущественно использующие Tomcat), кроссплатформенные desktop-приложения для Windows/Linux/Mac, игры для мобильных телефонов и кластерные решения (в основном для финансовой индустрии). В первых двух случаях можно полностью сконцентрироваться на предметной области какая у клиента операционная система особого значения не имеет. Для разработчиков мобильных приложений очень важны хорошие отношения с операторами и издателями, но все они имеют дело с одним и тем же парком сотовых телефонов. Большие системы для онлайновой торговли технически весьма сложны и для решения таких задач вполне оправданы многопроцессорные сервера от Sun Microsystems и дорогие EJB-контейнеры от BEA, Borland и других компаний. Отличительная особенность этого сегмента влияние Microsoft на него крайне незначительно. Различия в языкахСразу отметим, что C# совсем не скопирован с Java между этими языками есть множество принципиальных различий. Пожалуй, самое главное отсутствие в С# checked exceptions. Подробное объяснение этому даёт Anders Hejlsberg. Обе точки зрения по этому вопросу имеют свои аргументы, но спорить не имеет смысла, решение давно принято: в Java checked exceptions есть, в C# нет. Я только хочу заметить, что грамотная обработка ошибок одно из существенных отличий качественного программного обеспечения от школьного домашнего задания.
После Java в C# не хватает анонимных классов, которые довольно часто используются при написании
GUI-приложений. Зато в C# есть
Многие ключевые слова в C# кажутся мне лишними. Например, мне трудно
представить мотивы реализации поддержки Однако, языки программирования не стоят на месте: например, Java 5 с типизированными коллекциями уже есть, а .NET 2.0 пока нет. Но перечислимые типы в .NET были с самого начала, а на Java 5 многие перейдут ещё очень не скоро. Какое влияние окажут на индустрию аттрибуты в .NET и аннотации в Java лично я просто не берусь предсказать. Средства разработкиДжентльменский набор разработчика приложений для .NET можно описать очень кратко: это полный комплект продуктов Microsoft. Конечно, кто-то использует ReSharper и другие плагины к Visual Studio, кого-то категорически не устраивает Visual SourceSafe и он использует другую систему контроля версий, а кому-то Oracle нравится больше чем MS SQL. Из особенностей .NET я бы выделил поддержку визуального проектирования GUI, широко известного со времён Delphi, и язык VB.NET. В Java принято делать код независимым от используемых инструментов, для сборки проектов повсеместно используется Apache Ant. Для Java есть множество самых разных средств разработки и они постоянно совершенствуются. Разработка веб-приложенийПаттёрны разработки веб-приложений одинаковы для всех, более того - они легко реализуются на любой платформе. Но если взять исходный код произвольного корпоративного сайта, то скорее всего мы увидим внутри макароны разной степени ужасности. Можно сделать вывод, что разработка веб-приложений не самый интересный бизнес с точки зрения программирования. ЗаключениеБезусловно, индустрии нужны массовые платформы и люди, которые их продвигают и поддерживают. Но использование даже самых современных технологий не гарантирует успеха конкретного проекта. Но, если вы способны грамотно поставить задачу, написать ясный код и сделать работающее решение вы сможете овладеть любым языком программирования. БлагодарностиОгромное спасибо Дмитрию Жемерову за помощь в написании первой версии этой статьи, компании JetBrains за средства разработки и компании DataArt за возможность работать программистом. Дополнение: Visual Studio 2005 и C# 2.0 Ссылки
1. The C# Programming Language for Java Developers
http://msdn.microsoft.com/vstudio/java/gettingstarted/csharpforjava/
июль-август 2004 года, май 2005
|
|||||