Я недавно изучал J2SE. Примерно через 20 дней я закончил читать J2SE г-на Ма Бинбина. Я чувствую, что этот учитель настолько юморист, что я не буду отвлекаться, слушая его лекции. Я искренне ставлю большой палец вверх Учителю Ма Бинбин и еще два больших пальца вверх Учителю Ми, которая заставила нас изучить это видео! (В мире много красивых вещей, но не хватает глаз, чтобы открывать красивые вещи!).
Без лишних слов, давайте посмотрим, что на самом деле говорится в этом видео. Как показано ниже:
У людей, которые, возможно, изучали любой объектно-ориентированный язык (я изучал C#, который создан по образцу Java и в дальнейшем усовершенствовал Java), первое впечатление при виде этой картинки такое, что они в основном изучили все эти вещи. Кажется, что есть только GUI. , JDBC — это новая вещь.
На самом деле, они действительно похожи. Большинство людей все равно думают, что они одинаковы. Сравните их ниже!
С точки зрения синтаксиса оба отказались от многих ярких мест, таких как константная модификация функций и их параметров в C++, макроподстановка, глобальные переменные и глобальные функции.
Что касается наследования, как использовать однокорневое наследование, так и решения для реализации с несколькими интерфейсами, которые легче понять и построить. С точки зрения организации исходного кода была предложена лучшая логическая инкапсуляция, объединяющая декларацию и реализацию.
С точки зрения унификации типов между базовыми типами и однокорневыми унаследованными объектами, box/unbox, предложенный C#, умнее и эффективнее, чем класс упаковки Java.
Компонентно-ориентированное программирование, несомненно, является основным направлением современной разработки программного обеспечения. C# даже стал «одержим» компонентным программированием, которое совершенно отличается от Java, дебютировавшего 6 лет назад — конечно, это вопрос времени. C# реализует непосредственную поддержку программирования компонентов посредством свойств, индексаторов, делегирования, событий, перегрузки операторов, особенностей, версий и т. д. Хотя они могут быть реализованы косвенно через методы, интерфейсы или адаптеры в Java, история индустрии программного обеспечения говорит нам, что это наносит большой ущерб эффективности программирования или проектированию логики — первое, с чем сталкиваются языки высокого уровня, — это Люди, а не люди. машины. В дополнение к этим механизмам поддержки компонентов на уровне языка платформа .NET также предоставляет пакетное решение для настройки, эксплуатации, управления компонентами и т. д., а Visual Studio.NET, специально созданная для разработки компонентов, является еще более интересной. Это все для C#. Программирование компонентов открывает огромный мир. С точки зрения других технологий слабые недостатки Java незначительны, но с точки зрения компонентного программирования Java имеет неизлечимые недостатки по сравнению с C#. Особенно для разработчиков, имеющих опыт работы с C++ и Visual Basic, C# в этом отношении обладает непреодолимым очарованием и искушением.
С точки зрения кроссплатформенности, поддержка и реализация Java заслуживают похвалы, хотя скорость JVM по-прежнему вызывает головную боль. Хотя C# полностью учитывает переносимость с точки зрения базовой структуры, по крайней мере, пока не существует готового и протестированного продукта. C#, похоже, больше заинтересован в совместимости веб-служб XML, чем в кроссплатформенном программировании. Однако поддержка взаимодействия C# на уровне объектов с более чем 20 основными языками через его базовую языковую конструкцию (CLI) значительно повысила технический статус C#. Дешевая совместимость с COM-компонентами также приносит C# много очков — поддержание совместимой системы очень важно для современной индустрии программного обеспечения, а также является признаком ответственности для большинства разработчиков.
Конечно, комплексная техническая оценка двух языков — это ни в коем случае не просто перечисление и сравнение вышеперечисленных пунктов, их серверные платформы (C# для .NET, Java для J2EE), поддержка их фреймворков программирования. и реализация соответствующих инструментов для каждого языка в настоящее время. Некоторые системные основы и т. д. оказывают значительное влияние на развитие языков программирования. С чисто технической точки зрения C#, несомненно, более конкурентоспособен, чем Java. Спорить о том, кто кого копировал, нет смысла – развитие технологий по своей сути является процессом взаимного обучения. Чисто техническая конкуренция не может определить исход этих дебатов, даже если они должны быть решающими. Индустрия программного обеспечения рада видеть конкуренцию. Только технология, смягченная рынком, может служить нам лучше. Давайте подождем и посмотрим!