Файл: История возникновения и развития языка программирования Си (С++) и Java (Языки программирования С и С++).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 31.03.2023

Просмотров: 630

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ЯЗЫКИ ПРОГРАММИРОВАНИЯ JAVA:

История и версии Java:

Java - это преимущественно статический типизированный язык программирования (хотя он также поддерживает динамическую типизацию для некоторых концепций ООП, таких как полиморфизм), разработанный Джеймсом Гослингом, Майком Шериданом и Патриком Нотоном в июне 1991 года в Sun Microsystems. На многие конструкции влияли его аналоги в языках программирования C и C ++. Хотя на него сильно влияли C и C ++, он по-своему отличался. Он устранил указатели, так как его дизайнеры думали, что разработчики используют указатели не так, как предполагалось. Кроме того, он избавился от головной боли при управлении памятью, поскольку ввел автоматическое управление памятью с введением сборки мусора . Еще одна особенность, благодаря которой Java выделялась среди своих конкурентов, заключалась в том, что она поддерживала философию WORA (то есть «Писать один раз в любом месте») с введением виртуальной машины Java . В результате все, что требуется системе, - это JVM для запуска кода Java. Когда он был представлен публике, он имел огромный API, который включал Threading, Networking, GUI API и т. Д. , который был настолько популярен среди сообщества разработчиков, что привело к тому, что java вышла на 2-е место в чистом виде. количество разработчиков.  

Есть много версий Java, и они следующие:

  • Java SE (Java Standard Edition): эта редакция Java включает только основной язык программирования, который включает JVM и стандартную библиотеку. Последней стабильной версией Java SE является 8.
  • Java EE (Java Enterprise Edition): эта редакция Java включает в себя Java SE, а также другие функции, необходимые для веб-разработки, подключения к базам данных и т. Д. Последней стабильной версией Java EE является 7.
  • Java ME (Java Micro Edition): это издание Java для мобильных устройств. Эта версия Java оптимизирована для работы на мобильных устройствах, чем Java SE. Последняя стабильная версия Java ME - 3.4.

Парадигмы Java:

Java является отличным языком ООП. Он предлагает инкапсуляцию с помощью модификаторов доступа, таких как закрытый, общедоступный, защищенный и т. Д., Что значительно повышает надежность и безопасность кода. Но по сравнению с другими языками программирования, такими как C ++ и Python, Java не поддерживает множественное наследование классов, хотя поддерживает множественное наследование через интерфейсы. У Java также есть все характеристики, предписанные Структурной и Императивной парадигмами. Тем не менее, странная вещь в Java состоит в том, что, хотя она не поддерживает оператор «goto», который в принципе соответствует характеристикам языка структурного программирования, «goto» по-прежнему является ключевым словом в java.


Java также поддерживает процедурное программирование. Но java не позволяет нам иметь глобальные переменные или методы вне класса, что можно отнести к одной из целей его разработки (т.е. Оно должно быть «простым, объектно-ориентированным и знакомым»). Таким образом, Java - это больше язык ООП, чем все остальное.

Помимо вышеупомянутых парадигм, Java также поддерживает рефлексивную парадигму с API, доступными для доступа / создания / изменения / добавления членов класса. Java также является одним из немногих языков программирования, который поддерживает создание действительно многозадачных приложений, поскольку имеет огромный API, который поддерживает создание / управление / взаимодействие между потоками и процессами. Он также предлагает множество структур данных, которые поддерживают атомарный доступ, а также предоставляет множество утилит, необходимых для синхронизации потоков / процессов, таких как (Locks, Mutex, Semaphore, Monitor).

Сильные стороны, слабые стороны и области применения Java

Java является хорошим языком программирования ООП, поскольку он содержит большинство концепций ООП, таких как наследование, полиморфизм, инкапсуляция, и он также избавился от некоторых сложных концепций, таких как множественное наследование, из-за воспроизводимого такие вопросы, как Смертельная алмазная смерть. И, следовательно, результат таких решений привел к простому и удобному в использовании языку ООП.

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

Из-за всех этих сильных сторон Java широко используется при разработке приложений (преимущественно веб-приложений) для предприятий. Java также преимущественно используется в сфере образования для обучения программированию в колледжах и университетах, поскольку Java является отличным языком ООП.

Самый важный недостаток заключается в том, что, поскольку он не является языком, исполняемым по-умолчанию, его производительность немного ниже по сравнению с другими языками, исполняемыми по-умолчанию, такими как C, C ++. Объем памяти Java также немного велик, и, следовательно, из-за вышеперечисленных недостатков Java не подходит для систем реального времени.


Компиляция, выполнение и управление памятью

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

При JIT-компиляции только часть / фрагмент кода, который необходим компилятору, компилируется в машинный код. Эта техника значительно ускорит скорость выполнения языка программирования. Он также может выполнять некоторое кэширование, если определенный фрагмент кода необходимо вызывать несколько раз. Во время перевода JIT-компилятор также может применить некоторые оптимизации, основанные на машине, на которой выполняется среда выполнения.

Управление памятью:

Поскольку Java работает на JVM, его также можно назвать управляемым языком, поскольку JVM заботится обо всех ресурсах, необходимых для программы. Все распределение и освобождение памяти обрабатывается JVM через сборщик мусора. Когда создается новый объект, GC выделяет необходимую память, и как только объект выходит за пределы своей области, GC не освобождает память сразу, а вместо этого становится пригодным для сбора мусора, который в конечном итоге освободит память.   

Стратегии набора текста:

Java является строго статическим типизированным языком, но он также поддерживает динамическую типизацию. Java поддерживает динамическую типизацию благодаря тому, что поддерживает парадигмы программирования полиморфизма и отражения. Преимущества Java, являющегося языком программирования со статической типизацией, заключаются в том, что он позволяет программистам обнаруживать ошибки во время компиляции. Поскольку Java является строго статическим языком типов, оптимизации могут выполняться во время компиляции, поскольку типы объектов будут известны заранее, что приведет к более быстрому выполнению. Другое преимущество использования Java в качестве статического языка состоит в том, что отладчик сможет определить, что будет делать конкретный фрагмент кода, просто увидев типы входных параметров и их возвращаемые типы. Одним из основных недостатков наличия строгого статического типизированного языка является то, что в конечном итоге мы имеем так много «стандартного» кода, который не вносит ничего существенного в логику кода.


Доступные компиляторы / IDE для Java,

  • BlueJ — интерактивная среда разработки на языке Java, созданная в основном для использования в обучении, но также подходящая для разработки небольших программ. «BlueJ» создана для начального обучения программированию специалистами британского Университета Кента, австралийского Университета Монаша и компании Sun Microsystems.  
  • Eclipse написана на Java, потому является платформо-независимым продуктом, за исключением библиотеки SWT, которая разрабатывается для всех распространённых платформ (см. ниже). Библиотека SWT используется вместо стандартной для Java библиотеки Swing. Она полностью опирается на нижележащую платформу (операционную систему), что обеспечивает быстроту и натуральный внешний вид пользовательского интерфейса, но иногда вызывает на разных платформах проблемы совместимости и устойчивости приложений.
  • NetBeans IDE — свободная интегрированная среда разработки приложений (IDE) на языках программирования Java, Python, PHP, JavaScript, C, C++ и ряда других. Проект NetBeans IDE поддерживается и спонсируется компанией Oracle, однако разработка NetBeans ведётся независимым сообществом разработчиков-энтузиастов (NetBeans Community) и компанией NetBeans Org.
  • Xcode — интегрированная среда разработки (IDE) программного обеспечения для платформ macOS, iOS, watchOS и tvOS, разработанная корпорацией Apple. Первая версия выпущена в 2003 году. Xcode включает в себя большую часть документации разработчика от Apple и Interface Builder — приложение, использующееся для создания графических интерфейсов.Пакет Xcode включает в себя изменённую версию свободного набора компиляторов GNU Compiler Collection и поддерживает языки C, C++, Objective-C, Objective-C++, Swift, Java, AppleScript, Python и Ruby с различными моделями программирования, включая (но не ограничиваясь) Cocoa, Carbon и Java. Сторонними разработчиками реализована поддержка GNU Pascal, Free Pascal, Ada, C#, Perl, Haskell и D. Пакет Xcode использует GDB в качестве back-end’а для своего отладчика.

РАЗЛИЧИЯ МЕЖДУ C ++ И JAVA

C ++ и Java оба являются объектно-ориентированными языками программирования, однако языки C ++ и Java во многом отличаются друг от друга. C ++ был реализован для разработки приложений и систем и является расширением языка Си. Наряду с функциями процедурного языка в C ++ добавлена ​​поддержка функций объектно-ориентированного программирования., обработка исключений, общее программирование. Java имеет функции интерпретатора для систем печати, которые позднее поддерживали сетевые вычисления. Он построен на виртуальной машине, которая очень безопасна и переносима по своей природе. Он объединен с обширной библиотекой, реализованной для поддержки абстракции существующей платформы. Основной целью разработки Java была разработка простого в использовании и широко доступного языка программирования.


Давайте подробнее рассмотрим C ++ и Java:

C ++ и Java имеют разные цели дизайна. Как и C ++, Java также является объектно-ориентированным языком программирования со статистической типизацией и аналогичным синтаксисом. Java также имеет обширную документацию, известную как Javadoc.

C ++ использует указатели, в то время как Java не использует указатели. Java использует концепцию «ограниченных указателей». Программа на C ++ запускается, а компиляция выполняется с использованием ее компилятора. Компилятор в C ++ преобразует исходный код в язык машинного уровня, что делает C ++ зависимым от платформы языком . В Java исходный код Java сначала преобразуется в байт-код во время компиляции. Затем этот байт-код интерпретируется интерпретатором и средой выполнения для создания выходных данных, которые делают Java независимым от платформы языком.

C ++ не обеспечивает встроенную поддержку потоков, тогда как Java поддерживает потоки неявно. Хотя в последней реализации C ++ 11 он также поддерживает потоки. Java во многом похожа на C ++, но не включает в себя сложные понятия, такие как структуры, перегрузка операторов, указатели, шаблоны, объединения и т. Д. Кроме того, Java не поддерживает условную компиляцию (# ifdef / # ifdef type).

Каждая сущность является объектом в Java, кроме основных типов. У Java есть единственная корневая иерархия, поскольку все возникло из java.lang.Object.

Ключевые различия между C ++ и Java

Ниже объясняются некоторые моменты, которые показывают различия между C ++ и Java.

  • C ++ использует единственный компилятор, тогда как в Java используются компилятор и интерпретатор.
  • C ++ поддерживает перегрузку операторов и множественное наследование, а Java - нет.
  • C ++ больше связан с аппаратным обеспечением в отличие от Java.
  • C ++ не предоставляет встроенную поддержку для Интернета, в то время как Java имеет встроенную поддержку для того же. Однако C ++ поддерживает программирование сокетов, которое можно использовать для достижения того же.
  • C ++ использует концепцию заголовочных файлов для включения в программу различных библиотек. Java использует функции импорта для включения в программу различных классов и их методов.
  • C ++ поддерживает аргументы по умолчанию, а Java - нет.
  • В C ++ есть концепция оператора разрешения области видимости (::), который используется для определения метода, внешнего для класса, в то время как Java использует единственную точку (.), Которая может использоваться для определения классов с использованием пространства имен, из которого они получены.
  • Java не использует оператор перехода как C ++.
  • В Java нет деструкторов, поэтому механизм обработки исключений и сборка мусора отличаются от C ++.
  • Java поддерживает перегрузку методов, тогда как C ++ поддерживает перегрузку методов, а также перегрузку операторов.
  • В Java есть концепция передачи по значению.
  • В Java нет реализации целых чисел без знака, тогда как в C ++.
  • C ++ использует указатели и имеет возможность манипулировать адресами памяти.
  • Java не использует указатели, которые делают его безопасным для типов языком программирования.
  • Java использует Generics, тогда как C ++ использует шаблоны.
  • JVM помогает в эффективной оптимизации кода, поэтому производительность выполнения программы лучше, чем у C ++.
  • C ++ использует деструкторы, которые автоматически вызываются во время уничтожения объекта.
  • Java имеет встроенный класс Thread, который должен быть унаследован для создания нового потока. Программист должен переопределить свой метод run ().
  • C ++ не поддерживает потоки, такие как Java, C ++ достигает функциональности потоков, используя внешние библиотеки.