Зачем нужен язык программирования java
Язык программирования Java: чем он хорош и сколько зарабатывают Java-разработчики
Java — один из самых популярных языков программирования. Сейчас на нём работают примерно 9 миллионов человек, а сами Java-приложения работают на семи миллиардах устройств. В этой статье расскажем, зачем учить этот язык и с чего начать.
Java — популярный язык программирования
Этот язык универсален и используется повсюду : мобильные приложения и игры, научные разработки и мобильные телефоны, игровые консоли и серьёзные суперкомпьютеры. Java — это основа практически для всех типов сетевых приложений. Многие исследования называют его языком программирования №1 среди разработчиков.
Алексей Кудасов
Какие преимущества у Java
Кроссплатформенность. У Java есть специальная программа, исполняющая код, — виртуальная машина Java или Java Virtual Machine. Написали программный код один раз — работает с любой аппаратной платформой или операционной системой: от смарткарт до приложений для умных домов.
Комьюнити. Как мы уже сказали, Java — достаточно распространённый язык: им пользуется большое количество разработчиков, и решение практически любой проблемы, которая может возникнуть при работе с Java, уже кто-то придумал. Благодаря тысячам библиотек и форумов, можно найти готовое решение почти в любой ситуации. На GitHub, например, есть открытые проекты и документация, а на форуме Stack Overflow можно обратиться за помощью к комьюнити.
Надёжность. Язык Java строго типизирован. То есть любая переменная или выражение имеет определённый тип уже на момент компиляции, что упрощает выявление каких-либо проблем. Компилятор сам подсказывает программисту, где тот допускает ошибку, и не даёт её совершить.
Объектно-ориентированность. Все библиотеки, написанные когда-либо для Java, — это классы, которые отвечают за функциональность языка. Любое приложение на Java — набор классов, описывающих разные объекты. Это хорошо, потому что позволяет создавать сложные программы, но простые в поддержке. И в целом Java — мультипарадигменный язык, то есть поддерживает множество принципов программирования, что позволяет эффективно решать разные задачи.
Относительная простота. C Java не так просто подружиться, как с Python , но он гораздо проще языка С или С++. Функциональность языка обновляется медленно, поэтому можно легко переходить на новые версии — заново изучать не придётся. Java — строго типизированный язык, а значит у новичка всегда будет возможность увидеть ошибку в коде при компиляции.
Гибкость. На Java можно разработать программу любой сложности: интернет-магазин, банковские приложения, высоконагруженные системы и даже искусственный интеллект.
Всё это делает Java отличным языком для новичков в программировании.
Что такое Java и зачем он нужен
Программисты Java ценятся, они делают сложные проекты, особенно их любят в среде разработки под Android и в различных корпоративных сферах. Вот что это за язык и почему его стоит изучать.
- Многоплатформенность. Работает на огромном количестве операционок и железа.
- ООП. Для тех, кто любит чёткие структуры и разграничение данных.
- Большое сообщество и много уже написанного кода. Нет проблем с работой и с готовыми решениями.
Минусы — тоже кратко:
- Не хватает скорости. Иногда это критично.
- Многословный код. Там, где С++ использует одну команду, Java требует пять.
Виртуальная машина
Допустим, у нас есть некий код на языке Java. Пока неважно, что там за синтаксис, как устроены классы и т. д. Просто код. Как его исполнить?
Если бы это был язык типа C++, нам нужно было бы скомпилировать его под требуемое железо или операционную систему. Скомпилировать — то есть преобразовать понятный нам код в понятные процессору инструкции. Так как процессоров много, компилировать нужно будет по-разному. Плюс в разных операционных системах по-разному устроены компоненты, кнопки, работа с сетью и т. д. Перед компиляцией программу нужно будет допилить под эти особенности.
Сила Java — в виртуальной машине JVM (Java Virtual Machine). Это такая программа, которая переводит Java-код, понятный человеку, в код, понятный процессору. Чтобы код стал универсальным, разработчики сделали виртуальные машины для каждой операционной системы и процессоров. Эти машины учитывают все особенности архитектуры своей платформы и знают, как обработать любую Java-команду. Это значит, что один и тот же Java-код можно запустить и на телефоне, и на компьютере, и где угодно ещё.
Специально для программистов: мы намеренно упростили принципы работы JRE и JVM и не говорим про байт-код, компиляцию и прочее. Вместо этого мы сосредоточились на принципах, которые помогают понять саму суть работы Java. Если вам кажется, что из-за простоты мы не описали что-то важное — расскажите об этом в комментариях.
Где можно запускать Java-код
Поэтому запускать код на Java можно везде, для чего уже была разработана JVM, то есть виртуальная машина Java. Например:
- ультрамощные серверы,
- компьютеры,
- смартфоны,
- кнопочные телефоны,
- роботы и микроконтроллеры типа Arduino, Raspberry Pi и многих других,
- фитнес-браслеты,
- GPS-трекеры,
- умные часы,
- умные телевизоры, холодильники, микроволновки, чайники и прочие домашние гаджеты,
- смарт-карты для доступа в помещения.
Представьте такую ситуацию: вы написали Java-программу, которая следит за свободным местом на диске, и как только его становится меньше 20% — выводит сообщение, мол, удали ненужные файлы. Теперь вы можете запустить эту программу везде, где есть JVM. Она сама разберётся с кодом, поймёт, для какого процессора она это делает, и запустит вашу программу. В результате один и тот же код будет следить за свободным местом на компьютере, кнопочном телефоне, смартфоне, планшете, умной микроволновке или домашней сигнализации.
Преимущества Java-программирования
Независимость от архитектуры и платформы. Вы пишете код, не задумываясь об особенностях операционной системы или процессора. Всё это берёт на себя виртуальная машина, а вы только пишете логику работы.
Объектно-ориентированное программирование. ООП — это современный стандарт программирования в коммерческих и промышленных системах. В случае с Java это получится само собой: дело в том, что, как и Ruby, Java — чистый ООП-язык. В нём даже функции превратились в методы и могут существовать только внутри класса.
Работа с памятью. Программисту не нужно следить за тем, сколько памяти расходует его программа и как её освободить, когда какая-то переменная больше не нужна. Для этого в Java встроено автоматическое управление памятью: Java не допускает её утечек и разрастания объёма, а после завершения программы освобождает все ресурсы.
Безопасность. Виртуальная машина сама следит за тем, чтобы программа не получила доступ к тому, что выходит за её полномочия. Например, Java-программа не сможет прочитать содержимое остальной оперативной памяти или связаться с другим компьютером, если это не предусмотрено изначальными правами доступа.
Большое сообщество и поддержка. Java — третий по популярности язык программирования в мире. В Сети есть тысячи сайтов, которые рассказывают об этом языке, помогают разобраться в коде или содержат готовые решения.
Стандарт в корпоративном программировании. Большим компаниям в программах нужна надёжность, стабильность работы и возможность поддерживать их долгое время. Сочетание ООП, управления памятью и независимости от архитектуры делает Java идеальным решением для этого.
Недостатки Java
Всё это звучит хорошо, но есть у Java и недостатки, весьма существенные.
Не самая высокая производительность. У С и С++ есть только компилятор, который переводит программу в машинный код. У Java такого нет, и всё делает виртуальная машина. Получается, что для выполнения Java-кода нужно делать двойную работу: процессор запускает JVM, а JVM выполняет сам код. Из-за такого подхода Java-программы в полтора-два раза медленнее, чем тот же код, написанный на С++.
Платная лицензия. С 2019 года компания Oracle, которая владеет лицензией на Java, разделила её на две части: платную и бесплатную. Если вам нужна долгая поддержка среды разработки и стабильная работа программ — берите платную лицензию, иногда стабильность важнее. Если вам не нужна поддержка и вы можете установить каждую новую бесплатную сборку самостоятельно — отдавать деньги не нужно.
Громоздкий код. Разработчики Java ставили своей целью упростить программирование на С++, и им это удалось. Цена, которую пришлось за это заплатить, — большие и длинные конструкции в языке, которые часто мешают пониманию сути того, что происходит. Сравните код, который рисует пирамидку из звёздочек, на Java и Python:
Кто и для чего использует Java
Для начала — список компаний и технологий, которые используют Java в качестве основного языка программирования:
- Amazon,
- LinkedIn,
- eBay,
- Yahoo!
- OpenOffice,
- IBM, Intel и Oracle.
Разработка под Android. Java до сих пор остаётся основным языком мобильной разработки для этой операционной системы, несмотря на растущую популярность Kotlin. Android Studio — официальная среда Java-разработки, признанная компанией Google.
Терминалы и платёжные системы. Благодаря виртуальной машине Java-код может работать на оборудовании, которое стоит в платёжных терминалах и банкоматах.
Работа с финансами. Если нужен простой и надёжный сайт по обработке платежей или переводу денег — используйте Java. Встроенные системы безопасности помогут избежать несанкционированных действий программы.
Зарплаты Java-программистов
По данным Хабр Карьеры на начало 2020 года, Java-программисты получают так:
Учитывая большое количество уже написанного кода, который надо поддерживать, Java-специалисты будут востребованы ещё очень долго. Поэтому если вы до сих пор думаете над языком для старта карьеры программиста — посмотрите в сторону Java.
С чего начать
Java — Учебник для начинающих программистов. Подойдёт для старта, хотя сам учебник написан местами тяжёлым и академическим языком.
Герберт Шилдт — можно брать любую книгу, в названии которой есть Java 8. Если нужно совсем с нуля — читайте «Java 8. Руководство для начинающих».
Если вам нужна дополнительная теория и нестандартные приёмы, почитайте «Java. Эффективное программирование» Джошуа Блоха. Подойдёт и тем, у кого уже есть опыт Java-разработки.
Что такое Java: объясняем для новичков
Рассказываем о языке Java: для чего он используется, какие у него плюcы и минусы. А ещё сравниваем Java с C# и Python.
Даже если вы никогда не интересовались программированием, скорее всего, вы слышали название Java — и не просто так. Это один из самых популярных в мире языков программирования: он был создан в 1995 году, быстро набрал популярность и уже много лет её не теряет. В рейтинге TIOBE за ноябрь 2019 года Java заняла первое место, а по статистике GitHub — третье: второе место занял Python, а первое — JavaScript.
Java используют везде: вы найдёте её почти во всех больших компаниях, в том числе в Netflix, AliExpress, Google, Intel, eBay, TripAdvisor и многих других.
Кстати, назвали этот язык в честь одного из сортов кофе.
Мария Грегуш
В бэкграунде — программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.
Оглавление
Java: что за зверь?
Java — мультифункциональный объектно-ориентированный язык со строгой типизацией.
С мультифункциональностью всё достаточно просто: Java действительно почти «волшебная таблетка» — на ней можно разрабатывать десктопные приложения, приложения под Android, заниматься веб-разработкой… Подробнее об этом ниже.
Строгая (сильная) типизация не позволяет смешивать в выражениях разные типы и не выполняет автоматически неявные преобразования. Это добавляет мороки: какие-то части приходится прописывать самому, а свободы у вас меньше, — зато в обмен на это вы получаете надёжность.
Объектно-ориентированный язык — это язык, созданный по модели объектно-ориентированного программирования. В ней существуют классы и объекты. Классы — это типы данных, а объекты — представители классов. Вы создаёте их сами, даёте названия и присваиваете им свойства и операции, которые с ними можно выполнять. Это как конструктор, который позволяет построить то, что вы хотите. Именно с помощью этой системы объектов в основном программируют на Java.
Что можно писать на Java
Как мы отметили выше, Java используется во многих сферах. На ней пишут:
- приложения для Android — Java практически единственный язык для них;
- десктопные приложения;
- промышленные программы;
- банковские программы;
- научные программы;
- программы для работы с Big Data;
- веб-приложения, веб-сервера, сервера приложений;
- встроенные системы — от маленьких чипов до специальных компьютеров;
- корпоративный софт.
Чаще всего вы встретите Java в веб-разработке и в приложениях для Android, но и в остальных сферах она тоже очень популярна.
Плюсы и минусы Java
У всех качеств Java, будь то строгая типизация или объектная ориентированность, есть свои плюсы и минусы, а ещё они есть у самой Java как у языка.
Плюсы
- Независимость — ваш код будет работать на любой платформе, которая поддерживает Java.
- Надёжность — в немалой мере достигается благодаря строгой статической типизации.
- Мультифункциональность.
- Сравнительно простой синтаксис.
- Java — основной язык для Android-разработки.
- Объектно-ориентированное программирование (ООП) тоже приносит много выгод:
- параллельная разработка;
- гибкость;
- одни и те же классы можно использовать много раз;
- код хорошо организован, и его легче поддерживать.
Минусы
- Низкая скорость (по сравнению с С и С++).
- Требует много памяти.
- Нет поддержки низкоуровневого программирования (Java — высокоуровневый язык). Например, у неё нет указателей .
- С 2019 года обновления для бизнеса и коммерческого использования стали платными.
- Для ООП нужен опыт, а планирование новой программы занимает много времени.
Переменная, которая содержит не значение (например, число), а адрес другой переменной. Она как бы «указывает» на другую переменную.
Спорный момент
- Автоматическая сборка мусора (Garbage collection): с одной стороны это выгода, но с другой стороны, разработчик не может контролировать процесс, хотя иногда это важно.
Есть ли у Java альтернатива?
Может показаться, что Java — абсолютный лидер и у неё нет соперников, но на самом деле всё совсем наоборот. Её часто сравнивают с С# и Python, и это только главные «противники». Давайте посмотрим на них внимательнее.
Java против Python
Java и Python соревнуются не первый год: в рейтингах они раз за разом занимают места рядом друг с другом (вот рейтинг 2019 года). Сравнивают их не просто так, у них действительно есть общие черты: оба языка очень популярные, объектно-ориентированные и работают вне зависимости от платформы.
Давайте посмотрим, что у них различается.
Типизация
У Java статическая типизация: вы должны прописывать тип данных, когда вводите новую переменную.
У Python динамическая типизация: это значит, что типы данных не надо прописывать, они определяются автоматически. Ещё одно отличие типизации: в Python разные типы переменных можно смешивать. Но и тут есть свои границы: например, вы можете сделать массив со строками и числами, но прибавить строку к числу уже нельзя.
Python даст вам больше гибкости и лёгкости в написании, зато Java предупредит ошибки.
Читаемость
Этот пункт связан с предыдущим, потому что то же указание типов влияет на конечный вид кода. Хотя у Java достаточно простой синтаксис по сравнению с другими языками, здесь Python выигрывает. Гораздо лучше слов эту разницу покажет пример.
Вот так может выглядеть код в Python:
То же самое, написанное в Java:
В целом у синтаксиса в Python простая ясная структура, он хорошо читается, его можно даже назвать интуитивным. Он хорошо подойдёт новичкам.
В Java код более комплексный, со множеством слов и знаков: на английском такой синтаксис называют словом «verbose», то есть «говорливый» код, многословный. Он хуже читается и может быть сложноват для новичков, хотя многие разработчики чувствуют себя комфортнее со строгим синтаксисом.
Скорость
Здесь уже Java явный победитель. По сравнению с С и С++ она, может, и не самая быстрая, но Python явно отстаёт от Java по скорости и производительности. В обоих языках приложения переводятся в байт-код (это позволяет им быть кроссплатформенными), но разница кроется в том, когда это происходит: Java компилирует заранее, с помощью JIT-компиляции (динамической компиляции), а Python — во время выполнения программы. В итоге Java значительно быстрее.
Java против С#
Как и в случае с Python, C# сравнивают с Java не просто так: это тоже объектно-ориентированный язык со статической типизацией, и даже синтаксис у Java и C# похож.
Теперь посмотрим на их различия.
Безопасность
Один из параметров языков программирования — типобезопасность (безопасность системы типов). Если язык безопасный, то после проверки согласования типов в них уже не появится ошибка во время выполнения.
Несмотря на то что до твёрдого звания типобезопасного языка ни С#, ни Java не дотягивают, Java достаточно надёжная и разрабатывалась так, чтобы не допускать ошибок в этой области. В C# есть указатели, и такой доступ к памяти делает его менее безопасным.
Указатели и управление памятью
Вообще, если вам важно работать с указателями (например, вы хотите работать с памятью на более низком уровне), то лучше выбирать из совсем других языков (С, С++). Но если сравнивать эти два, C# побеждает: в отличие от Java, здесь указатели всё-таки есть, хоть и сильно ограниченные.
Поддержка платформ
C# разработан компанией Microsoft для их собственной экосистемы, поэтому на нём разрабатывается ПО специально для Windows. Java в этом смысле более универсальная — на ней можно писать приложения для почти любых платформ.
Применение
Если вы хотите писать веб-приложения, мессенджеры или приложения на Android или ещё не определились и поэтому хотите что-то универсальное — ваш выбор ясен: Java замечательно подойдёт.
Если же вы хотите разрабатывать приложения для Windows, то что может быть лучше, чем язык, специально для этого созданный? Кстати, C# очень хорош для разработки игр и проектов с виртуальной реальностью.
А что с работой?
Прежде чем учить какой-то язык программирования, вы наверняка хотите знать: «А что же потом?»
Поэтому мы собрали для вас небольшую статистику по вакансиям.
На Яндекс.Работе в Москве от 900 до 1000 вакансий для Java-разработчиков, а на HeadHunter — около 2000 (все данные приведены за декабрь 2019 года).
Вакансии, в которых указана зарплата, начинаются от 70 тысяч рублей. Большинство предложений попадает в диапазон от 100 до 200 тысяч, а продвинутым разработчикам предлагают до 300 тысяч рублей.
Как вы видите, Java-разработчики востребованы, и даже по московским меркам у них хорошая зарплата (по данным Банка заработных плат HeadHunter, средняя зарплата по Москве в третьем квартале 2019 года составила 85 707 рублей).
Ещё одна возможность — работа из дома. Её выгода в том, что вам не обязательно искать предложения в одном городе. Например, HeadHunter показывает 318 предложений удалённой работы в России, с зарплатами от 90 до 150 тысяч рублей. При желании и знании языка вы можете искать варианты даже в других страна
Легко ли новичку учить Java?
Java легче некоторых других языков, например таких как С и С++. Большую роль в этом играет то, что в Java вам не придётся разбираться с управлением памятью. С другой стороны, как мы уже говорили, синтаксис в том же Python проще, а типизация свободнее.
Если вы совсем новичок, то учить Java может быть сложновато и стоит подумать о языках с более простым синтаксисом. Но если у вас уже есть минимальный опыт программирования, то Java — хороший выбор. Вы научитесь программированию, не распыляясь на работу с памятью, а ещё освоите объектно-ориентированное программирование. ООП не стоит бояться: оно скорее упрощает работу, чем наоборот.
Значит ли это, что не стоит пробовать, если у вас нет опыта? Вовсе нет. Если вы действительно хотите работать именно с Java, то всё-таки сможете разобраться в ней с нуля: это зависит от вашей мотивации и того, сколько времени готовы на это потратить.
Резюмируем
Итак, Java — популярный мультифункциональный язык.
Она достаточно надёжная, быстрая, пригодится почти везде, и у неё несложный синтаксис по сравнению со многими другими языками. Да, есть языки ещё проще, но если у вас нет цели выбрать самый лёгкий, то Java — удачный средний вариант.
Java — замечательный выбор для веб-разработки, разработки приложений на Android, а также если вы хотите попробовать себя в объектно-ориентированном программировании.
Если вы всерьёз заинтересовались Java, то освоить этот язык вам поможет наш курс «Профессия Java-разработчик». Там вы не только освоите теорию, но и напишете свои первые программы на Java — в команде других разработчиков и под руководством наставника.
Зачем нужен язык программирования java
Java совсем не молодой язык, но при этом он остается лидером среди языков программирования. Что делает его настолько популярным? Мы расскажем в этой статье.
Совсем скоро у Java юбилей – 25 лет со дня создания. Хоть этому языку уже много лет, он по сей день является одним из фаворитов по востребованности и популярности в мире программистов. Что делает его настолько значимым в среде разработчиков? Нам удалось выделить как минимум 7 основных причин мегапопулярности Java, по которым он держится на вершине рейтинга и будет лидировать ещё долго.
1. Java, как первый язык программирования
Азы в изучении Java часто дают ещё в средне специальных учебных заведениях. Он является основой обучения программированию в школах Америки. По этой причине, часто становится первым языком в списке программиста. Все дальнейшие языки, изучаемые в колледжах, всегда сравнивают с Java. Даже в случае перехода на другой язык, все равно базовое представление основывается на Java.
Этот язык имеет массу достоинств, делающих его лидером при изучении информатики. Да, не всем нравится вручную указывать типы данных, считая это чем-то вроде «подушки безопасности». Однако, это хорошая возможность для начинающих понять базовые принципы, на которых устроен ПК. Новичкам невольно приходится задумываться об устройстве операционной системы.
Многих это раздражает, форматирование скобок занимает лишнее время. Есть много модных языков, в которых не нужно указывать фигурные скобки. В некоторых это действительно неудобно, но начинающим они полезны. С их помощью, проще понять принципы вложений.
Промежуточный итог: да, язык немного перегружен, если сравнивать с Python, но для начального изучения он подходит идеально.
2. Кроссплатформенность
Хоть и не стоял у истоков создания кроссплатформенных программ, но смог завоевать лидирующую позицию. Java не имеет абсолютной совместимости со всеми платформами. Без подходящих библиотек код все равно не заработает. Просто скомпилировав код десктопного приложения и загрузив его на телефон, ничего работать не будет.
Однако, разработчик может создать полноценное приложение у себя на ПК, а в конце установить его на подходящей платформе. При наличии доступа к нужным библиотекам, код заработает.
3. Java и Андроид
Вы знали, что Android полностью написан на Java? Сегодня Андроид-гаджеты остаются лидерами по продажам в мире и их вряд ли подвинет какая-то другая платформа в ближайшие 5 лет.
На Android сегодня работает масса гаджетов: смартчасы, смартфоны, планшеты, Smart TV, смартбуки, различная бытовая техника и многие другие умные предметы электроники. Уже 4 года, как на Android работают роботы.
Всё перечисленное вместе только подтверждает доминирующее положение Java.
4. Groovy
Надоел классический синтаксис с его недостатками? Появились идеи уйти к новомодным языкам? Такой необходимости нет, ведь можно воспользоваться Groovy. Язык обладает полной интеграцией с Java, позволяет вызывать все библиотеки, написанные под Java прямо из Groovy-кода.
Благодаря гибкости решения, программист получает больше возможностей в разработке. Если Groovy окажется медленным для конкретного проекта, отдельные приложения можно написать на Java.
5. Открытый исходный код
Владельцем и разработчиком Java является Oracle, которая давно занимает лидерство в среде Open Source. Компания всё ещё не отпустила Java в свободное плавание, но это не наложило негативный оттенок на язык. Программисты создали множество библиотек и шаблонов, имеющих свободные лицензии.
Большинство библиотек обладают открытым исходным кодом. Это лишь увеличивает лояльное отношение к Java.
6. Java и NoSQL
Во время революции NoSQL к программистам пришло понимание, что они могут сами создавать базы данных и подстраивать их под собственные нужды. Подавляющее большинство NoSQL-решений разработаны непосредственно на Java.
В основном такие базы имеют opensource-код, поэтому их легко встраивать в уже существующие проекты. Есть те, кто запускает их в роли независимых сервисов, а другие — используют в качестве библиотек. Независимо от способа применения, использование Java – это гарантия разработчиков, что они смогут разобраться в коде и редактировать его.
7. Java Virtual Machine
JVM основана и подстроена под типизированный код, опираясь на статический контекст. Через небольшое время JVM начали применять для запуска кода из других языков, единственное условие – корректная работа компилятора. Разработчики недолго думая создали компиляторы для Haskell, Scala, Clojure.
В целом многим очень нравится, что Oracle обеспечивает кроссплатформенность языка, а прочее делают разработчики сами (или пользуются чужим кодом).
Урок 1. Зачем учить Java? Краткая история языка Java.
Что такое Java?
Java — это широко распространенный язык программирования, использующий парадигму объектно-ориентированного программирования(ООП), на котором очень удобно писать компьютерные программы.
Согласно известному рейтингу языков программирования TIOBE на момент написания статьи(март 2020 года) язык Java занимает в нем первое место. Это не говорит о том, что язык является лучшим среди всех на рынке. Такого понятия как лучший язык программирования вообще не существует. Но он определенно является одним из самых востребованных.
Что это мне дает?
Всегда можно найти единомышленников, чтобы вместе начать что-то разрабатывать или уже реализованную за вас библиотеку программного кода, которую в противном случае пришлось бы писать самостоятельно. И что самое главное на начальном этапе карьеры программиста — если язык достаточно распространен — вам будет проще найти свою первую работу.
Перед тем, как начать этот цикл уроков, я бы хотел немного поговорить о причинах такой популярности языка Java и рассказать немного о том, как Java удалось занять то место в истории компьютерной индустрии, которое она в настоящий момент занимает. Надеюсь это будет интересно и вдохновит вас на дальнейшее изучение Java.
Oak и Java.
Язык Java был создан в 1995 году под руководством Джеймса Гослинга и Патрика Нотона в компании Sun Microsystems. Изначально Java задумывался как язык программирования для бытовых устройств — кофеварок, микроволновок, телевизоров и так далее.
Но началось все еще раньше, в далеком 1991 году. Тогда язык еще носил другое название — Oak (дуб). Такое название язык получил из-за дуба, который рос под окном офиса Джеймса Гослинга.
Название впоследствии было изменено, потому что данная торговая марка уже была зарегистрирована другой компанией — Oak Technologies.
Очевидно, что для создания подходящего языка для огромного количества абсолютно различных бытовых устройств от множества вендоров, нужно было какое-то особенное решение. Язык должен быть платформенно-независимым, чтобы сгенерированные программы были небольшими и успешно работали на различных устройствах без переписывания их заново под каждую отдельно взятую архитектуру процессоров.
Поэтому было решено, что программы будут компилироваться в промежуточный байт-код(каждая инструкция кодируется 1 байтом) для некоторой гипотетической виртуальной машины. Таким образом, программы, написанные на этом языке, будут работать на всех операционных системах, для которых существует реализация этой виртуальной машины.
Проект получил название Green.
Гослингу и компании долгое время не удавалось продать программы и устройства, созданные с помощью их технологии — в основном это были проекты для телекоммуникационных компаний — вроде умных пультов дистанционного управления.
Так специально для демонстрации возможностей их платформенно-независимого языка в 1992 году был создан PDA Star7.
Но никто их не оценил.
И в тоже время стремительно расширялись возможности Интернета и именно он должен был стать следующей вехой на пути развития всей индустрии. Команда переключилась на World-Wide-Web и написала на своем языке собственный браузер — WebRunner, который был представлен публике на конференции Sun World 23 мая 1995 года, день, который сейчас считается днем рождения Java. Браузер в то время очень многих впечатлил — а сама технология показал себя как идущая в ногу со временем — с развитием Web.
Java уделяла большое внимание переносимости, надежности и безопасности — тем аспектам, которые были важны именно в рамках сети Интернет. Программы запускаются и работают внутри виртуальной машины, в своей песочнице, не имея доступ к любому региону памяти с помощью указателей как в С/С++.
Да, и еще один фактор, позволивший Java стать столь популярной именно в то время — это синтаксис языка. Дело в том, что разработчики из Sun большую часть своего времени имели опыт с Unix-системами и языком C, а потом и сам Java получил С-подобный синтаксис.
Также Java стал по умолчанию объектно-ориентированным. Довольно быстро растущее количество встроенных библиотек, в том числе и сетевых, и готовая поддержка многопоточности только увеличивали рост популярности языка.
Как говорит Брюс Эккель в своей книге Thinking in Java — основное назначение языка — это снижение сложности разработки, именно в этом состоит его философия. Да, сейчас язык очень многословен и возможно даже менее динамичен в своем развитии, чем другие популярные языки. Но если взять те изменения, которые появились в Java 8-12, то можно увидеть заметный прогресс в развитии. И кто бы как не хотел и не желал смерти языка Java — произойдет это еще очень нескоро.
Однако каждой задаче свой инструмент и у языка Java есть отличные альтернативы — в лице PHP, C#, JavaScript — даже других языков на JVM — Groovy, Scala, Kotlin в конце концов. Поэтому вам выбирать, с чем работать.
Прежде чем подойти к языку с практической точки зрения давайте немного разберемся с тем, что из себя этот язык представляет, с его парадигмами и особенностями.
Парадигма языка Java.
Java — это язык, использующий парадигму объектно-ориентированного программирования(ООП). Парадигма — это набор идей и способов написания программы, который ложится в основу языка. Сейчас все говорят об ООП, а когда-то бурно обсуждали процедурное или структурное программирование. Если копнуть еще глубже и вспомнить язык ассемблера, то понимаешь, что развитие не стоит на месте. И нельзя сказать, что новые тенденции и языки программирования во всем превосходят своих предшественников. Просто у каждого языка есть своя область применения. Но с развитием информационных технологий потребность во все более сложных программных системах только возрастает и если продолжать пользоваться для их создания старыми методами, то в лучшем случае мы получим огромное количество трудно поддерживаемого, нечитаемого кода и увеличим количество ошибок в нем.
Абстракция — основной принцип ООП.
Абстракция — это мощный инструмент человеческого мозга. И, безусловно, мыслить в рамках объектов реального мира, что нас с вами окружают, гораздо проще, чем путаться в последовательности нулей или единиц или разбираться в особенностях архитектуры компьютера. Людям зачастую важно абстрагироваться от внутренней сложности некоторого объекта, например, самолета или автомобиля, а работать лишь с теми его частями напрямую, которые ему необходимы. Этот процесс называется моделированием предметной области.
ООП — это прежде всего абстракция. Парадигма современного программирования, использующая аналогию с реальным миром. Все вокруг нас — это объекты реального мира. Так и в программе, написанной на языке ООП все компоненты представляют собой конкретные объекты, которые, объединяясь друг с другом, формируют систему в целом. Например, автомобиль — это объект, состоящий из других отдельных, самостоятельных объектов — двигателя, коробки передач и системы торможения. Объекты взаимодействуют друг с другом для достижения общей цели.
Все объекты, как и в реальном мире, можно объединить в классы объектов. Например, в банковской системе может быть множество объектов, представляющих банковские карты клиентов. Но у всех карточек есть общая структура — набор полей, описывающих Имя владельца карты, Срок действия и Баланс. Поэтому для всех объектов в системе удобно создать некий шаблон для всего такого множества объектов — какие поля есть и каких они типов — числовые, символьные, логические или какие-то другие, более сложные.
Java подобная информация была бы полезна при выполнении программы — система будет знать, сколько выделить памяти перед созданием такого объекта.
Классы могут образовывать целые иерархии. Например, геометрическая фигура — это класс объектов, который может включать в себя другие классы, например, окружность или прямоугольник. Каждый конкретный прямоугольник с заданной высотой и шириной, окружность с заданным радиусом — все это объекты классов.
В языке Java для создания своего класса используется ключевое слово class. По сути это равнозначно созданию нового типа в программе, поэтому понятия «тип» и «класс» часто используются как равнозначные. Впрочем, кто-то может с этим поспорить. Определить новый класс можно следующим образом: