Файл: История возникновения и развития языка программирования Си (С++ ) и Java.pdf
Добавлен: 04.04.2023
Просмотров: 409
Скачиваний: 2
- Generics;
- Metadata;
- Autoboxing;
- Enumeratations;
- Swing;
- Var args;
- коллекции статического импорта и т. д.
В 2006 выходит Java SE 6 основными изменениями, которой являлись:
- поддержка языка Scripting Language;
- улучшенная поддержка веб-сервисов через JAX-WS;
- поддержка JDBC 4.0;
- поддержка подключаемых аннотаций;
- усовершенствования JVM, включая оптимизацию производительности синхронизации и компилятора;
- алгоритмы сбора Garbaze. [4, 5]
Java SE 7.0 D 2011 г. Java SE 7.0 основными изменениями, которой являлись:
- поддержка JVM для динамического языка;
- новая библиотека для параллельных вычислений;
- автоматическое управление ресурсами.
Java SE 8.0 18 марта В 2014 г. Вышла Java SE 8.0 включавшая различные исправления ошибок и улучшения.
В создании языка Java было пять основных целей:
- Он должен был использовать методологию объектно-ориентированного программирования.
- Он должен позволять выполняться одной и той же программы на нескольких операционных системах.
- Он должен содержать встроенную поддержку для использования компьютерных сетей.
- Он должен быть разработан для безопасного выполнения кода из удаленных источников.
- Он должен быть удобным в использовании, выбрав то пункты, которые считалось хорошей частью других объектно-ориентированных языков.
Для достижения целей сетевой поддержки и удаленного выполнения кода разработчикам Java иногда приходится использовать такие расширения, как CORBA, Internet Communications Engine или OSGi. [13]
Первая характеристика, объектной ориентации («OO»), относится к методу программирования и языкового дизайна. Хотя существует много интерпретаций OO, одна из основных отличительных идей заключается в разработке программного обеспечения, так что различные типы данных, которыми он управляет, объединяются вместе с их соответствующими операциями. Таким образом, данные и код объединяются в сущности, называемые объектами. Объект можно рассматривать как автономный пучок поведения (кода) и состояния (данных). Принцип состоит в том, чтобы отделить вещи, которые изменяются от вещей, которые остаются неизменными; часто изменение в некоторой структуре данных требует соответствующего изменения кода, который работает с этими данными, или наоборот. Это разделение на когерентные объекты обеспечивает более стабильную основу для разработки программной системы. [4]
Другой основной целью программирования OO является разработка более общих объектов, чтобы программное обеспечение могло стать более многоразовым между проектами. Например, общий «клиентский» объект должен иметь примерно один и тот же базовый набор поведения между различными проектами программного обеспечения, особенно когда эти проекты перекрываются на каком-то фундаментальном уровне, как это часто бывает в крупных организациях. В этом смысле программные объекты, можно рассматривать как подключаемые компоненты, помогающие разработчикам программного обеспечения строить проекты в основном из существующих и проверенных образцов, что приводит к значительному сокращению времени разработки. Повторное использование программного обеспечения встретило смешанные практические результаты с двумя основными трудностями: дизайн действительно универсальных объектов плохо понимается, а методология для широкого распространения возможностей повторного использования отсутствует.
Вторая характеристика, независимость от платформы, означает, что программы, написанные на языке Java, должны работать аналогично на разных аппаратных средствах. Разработчик должен иметь возможность написать программу один раз и запустить ее в любом месте. [5]
Это достигается большинством компиляторов Java путем компиляции кода языка Java в байт-код (в частности, байт-код Java) - упрощенные машинные инструкции, характерные для платформы Java. Затем код запускается на виртуальной машине (VM), программе, которая интерпретирует и выполняет общий байт-код Java. Кроме того, стандартизованные библиотеки предоставляются для обеспечения единого доступа к функциям хост-машин (таких как графика, потоковая передача и сетевое взаимодействие). Хотя есть явный этап компиляции, в какой-то момент байт-код Java интерпретируется или преобразуется в собственные машинные инструкции компилятором JIT.
Существуют также реализации компиляторов Java, которые компилируют собственный код объекта, такой как GCJ, удаляя промежуточную стадию байт-кода, но вывод этих компиляторов можно запускать только в одной архитектуре. [12]
Лицензия Sun на Java настаивает на том, чтобы все реализации были «совместимыми». Это привело к юридическому спору с Microsoft после того, как Sun заявила, что реализация Microsoft не поддерживает интерфейсы RMI и JNI и добавила собственные функции платформы. В ответ Microsoft больше не переносит Java с Windows, а в последних версиях Windows Internet Explorer не может поддерживать Java-апплеты без стороннего плагина. Тем не менее, Sun и другие разработчики, предоставили доступные системы времени исполнения Java бесплатно для этих и других версий Windows.
Первые реализации языка использовали интерпретированную виртуальную машину для обеспечения переносимости. В этих реализациях выполнялись программы, которые выполнялись медленнее, чем программы, скомпилированные для собственных исполняемых файлов, например, написанные на C или C++, поэтому язык приобрёл репутацию плохой производительности. Более поздние реализации JVM создают программы, которые работают значительно быстрее, чем раньше, используя несколько методов. [13]
Первый метод - просто скомпилировать непосредственно в собственный код, например, более традиционный компилятор, полностью пропуская байт-коды. Это обеспечивает хорошую производительность, но в ущерб переносимости.
Второй метод, известный как компиляция «точно в момент времени» (JIT), переводит байт-коды Java в собственный код во время запуска программы, что приводит к выполнению программы, которая выполняется быстрее, чем интерпретируемый код, но также приводит к сбоям на этапе компиляции во время выполнения.
Более сложные виртуальные машины используют динамическую перекомпиляцию, в которой виртуальная машина может анализировать поведение запущенной программы и выборочно перекомпилировать, и оптимизировать критические части программы. Динамическая перекомпиляция может обеспечить оптимизацию, превосходящую статическую компиляцию, потому что динамический компилятор может использовать варианты оптимизации на знаниях о среде выполнения и наборе загруженных классов. [11]
Переносимость — это технически трудная цель, и успех Java в этой цели был смешанным. Хотя на самом деле можно писать программы на платформе Java, которые ведут себя последовательно на многих системах, но большое количество доступных платформ с небольшими ошибками или несогласованностями привело к тому, что некоторые слоганы «Write once, Run anywhere» (писать один раз, запускать везде) в Sun называли «Write once, debug anywhere» (писать один раз, отлаживать везде).
Независимая от платформы Java, однако, очень успешна с серверными приложениями, такими как веб-сервисы, сервлеты и Enterprise JavaBeans, а также с встроенными системами на основе OSGi с использованием встроенных сред Java. [4]
3.3 Перспективы развития языка Java
Язык Java, созданный еще в 1995 г., остается одним из наиболее популярных языков программирования, особенно для клиент-серверных веб-приложений. Численность применяющих его разработчиков оценивается в 9 млн. Главная особенность заключается в том, что это развивающаяся технология.
В мире, наверное, нет более широко используемого программного кода, чем код на языке Java, созданном д-ром Джеймсом Гослингом и его командой в корпорации Sun Microsystems в начале 1990-х и выпущенном в 1995 г. в качестве ключевого компонента Sun Java Platform. И на то есть веские причины. [21]
Он применяется везде — практически в любом мобильном устройстве, сервере, ИТ-системе или сети. Приложения на Java обычно компилируются в байт-код, который может работать на любой виртуальной машине Java независимо от архитектуры компьютера.
Корпорация Oracle, которая приобрела Sun в 2010 г., официально является центром большинства разработок на Java, но в действительности этот язык принадлежит сообществу разработчиков.
Карманные устройства, ПК и серверы— «гиганты» — все ждут от Java одного и того же.
Хорошее описание Java дал сам д-р Гослинг. «Вы выстраиваете в ряд маленькое мобильное устройство вроде смартфона, настольный компьютер и сервер, и все они ждут от Java одного и того же».
Бинго. Теперь у вас более полное представление о том, что делает Java. Он позволяет всем этим штукам общаться друг с другом независимо от типа устройства, сети, телекоммуникационного провайдера, приложения или API-интерфейса. Он просто работает со всем, что угодно.
В 2019 г. Java остается одним из наиболее популярных языков программирования, особенно для клиент-серверных веб-приложений. Его синтаксис является в значительной мере производным от Си и Си++, но у него меньше низкоуровневых возможностей, чем в любом из них.
Однако язык продолжает развиваться по мере того, как на рынке появляются новые области применения. Один из экспертов по Java сказал недавно, что в прошлом году Java, возможно, больше изменился за считанные недели, чем за предыдущие 13 лет.
Во-первых, новый цикл релиза каждые 6 месяцев. Джон Дюймович, заслуженный инженер и главный технолог IBM по Java, имеющий более чем 20-летний опыт работы с этим языком, предложил свой прогноз, на что следует обратить внимание в мире Java в 2018-2019 г.
2018 г. стал годом Eclipse. Руководя теперь такими важнейшими проектами, как EE4J и MicroProfile, фонд Eclipse Foundation играл в 2018 г. еще более важную роль. Следует ожидать ускорения инноваций по мере того, как сообщество открытого кода будет все больше вовлекаться в эти и другие связанные с Java проекты. Разработчики захотят следить за Eclipse Foundation в следующем году.
Ускорится конвергенция с контейнерами. В рамках более широких усилий с целью упростить разработку и управление будет установлена более тесная связь между контейнерами и выполняемыми программами вроде Java. Те и другие будут оптимизированы, чтобы обеспечить беспрепятственное управление приложениями Java и их конфигурирование. Появятся согласованное управление памятью и упрощенная коммутация (wiring) между конструктами Java и контейнерами. В результате разработчики смогут использовать преимущества контейнеров и выполняемых программ на Java, которые, в сущности, представляют собой другой вид контейнеров. [21]
Kotlin станет следующим популярным языком. Kotlin готов стать главной силой в мире программирования. Его лаконичный синтаксис и интероперабельность с Java уже сделали Kotlin популярным среди многих разработчиков. Теперь у него имеется первоклассная поддержка на Android, которая должна расширить его применение на мобильных устройствах. Следует ожидать, что в 2019 г. он еще больше расширит свои позиции.
Новый график выпуска будет стимулировать ускорение инноваций. Новый график выпуска Java с интервалом в 6 месяцев будет означать более частые изменения и ускоренное появление новых возможностей. Следует ожидать, что предприимчивые центры разработки на Java воспользуются этими возможностями и используют Java для решения новых проблем и проникновения в новые сферы. Крупные организации, вероятно, будут ожидать поддержки долгосрочных релизов, но теперь у них появится более подробная дорожная карта. Поддержка со стороны сообщества также обладает потенциалом для того, чтобы сосредоточиться на популярных изменениях в промежуточных релизах».
Бессерверные платформы вызовут крупную перестройку Java. Растет спрос на бессерверные платформы. Первоначально они рассматривались как модели потребления, но теперь они расширяются, превращаясь из простых моделей программирования событий в сложные системы на базе потоков. Данная инновация продолжится в связи с тем, что разработчики облаков хотят сместить акцент на приложение и не беспокоиться по поводу серверов. Это означает, что программы на Java необходимо будет оптимизировать и перенести на бессерверную архитектуру. А в этом мире быстрые стартапы и небольшие фирмы играют более важную роль. [21]
Таким образом, можно сказать, что Java ещё долгое время будет оставаться очень популярным и мощным инструментом, который будет использоваться во многих областях информационных технологий.
ЗАКЛЮЧЕНИЕ
В рамках курсового проекта были решены следующие задачи:
- раскрыто понятия «программирование»;
- проведён анализ высокоуровневых языков программирования;
- проведено исследование возникновения и развития языков C, C++ и Java;
- проведён анализ перспективы развития этих языков;
- изучена литература в данной области.
Таким образом можно сказать, что оба языка, и С/С++, и Java прошли большой путь развития. Причиной возникновения этих языков были и случайные стечения обстоятельств, и упорный труд их создателей. Одно можно сказать точно, что эти языки определили развитие информационных технологий на рубеже XX-XXI веков.
С++ сейчас является господствующим во многих областях коммерческого развития. Java тоже не отстаёт и используется очень активно. Можно бесспорно сказать, что два этих языках на сегодняшний день являются очень мощными инструментами, занимающие первые строчки рейтингов языков программирования.
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ
- Буч Гради Объектно-ориентированное проектирование с примерами применения. — Конкорд, 2014. — 519 с.
- Васильев А. Java. Объектно-ориентированное программирование. — Питер, 2013. — 397 с.
- Дейтел Пол, Дейтел Харви С для программистов с введением в С11. — ДМК Пресс, 2013. — 546 с.
- Жемеров Д., Исакова С. Kotlin в действии. — ДМК Пресс, 2017. — 404 с.
- Крейг Уоллс Spring в действии. — ДМК Пресс, 2013. — 754 с.
- Магда Ю. Программирование и отладка C/C++ приложений для микроконтроллеров ARM. — ДМК Пресс, 2012. — 170 с.
- Мартин Роберт Идеальный программист. Как стать профессионалом разработки ПО. — Питер, 2011. — 240 с.
- Прохоренок Н. Основы Java. — БХВ-Петербург, 2017. — 688 с.
- Хабибуллин И. Самоучитель Java (3-е издание). — БХВ-Петербург, 2008. — 759 с.
- Bob Bryla, Kevin Loney. Oracle Database 12c The Complete Reference (Oracle Press) 1st Edition. — McGraw-Hill Education, 2013. — 1472 p.
- Herbert Schildt Java: A Beginner's Guide, Seventh Edition. — McGraw-Hill Education, 2017. — 752 p.
- Joshua Bloch Effective Java. — Addison-Wesley Professional, 2018. — 412 p.
- Joyce Farrell Java Programming. — Cengage Learning, 2015. — 976 p.
- Scott Meyers Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14. — O'Reilly Media, 2014. — 334 p.
- Stroustrup Bjarne Programming: Principles and Practice Using C++. — Addison-Wesley Professional, 2014. — 1282 p.
- Stroustrup Bjarne The Design and Evolution of C++. — Addison-Wesley, 2015. — 462 p.
- Tony Gaddis Starting Out with C++ from Control Structures to Objects. — Pearson, 2017. — 1344 p.
- Программирование [Электронный ресурс] Понятие «программирование». Режим доступа:
https://sites.google.com/site/wwwprogrammirovaniecom/home/ponatie Дата обращения (14.01.2019) - Сайт с образовательными программами [Электронный ресурс] История программирования и алгоритмических языков перспективы развития средств автоматизации. Режим доступа: http://emirb.org/zadacha-avtomatizacii-sostoit-v-osushestvlenii-avtomaticheskog.html?page=9 Дата обращения (14.01.2019)
- Справочник Java [Электронный ресурс] Подробнее о технологии Java Режим доступа: http://www.java.com/ru/about/ Дата обращения (14.01.2019)
- itWeek [Электронный ресурс] Перспективы Java на 2018 год. Режим доступа: https://www.itweek.ru/foss/article/detail.php?ID=199284 Дата обращения (14.01.2019)
- TIOBE [Электронный ресурс] TIOBE Index for January 2019. Режим доступа: https://www.tiobe.com/tiobe-index/ Дата обращения (14.01.2019)
- Habr [Электронный ресурс] C++ в современном мире Режим доступа: https://habr.com/company/pvs-studio/blog/259777/ Дата обращения (14.01.2019)