Java плюсы и минусы языка

Содержание

На появление первой версии Java в 1996 году откликнулись не только специализирующиеся на вычислительной технике газеты и журналы, но даже такие солидные издания, как The New York Times, The Washington Post и Business Week. Java — единственный язык программирования, удостоившийся десятиминутного репортажа на Национальном общественном радио в США. Для разработки и сопровождения программных продуктов только на этом языке программирования был учрежден венчурный фонд в 100 млн. долларов. Это было удивительное время. Тем временам и последующей истории развития языка Java посвящена эта статья.

Программная платформа Java

В первом издании этой книги о Java было сказано следующее: "Как язык програм­мирования, Java перевыполнил рекламные обещания. Определенно Java — хороший язык программирования. Несомненно, это один из лучших языков, доступных серьез­ным программистам. Потенциально Java имел все предпосылки, чтобы стать великим языком программирования, но теперь время для этого уже, вероятно, упущено. Как только появляется новый язык программирования, сразу же возникает неприят­ная проблема его совместимости с созданным раньше программным обеспечением".

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

Java никогда не был только языком. Хорошие языки — не редкость, а появление некоторых из них вызвало в свое время настоящую сенсацию в области вычислительной техники. В отличие от них, Java — это программная платформа , включающая в себя мощную библиотеку, большой объем кода, пригодного для повторного использования, а также среду для выполне­ния программ, которая обеспечивает безопасность, независимость от операционной системы и автоматическую "сборку мусора".

Программистам нужны языки с четкими синтаксическими правилами и по­нятной семантикой (т.е. определенно не C++). Такому требованию, помимо Java, отвечают десятки языков. Некоторые из них даже обеспечивают переносимость и "сборку мусора", но их библиотеки оставляют желать много лучшего. В итоге программисты вынуждены самостоятельно реализовывать графические операции, доступ к сети и базе данных и другие часто встречающиеся процедуры. Java объе­диняет в себе прекрасный язык, высококачественную среду выполнения программ и обширную библиотеку. В результате многие программисты остановили свой вы­бор именно на Java.

Характерные особенности и достоинства Java

Создатели Java написали руководство, в котором объяснялись цели и достоинства нового языка. В этом документе приведено одиннадцать характерных особенностей Java. Этот язык:

  • простой;
  • объектно-ориентированный;
  • распределенный;
  • надежный;
  • безопасный;
  • не зависящий от архитектуры компьютера;
  • переносимый;
  • интерпретируемый;
  • высокопроизводительный;
  • многопоточный;
  • динамичный.

В данном разделе блога мы:

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

Простота

"Мы хотели создать систему; которая позволяла бы легко писать программы, не тре­бовала дополнительного обучения и учитывала сложившуюся практику и стандарты программирования. Мы считали C++ не совсем подходящим для этих целей, но чтобы сделать систему более доступной, язык Java был разработан как можно более похожим на C++. А исключили мы лишь редко используемые; малопонятные и невразумитель­ные средства C++, которые, по нашему мнению, приносят больше вреда, чем пользы".

Синтаксис Java, по существу, представляет собой упрощенный вариант синтаксиса C++. В этом языке отсутствует потребность в файлах заголовков, арифметике (и даже в синтаксисе) указателей, структурах, объединениях, перегрузке операций, виртуаль­ных базовых классах и т.п. (Отличия Java от C++ упоминаются на протяжении всей книги в специальных врезках.) Но создатели Java не стремились исправить все недо­статки языка C++. Например, синтаксис оператора switch в Java остался неизмен­ным. Зная C++, нетрудно перейти к Java.

Если вы привыкли к визуальной среде программирования (например, Visual Basic), язык Java может показаться вам сложным. Его синтаксис некоторые считают стран­ным, хотя понять его не составляет большого труда. Но важнее другое: пользуясь Java, приходится больше программировать. Начинающие программисты нередко предпо­читают язык Visual Basic, поскольку его визуальная среда программирования позволя­ет почти автоматически создавать инфраструктуру приложения. Чтобы достичь того же результата средствами Java, придется вручную написать довольно большой объем кода. Существуют, однако, интегрированные среды разработки (ИСР) от независи­мых производителей, которые позволяют программировать в стиле перетаскивания.

"Другой аспект простоты — краткость. Одна из целей языка Java — обеспечить разработку независимых программ, способных выполняться на машинах с ограни­ченным объемом ресурсов. Размер основного интерпретатора и средств поддержки классов составляет около 40 Кбайт; стандартные библиотеки и средства поддержки потоков, в том числе автономное микроядро, занимают еще 175 Кбайт".

На то время это было впечатляющим достижением. Разумеется, с тех пор библио­теки разрослись до гигантских размеров. Но теперь существует отдельная платформа Java Micro Edition с компактными библиотеками, более подходящая для встроенных устройств.

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

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

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

Поддержка распределенных вычислений в сети

"Язык Java предоставляет разработчику обширную библиотеку программ для пере­дачи данных по протоколу TCP/IP, HTTP и FTP. Приложения на Java способны от­крывать объекты и получать к ним доступ по сети с такой же легкостью, как и в локальной файловой системе, используя URL для адресации".

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

Надежность

"Язык Java предназначен для написания программ, которые должны надежно рабо­тать в любых условиях. Основное внимание в этом языке уделяется раннему обна­ружению возможных ошибок, контролю в процессе выполнения программы, а также устранению ситуаций, которые могут вызвать ошибки. Единственное существен­ное отличие языка Java от C++ кроется в модели указателей, принятой в Java, ко­торая исключает возможность записи в произвольно выбранную область памяти и повреждения данных".

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

Если вам приходилось раньше программировать на Visual Basic или другом язы­ке, где указатели явным образом не применяются, то у вас может возникнуть не­доумение, почему этот вопрос настолько важен. Программирующим на С нужны указатели для доступа к символьным строкам, массивам, объектам и даже файлам.

При программировании на Visual Basic ничего подобного не требуется, и разработ­чик может не беспокоиться о распределении памяти для хранения объектов. С дру­гой стороны, многие структуры данных в языке, не имеющем указателей, реализо­вать очень трудно. В Java выбрана золотая середина. Для простых конструкций, вроде символьных строк и массивов, указатели не нужны. Но в то же время указателями можно в полной мере воспользоваться там, где без них нельзя обойтись, например, при составлении связных списков. Программирующий на Java полностью защищен, поскольку он никогда не обратится к неправильному указателю, не допустит ошибок выделения памяти, и ему не придется искать причины утечек памяти.

Читайте также:  Авито фитнес браслет xiaomi mi band 2

Безопасность

"Язык Java предназначен для использования в сетевой или распределенной среде. По этой причине большое внимание было уделено безопасности. Java позволяет созда­вать системы, защищенные от вирусов и несанкционированного доступа".

В первом издании мы предостерегали: "Никогда не говорите никогда", и оказа­лись правы. Вскоре после выхода первой версии Java Development Kit группа экспер­тов по вопросам безопасности из Принстонского университета обнаружила первые ошибки в системе защиты Java 1.0. Компания Sun Microsystems развернула иссле­дования в области безопасности программ на Java. В частности, она обнародовала спецификацию и код виртуальной машины и библиотек, ответственных за защиту. Это ускорило выявление и устранение ошибок. Так или иначе, создатели Java силь­но затруднили задачу обхода ее механизмов безопасности. Обнаруженные с тех пор ошибки носили лишь технический характер и были совсем не многочисленны.

Ниже перечислены некоторые виды нарушения защиты, которые с самого начала предотвращает система безопасности Java.

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

Со временем в Java был добавлен ряд новых средств защиты. Так, в версии Java 1.1 появилось понятие классов с цифровой подписью (подробнее об этом — во втором томе). Пользуясь таким классом, вы получаете сведения об его авторе. Если вы дове­ряете автору класса, то можете предоставить этому классу все необходимые полномо­чия на своей машине.

Независимость от архитектуры компьютера

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

Эта идея не нова. Более тридцати лет назад она была предложена Никлаусом Виртом (Niclaus Wirth) для языка Pascal. Эта же технология была реализована в си­стеме UCSD Pascal.

Очевидно, что байт-код, интерпретируемый с помощью виртуальной машины, всегда будет работать медленнее, чем машинный код, поэтому целесообразность такого подхода у многих вызывает сомнение. Но эффективность байт-кода мож­но существенно повысить за счет динамической компиляции во время выполнения программы. Этот механизм доказал свою эффективность и даже использовался при создании в корпорации Microsoft платформы .NET, также опирающейся на виртуаль­ную машину.

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

Переносимость

"В отличие от С и C++, ни один из аспектов спецификации Java не зависит от реа­лизации. Разрядность примитивных типов данных и арифметические операции над ними строго определены".

Например, тип int в Java всегда означает 32-разрядное целое число. А в С и C++ тип int может означать как 16-, так и 32-разрядное целое число. Единственное огра­ничение состоит в том, что разрядность типа int не может быть меньше разрядности типа short int и больше разрядности типа long int. Фиксированная разрядность числовых типов данных позволяет избежать многих неприятностей, связанных с вы­полнением программ на разных компьютерах. Двоичные данные хранятся и пере­даются в неизменном формате, что также позволяет избежать недоразумений, свя­занных с разным порядком следования байтов на различных платформах. Строки сохраняются в стандартном формате Unicode.

"Библиотеки, являющиеся частью системы, предоставляют переносимые интер­фейсы. Например, в Java предусмотрен абстрактный класс Window и его реализации для операционных систем Unix, Windows и Macintosh".

Всякий, когда-либо пытавшийся написать программу, которая одинаково хорошо работала бы под управлением операционных систем Windows, Macintosh и десятка разновидностей ОС Unix, знает, что это очень трудная задача. Разработчики версии Java 1.0 предприняли героическую попытку решить эту задачу, предоставив простой набор инструментальных средств, приспосабливающий обычные элементы пользо­вательского интерфейса к различным платформам. К сожалению, библиотека, на которую было затрачено немало труда, не позволила достичь приемлемых результа­тов в разных системах. (В реализациях графических программ на разных платформах нередко проявлялись характерные ошибки.) Но это было лишь началом. Во многих приложениях машинная независимость оказалась намного важнее изысканности гра­фического пользовательского интерфейса. Именно эти приложения выиграли от по­явления версии Java 1.0. А ныне инструментальный набор для создания графического пользовательского интерфейса (ГПИ) полностью переработан и больше не зависит от интерфейсных средств, используемых на конкретном компьютере. Теперь он выгля­дит вполне согласованным и, по нашему мнению, намного более привлекательным для пользователя, чем в прежних версиях.

Интепретируемость

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

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

Производительность

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

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

Многопоточность

"К преимуществам многопоточности относится более высокая интерактивная реакция и поведение программ в реальном масштабе времени".

Если вы когда-либо пытались организовать многопоточную обработку на ка­ком-нибудь из языков программирования, то будете приятно удивлены тем, насколь­ко это легко сделать на Java. В потоках, организуемых на Java, могут быть использова­ны преимущества многопроцессорных систем, если операционная система допускает такую возможность. К сожалению, реализации потоков в большинстве систем сильно отличаются друг от друга, а разработчики Java не предпринимают должных усилий, чтобы достичь независимости от платформы и в этом вопросе. Только код для вызо- ва потоков остается одинаковым для всех машин, а ответственность за их поддерж­ку возлагается на операционную систему или библиотеку потоков. Несмотря на это, именно простота организации многопоточной обработки делает язык Java таким привлекательным для разработю! серверного программного обеспечения.

Динамичность

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

