Функции и особенности языка Java


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

Философия Java

Язык Java был создан с пятью основными целями:

  1. Следует использовать методологию объектно-ориентированного программирования.
  2. Он должен позволять выполнение одной и той же программы в нескольких операционных системах.
  3. По умолчанию он должен включать поддержку сети.
  4. Он должен быть разработан для безопасного запуска кода в удаленных системах.
  5. Он должен быть простым в использовании и сочетать лучшее от других объектно-ориентированных языков, таких как C ++.
  6. Для обеспечения удаленного выполнения кода и поддержки сети Java-программисты иногда обращаются к таким расширениям, как CORBA (Common Object Request Broker Architecture), Internet Communications Engine или OSGi соответственно.

Объектно-ориентированный

Первая функция, объектно-ориентированная («ОО»), относится к методу программирования и языковой конструкции. Хотя существует множество интерпретаций объектно-ориентированного подхода, первая идея состоит в том, чтобы спроектировать программное обеспечение таким образом, чтобы различные типы данных, которые они используют, были связаны с их операциями. Таким образом, данные и код (функции или методы) объединяются в сущности, называемые объектами. Объект можно рассматривать как пакет, содержащий «поведение» (код) и «состояние» (данные). Принцип состоит в том, чтобы отделить то, что меняется, от того, что остается неизменным. Часто изменение структуры данных подразумевает изменение кода, который с ней работает, или наоборот. Это разделение на связанные и независимые объекты предлагает более стабильную основу для проектирования программной системы. Цель состоит в том, чтобы упростить управление крупными проектами и тем самым повысить их качество и сократить количество неудачных проектов. Еще одно большое обещание объектно-ориентированного программирования - это создание более общих сущностей (объектов), которые позволяют повторно использовать программное обеспечение между проектами, что является одной из фундаментальных предпосылок программной инженерии. Общий объект «клиент», например, теоретически должен иметь одинаковый набор поведения в разных проектах, особенно когда они в определенной степени совпадают, что обычно происходит в крупных организациях. В этом смысле объекты можно рассматривать как многоразовые части, которые можно использовать в нескольких разных проектах, тем самым позволяя индустрии программного обеспечения создавать крупные проекты с использованием существующих компонентов проверенного качества; в конечном итоге приводит к резкому сокращению времени разработки. В качестве примера объекта можно использовать алюминий. После определения данных (вес, пластичность и т. д.) И его «поведения» (сварка двух деталей и т. д.) «Алюминиевый» объект можно повторно использовать в области строительства, автомобилей, авиации и т. д.

Повторное использование программного обеспечения привело к разным результатам, столкнувшись с двумя основными трудностями: дизайн действительно общих объектов плохо изучен и отсутствует методология для широкого распространения информации о возможностях повторного использования. Некоторые сообщества с открытым исходным кодом хотят помочь в решении этой проблемы, предоставив разработчикам средства для распространения информации об использовании и универсальности многократно используемых объектов и библиотек объектов.

Независимость от платформы

Вторая особенность, независимость от платформы, означает, что программы, написанные на языке Java, также могут работать на любом типе оборудования. В этом смысл возможности написать программу один раз и выполнить ее на любом устройстве, как гласит аксиома Java: «написать один раз, запустить где угодно».

Для этого исходный код, написанный на языке Java, компилируется для генерации кода, известного как «байт-код» (в частности, байт-кода Java) - упрощенных машинных инструкций, специфичных для платформы Java. Эта часть находится «на полпути» между исходным кодом и машинным кодом, который понимает целевое устройство. Затем байт-код выполняется в виртуальной машине (JVM), программе, написанной на собственном коде целевой платформы (что понимает ее оборудование), которая интерпретирует и выполняет код. Кроме того, предоставляются дополнительные библиотеки для унифицированного доступа к характеристикам каждого устройства (таким как графика, выполнение через потоки или потоки, сетевой интерфейс). Следует отметить, что, хотя есть явная стадия компиляции,

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

Лицензия Sun на Java требует, чтобы все реализации были «совместимы». Это привело к юридическому спору между Microsoft и Sun, когда последняя заявила, что реализация Microsoft не поддерживает интерфейсы RMI и JNI, и добавила «зависимые» функции в свою платформу. Sun подала в суд на Microsoft и выиграла компенсацию убытков (около 20 миллионов долларов), а также постановление суда о принуждении к соблюдению лицензии Sun. В ответ Microsoft не предлагает Java в своей версии операционной системы, а в последних версиях Windows ее браузер Internet Explorer не поддерживает запуск апплетов без отдельного коннектора (или плагина). Однако Sun и другие источники предлагают бесплатные версии для разных версий Windows.

Ранние реализации языка использовали интерпретируемую виртуальную машину для достижения переносимости. Однако в результате программы работали сравнительно медленнее, чем написанные на C или C ++. Это заработало репутацию Java за низкую производительность. Недавние реализации JVM приводят к тому, что программы работают значительно быстрее, чем старые версии, с использованием различных методов, хотя это все еще намного медленнее, чем на других языках.

Первый из этих методов - просто скомпилировать непосредственно в машинный код, как это делают традиционные компиляторы, исключив этап байт-кода. Это приводит к отличной производительности при выполнении, но препятствует переносимости. Другой метод, известный как JIT-компиляция (Just In Time, или «'' компиляция на лету»), преобразует байт-код в машинный код при запуске приложения. Другие, более сложные виртуальные машины используют «динамическую перекомпиляцию», при которой виртуальная машина может анализировать поведение выполняющейся программы, перекомпилировать и оптимизировать критически важные части. Динамическая перекомпиляция может обеспечить более высокую степень оптимизации, чем традиционная (или статическая) компиляция, поскольку вы можете основывать свою работу на непосредственном знании среды выполнения и набора классов, загруженных в память. JIT-компиляция и динамическая перекомпиляция позволяют программам Java использовать скорость выполнения собственного кода, не теряя при этом преимущества переносимости в обоих случаях.

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

Сборщик мусора

В Java проблемы утечки памяти в значительной степени избегают благодаря сборке мусора (или автоматическому сборщику мусора). Программист определяет, когда создаются объекты, а среда выполнения Java отвечает за управление жизненным циклом объектов. Программа или другие объекты могут иметь объект, расположенный по ссылке на него. Когда нет ссылок на объект, сборщик мусора Java удаляет объект, освобождая тем самым занимаемую им память, предотвращая возможные утечки (пример: объект, созданный и используемый только внутри метода, имеет только сущность внутри него; при выходе из метода объект удален). Тем не менее, утечки памяти возможны, если ваш код хранит ссылки на объекты, которые больше не нужны, то есть они все еще могут иметь место, но на более высоком концептуальном уровне. В конечном итоге сборщик мусора Java позволяет легко создавать и удалять объекты, обеспечивает более высокий уровень безопасности и, возможно, быстрее, чем C ++.
Функции и особенности языка Java Функции и особенности языка Java Reviewed by Admin on мая 07, 2021 Rating: 5

Комментариев нет:

Технологии Blogger.