Это очень важно в тех случаях, когда требуется добавить код в уже выполняю­щуюся программу. Ярким тому примером служит код, загружаемый из Интернета для выполнения браузером. В версии Java 1.0 получить информацию о работающей программе было непросто, но в последних версиях Java программирующий получает полное представление как о структуре, так и о поведении объектов. Это весьма ценно для систем, которые должны анализировать объекты в ходе выполнения программы. К таким системам относятся средства построения графического пользовательского интерфейса, интеллектуальные отладчики, подключаемые компоненты и объектные базы данных.

В данной статье я сделаю небольшое сравнение java с другими языками программирования и опишу наиболее весомые, по моему мнению, плюсы этого языка.

1. Java самый популярный/востребованный язык программирования.

Сразу даю ссылки на статьи со статистикой Первой статьи, как по мне достаточно, но для подтверждения достоверности информации, даю ссылки и на другие источники

Читайте также:  Daemon tools iscsi target

И в ближайшее время, думаю, это вряд ли поменяется т.к.

2. на Java пишут мобильные приложения (Под операционную систему андроид, аудитория которой весной 2013 года составляла более, чем 162 млн пользователей), веб и настольные решения. Можно очень долго писать отдельно о каждой категории, ограничусь небольшим количеством цифр и моих мыслей.
Если не ошибаюсь, платформа Андроид появилась в 2005 году т.е. ей всего 8 лет (!) и за это время она сумела покорить такое количество пользовательской аудитории. Прирост ее за последний год составляет почти 80 процентов. Более подробную статистику можно посмотреть тут
И почитать про андроид вооот тут
Настольные и веб приложения создаются на джава уже большое количество лет и многим проектам необходима поддержка, клиенты хотят видеть новые версии, обновления и пр., что говорит о необходимости разработчиков, которые будут заниматься поддержкой. Так же java регулярно обновляется (еще один ее плюс :)) и предоставляет миру новые технологии, которые весьма востребованы! И естественно нужны люди, владеющими этими “штучками”.

Так же хочу отметить что google glass (продукт компании, которая, я уверен, в ближайшее время продвинет товар в массы) используют ОС Android! Думаю, в свое время будет пик на эту штуковину и молодежь наверняка будет стремиться купить ее, т.е. аудитория заметно увеличиться.

3. Java — кроссплатформенный Язык Программирования (В дальнейшем ЯП). Т.е. программы, которые пишутся могут быть запущенны на разных ОС (windows, linux…).

4. Разрабатывая на Java работа по «сбору мусора» производится автоматически. Я лично жутко не любил и забывал очищать память, программируя на С (честно говоря, это даже не назовешь программированием ). Работы с памятью нет вообще! (с указателями я тоже не подружился). Если перевести на простой язык, работать с джавой проще, нет необходимости заботиться и заморачиваться на некоторых вещах (язык более высокого уровня, чем CС++).

5. Одним из главных факторов для меня была ЗП. Зарплата джава программиста как правило больше, чем у разработчика другого ЯП, на тот момент это были максимальные числа, и сейчас, если не ошибаюсь, ситуация такая же.
Ссылки с более подробным описанием ситуации:

6. Java прост в изучении. Мой первый ученик чуть больше чем за пол года практически с нуля изучил джаву до такого уровня, чтоб его взяли на оплачиваемое обучение в ИТ компанию, занимаясь в основном раз в неделю. Так же в недавнем будущем я был соучастником того, как ребята за 2 месяцу на моих курсах с нуля научились программировать и тоже устроились на работу. Особенно легко java дается тем, кто знает английский. А тем кто не знает, рекомендую срочно начать его изучать т.к. после java это первый необходимый язык для большинства программистов =).

7. JAVA — свободная платформа с открытым исходным кодом.
(Тут нужно немного пояснить что Java это ЯП, но в тоже время это целая платформа — множество классов, созданных разработчиками языка с целью его развития и упрощения работы).

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

В статье я не упомянул набирающий популярность ruby on rails. К сожалению с ним не работал и не могу ничего сказать, знаю что спрос и зарплаты растут ооочень быстро.

И еще небольшие дополнения: естественно, java это не единственный язык программирования с автоматической сборкой мусора и приложения под андроид можно написать к примеру на C++ и есть другие бесплатные языки и т.д. и т.п. НО java одновременно попадает во все эти категории, в отличии от других языков.

Не так много технологий могут похвастаться тем, что они актуальны уже более 20 лет. Однако в этом году Java заняла пятое место в списке самых популярных технологий, уступив только неоспоримым лидерам: JavaScript, HTML, CSS и SQL. Java занимает 18-е место в рейтинге любимых технологий (по результатам опроса StackOverflow) и не попадает в рейтинги ненавистных. Сегодня обсудим плюсы и минусы Java — близкого и дорогого для многих программистов языка, проверенной временем технологии с узнаваемым логотипом, в виде чашки горячего кофе.

Что такое Java-программирование: история и вклад

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

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

  • Java Development Kit (JDK) — комплект разработчика Java. С помощью JDK и стандартного блокнота можно писать и запускать/ компилировать код на Java;
  • Java Runtime Environment (JRE) — исполняющая система Java. Механизм распространения программного обеспечения, состоит из автономной виртуальной машины Java, стандартной библиотеки Java (Java >Integrated Development Environment ( >Java можно найти везде. Это основной язык разработки для Android. Он используется в веб-приложениях, правительственных веб-сайтах и ​​технологиях обработки больших данных, таких как Hadoop и Apache Storm. Java подходит и для научных проектов, особенно в области обработки естественного языка. Язык Java преобладал и в программировании для мобильных устройств, задолго до появления смартфонов — первые мобильные игры в начале 2000-х годов были написаны на Java. Java, благодаря своей долгой истории, заработал свое место в Зале славы программирования. Индекс TIOBE, один из самых авторитетных индексов популярности программ в мире, при составлении рейтинга использует результаты поисковой выдачи. Несмотря на растущую популярность Go и Python, Java остается на вершине списка уже более десятилетия.

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

Как Java изменила мир программирования:

Гибкость. Java доказала, что C — процедурный, управляемый вручную и зависящий от платформы код — это не предел совершенства . Благодаря Java, все больше людей начали применять объектно-ориентированное программирование, которое сейчас используется повсеместно.

Апплеты. Еще до появления JavaScript, в Java добавили апплеты — небольшие веб-программы, которые предоставляют интерактивные элементы для визуализации и обучения. Они не используются ни для чего, кроме простой анимации, однако апплеты привлекли внимание многих программистов и подтолкнули их к разработке HTML5, Flash и JavaScript.

Разработка через тестирование. Java TDD — уже давно не экспериментальная практика, а стандартный способ разработки программного обеспечения. Введение JUnit в 2000 году считается одним из самых больших достижений Java.

Плюсы программирования на Java

Java — уже не единственный официально поддерживаемый язык для разработки на Android. Java далеко не единственный выбор в веб-программировании. Тем не менее, Java идет в ногу со временем. Давайте рассмотрим, какие преимущества предлагает Java.

+ Объектно-ориентированное программирование

Java включает в себя объектно-ориентированное программирование (OOP) — концепцию, в которой вы не только определяете тип данных и его структуру, но и набор функций, применяемых к нему. Таким образом, структура данных становится объектом, которым можно управлять для создания отношений между различными объектами.

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

В чем плюсы ООП?

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

+ Java — язык высокого уровня с простым синтаксисом и плавной кривой обучения

Java — это язык высокого уровня, то есть он похож на человеческий язык. В отличие от языков низкого уровня, которые напоминают машинный код. Языки высокого уровня преобразуется с помощью компиляторов или интерпретаторов. Это упрощает разработку, делая язык более легким для написания, чтения и обслуживания.

Синтаксис Java основан на C ++, поэтому Java похожа на C. Тем не менее, синтаксис Java проще, что позволяет новичкам быстрее учиться и эффективнее использовать код для достижения конкретных результатов.

Читайте также:  Mini led projector инструкция на русском

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

+ Стандарт для корпоративных вычислительных систем

Корпоративные приложения — главное преимущество Java с 90-х годов, когда организации начали искать надежные инструменты программирования не на C. Java поддерживает множество библиотек — строительных блоков любой корпоративной системы. Библиотеки помогают разработчикам создавать любые функции, которые могут понадобиться компании. Java широко распространен — это язык, который преподают в рамках введения в программирование в большинстве школ и университетов. Возможности интеграции Java впечатляют: большинство хостинг-провайдеров поддерживают Java. Более того, Java — язык, дешевый в обслуживании: работать с Java можно с любого компьютера, вне зависимости от конкретной аппаратной инфраструктуры.

+ Безопасность

Существует мнение, что Java — безопасный язык, однако это не совсем так. Сам язык не защищает вас от уязвимостей, но некоторые его функции устраняют распространенные уязвимости. Во-первых, в отличие от C, в Java нет указателей. Указатель — это объект, который сохраняет адрес ячейки памяти другого значения, что может вызвать несанкционированный доступ к памяти. Во-вторых, в Java есть Security Manager, созданная для каждого приложения политика безопасности, в которой можно указать правила доступа. Это позволяет запускать приложения Java в «песочнице» и устранять таким образом уязвимости.

+ Независимость от платформы («Написать один раз и использовать везде»)

«Написать один раз и использовать везде» (WORA) — популярная в IT-сфере фраза, с помощью которой Sun Microsystems описывает кросс-платформенные возможности Java. Можно создать Java-приложение на Windows, скомпилировать его в байт-код и запустить его на любой другой платформе, поддерживающей виртуальную машину Java (JVM). Таким образом, JVM служит уровнем абстракции между кодом и оборудованием.

Все основные операционные системы, включая Windows, Mac OS и Linux, поддерживают JVM. Если ваша программа не опирается на специфичные для платформы функции и пользовательский интерфейс, ее можно с легкостью перенести: по крайней мере, большую ее часть.

+ Язык для распределенного программирования и комфортной удаленной совместной работы

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

В других языках нужно использовать внешний API для дистрибуции. В Java эта технология встроена. Специфическая для Java методология распределенных вычислений называется Remote Method Invocation (RMI). RMI позволяет использовать все преимущества Java: безопасность, независимость от платформы и объектно-ориентированное программирование для распределенных вычислений. Кроме того, Java также поддерживает программирование сокетов и методологию распределения CORBA для обмена объектами между программами, написанными на разных языках.

+ Автоматическое управление памятью

Разработчикам Java не нужно вручную писать код для управления памятью благодаря автоматическому управлению памятью (AMM). AMM также используется в языке программирования Swift и при очистке памяти приложениями, которые автоматически обрабатывают распределение и освобождение памяти. Что именно это означает?

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

+ Многопоточность

Поток — наименьшая единица обработки в программировании. Чтобы максимально эффективно использовать время процессора, Java позволяет запускать потоки одновременно, что называется многопоточностью.

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

+ Стабильность и сообщество

Уже много лет развитию Java способствуют сообщество, поддержка Oracle и изобилие приложений и языков на JVM. Кроме того, постоянно выпускаются новые версии Java с новыми интересными функциями.

Сообщество разработчиков Java не имеет себе равных. Около 45% респондентов опроса StackOverflow 2018 используют Java. У Java чрезвычайно большая экосистема хорошо протестированных библиотек и фреймворков для любых задач. Начинающий разработчик, скорее всего, выберет Java: на тему Java-программирования существует более 1000 курсов на Udemy и более 300 на Coursera.

Минусы программирования на Java

Рассмотрим недостатки Java-программирования.

— Платное коммерческое использование

Недавно Oracle объявила, что с 2019 года компания начнет взимать плату за использование Java Standard Edition 8 в «коммерческих целях». За все новые обновления и исправления ошибок придется заплатить. Плата зависит от количества пользователей или компьютеров.

Текущая версия Java бесплатна для простого использования. Таким образом, каждая использующая Java компания должна оценить, насколько эффективно она использует Java. Компания должна понять, что выгоднее: искать альтернативное решение или продолжать пользоваться Java.

— Низкая производительность

У любого языка высокого уровня довольно низкая производительность из-за компиляции и абстракции с помощью виртуальной машины. Однако это не единственная причина низкой скорости Java. Например, приложение очистки памяти: это полезная функция, которая, к сожалению, приводит к значительным проблемам с производительностью, если требует больше 20 процентов времени процессора. Плохая настройка кэширования может вызвать чрезмерное использование памяти. Существует также взаимная блокировка потоков: так происходит, когда несколько потоков пытаются получить доступ к одному и тому же ресурсу. В этом случае происходит кошмар каждого Java-разработчика — ошибка из-за нехватки памяти. Тем не менее умелое планирование может решить все эти проблемы.

— Отсутствие нативного дизайна

Для создания графического интерфейса пользователя (GUI) разработчики используют различные инструменты, ориентированные для конкретного языка. Для Android-приложений есть Android Studio, которая помогает создавать приложения с нативным дизайном. Однако, когда дело доходит до пользовательского интерфейса на ПК, Java-инструмента для создания нативного дизайна нет.

Есть несколько инструментов для разработки GUI для Java: самые популярные из них — Swing, SWT, JavaFX, JSF. Библиотека Swing — это старый, но надежный кросс-платформенный инструмент, интегрированный в различные Java-IDE, в том числе Eclipse и NetBeans. Однако, если вы не используете шаблоны, вы заметите несоответствия интерфейса. SWT использует собственные компоненты, но не подходит для сложного интерфейса. JavaFX — лаконичный и современный, но слишком новый. В целом, перед созданием GUI на Java нужно подробнее изучить инструменты.

— Многословный и сложный код

Многословность кода может показаться преимуществом, которое поможет при изучении языка. Однако, длинные, чрезмерно сложные предложения затрудняют чтение и просмотр кода. Как и естественные языки, многие языки программирования высокого уровня содержат лишнюю информацию. Java — это более легкая версия неприступного C ++, которая вынуждает программистов прописывать свои действия словами из английского языка. Это делает язык более понятным для неспециалистов, но менее компактным.

Сравним Java и Python и увидим, в чем преимущество лаконичного кода Python. В Python не используются точка с запятой, круглые и фигурные скобки. Вместо «и», «или» и «нет» в качестве операторов используются «&&», «||» и «!».

В заключение: где используется Java?

Большинство организаций так или иначе используют Java. Широкий спектр вариантов использования Java делает ее практически незаметной в использовании: поэтому часто возникает вопрос «где используется Java?». Давайте посмотрим, в каких сферах используется Java:

Приложения для Android. Несмотря на активный рост Kotlin, Java по-прежнему остается де-факто основным языком Android-приложений. Таким образом, все разработчики Java очень легко могут стать Android-программистами. Хотя Android использует Android SDK вместо JDK, тем не менее, код написан на Java.

Программные продукты. Помимо уже упомянутых Hadoop и Apache Storm, Java использовалась для создания Eclipse, OpenOffice, Gmail, Atlassian и других.

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

Кассовые терминалы. Многие компании используют Java для создания систем PoS, поскольку их создание обычно требует кроссплатформенности и обширного штата специалистов.

Торговые системы. На Java написана Murex, популярная программа управления банками для фронтальной и обратной связи.

Программы для работы с большими данными. Hadoop написан на Java. Scala, Kafka и Spark используют JVM. Кроме того, Java предоставляет доступ к множеству проверенных библиотек, инструментов отладки и мониторинга.