Огляд технології Java

Перш за все, Java - це дуже, дуже велика мова програмування. Так, дійсно, вона має репутацію простої мови з якою легко почати програмувати, вона позбавлена багатьох “дитячих хвороб” С++, однак повторюсь, Java - це велика й складна мова програмування того ж порядку, що й С# або Fortran, і вивчити її протягом одного семестру - просто неможливо.

Проте, її синтаксис дуже нагадує C, тож якщо ви вже знайомі з якоюсь С-подібною мовою, перейти до Java вам буде нескладно. До того ж вивчати Java - це весело та цікаво, плюс, ваші програми можна буде запустити будь-де - навіть на вашому Android-смартфоні!

Як з’явилась Java

Технологію і мову Java було створено в результаті дослідницького проекту зі створення програмної платформи для “розумних” та вбудованих пристроїв. Головними “обличчями” цього проекту були Джеймс Гослінг та Білл Джой.

Цей невеликий проект, який з 1991 року здійснювався в Sun Microsystems за закритими дверима, започаткували Патрік Ногхтон, Майк Шерідан та Джеймс Гослінг, Білл Джой та інші приєднались пізніше. Метою проекту була розробка мови програмування для розумних побутових приладів, розважальних центрів тощо.

Кумедним є той факт, що коли справа дійшла до вибору назви для нової мови програмування, Джеймс Гослінг визирнув у вікно, і перше, що він там побачив, був кремезний дуб, тож не довго думаючи, він запропонував назвати спільне дітище Oak (дуб).

Перша спроба виходу на ринок для нової мови не була вдалою, оскільки виявилось, що “розумних” побутових приладів, ТВ-приставок або ігрових консолей з розширеною функціональністю на початку 90-х було, м’яко кажучи, не так вже й багато. Врятував нову мову …Інтернет, який в 1994 році вже став досить популярним за затребуваним. HTML в ті часи не міг похвалитись інтерактивністю або можливостями з побудови складних інтерфейсів користувача, подібних до традиційних “настільних” програм. Великим плюсом стала також незалежність від платформи - одна уніфікована мова та середовище виконання програм, яке дозволяло не зважати на те, на якому комп’ютері та з якою операційною системою працює користувач, який відкрив ту чи іншу веб-сторінку. Тож команда вчасно і вдало переорієнтувалась на ринок веб-застосунків, а зроблена ними демонстрація можливостей платформи зі створення веб-аплетів не тільки вразила спільноту розробників, а й додатково мотивувала авторів проекту, які впевнились, що вони винайшли щось нове, чудове і корисне.

Технологію Java було анонсовано у травні 1995, а перша фінальна “не бета” версія побачила світ вже у 1996 році, тож мову Java було розроблено набагато швидше за будь-яку іншу мову програмування! До того ж Java - абсолютно безкоштовна - ви можете вільно завантажити абсолютно все - середовище виконання, інструментарій розробника, документацію, навіть вихідні коди!

Що ж таке Java?

Що ж таке Java?

На це питання немає однозначної відповіді, оскільки Java одночасно є:

  • мовою програмування
  • середовищем розробки додатків
  • середовищем розгортання додатків
  • середовищем виконання додатків

Як мова програмування, Java, як вже було сказано раніше, близька до C++ за синтаксисом, і до SmallTalk за семантикою. Ви можете використовувати Java для створення додатків будь-яких типів і будь-якого призначення.

Як середовище розробки, технологія Java пропонує розробникам повний набір інструментів для роботи - компілятор (Java - так само як C# є мовою подвійної компіляції, однак, про це ми ще поговоримо пізніше), інтерпретатор, генератор документації, утиліту для створення Jar-архівів і багато іншого. Про JDK (Java Development Kit) ми теж ще поговоримо в наступних модулях цього курсу, однак слід відмітити, що для створення більш-менш серйозних додатків IDE все ж знадобиться!

Середовищем розгортання і виконання додатків є JRE (Java Runtime Environment) - пакет, що містить повний набір стандартних класів з усіх пакетів Java SDK - базові класи мови, класи для побудови графічного інтерфейсу користувача, класи для роботи з колекціями і т. ін.

Java та інші мови програмування

Ми вже неодноразово зазначали, що Java є С-подібною мовою. Найближчими “родичами” мови Java є наступні мови:

  • C#/.NET - С-подібна мова подвійної компіляції від компанії Microsoft, яка за синтаксисом та ідеологією дуже близька до Java (іноді вам навіть вдасться зкомпілювати певні уривки Java-коду без щонайменших змін). Так, між платформами Java і .NET є й фундаментальні відмінності, однак С# є мабудь, найближчим родичем Java! Коли Java набула чималої популярності, вона була ліцензована також і компанією Microsoft. Але з плином часу Sun почала звинувачувати Microsoft, що та при створенні свого клону Java робить її сумісною виключно з платформою Windows, чим суперечить самій концепції машинно-незалежного середовища виконання і порушує ліцензійну угоду. Microsoft відмовилася піти назустріч вимогам Sun, і тому з’ясування стосунків набуло статусу судового процесу. Суд визнав позицію Sun справедливою, і зобов’язав Microsoft відмовитися від позаліцензійного використання Java. У цій ситуації в Microsoft вирішили, користуючись своєю вагою на ринку, створити свій власний аналог Java — мову, в якій корпорація стане повновладним господарем. Ця новостворена мова отримала назву C#. Вона успадкувала від Java концепції віртуальної машини (середовище .NET CLR), байт-коду (MSIL) і більшої безпеки вихідного коду програм, плюс врахувала досвід використання програм на Java. Нововведенням C# стала можливість легшої взаємодії, порівняно з мовами-попередниками, з кодом, написаних іншими мовами, що є важливим при створенні великих проектів.
  • Groovy - об’єктно-орієнтована динамічна мова програмування, що працює в середовищі JRE. Мова Groovy запозичила деякі корисні якості Ruby, Haskell і Python, але створена для роботи всередині віртуальної машини Java (JVM) і підтримує тісну інтеграцію з Java програмами. Оскільки Groovy працює в середовищі JRE, то саме Java є її основним конкурентом. Мова дуже схожа на Java і використовує її інфраструктуру, відповідно потребує мінімум зусиль для вивчення. Groovy є більш високорівневою мовою програмування порівняно з Java, а отже розробка цією мовою зазвичай відбувається швидше. Також є режим статичної компіляції для забезпечення підвищеної продуктивності для критичних до швидкості виконання ділянок коду.
  • Scala - мультипарадигмова мова програмування, що поєднує властивості об’єктно-орієнтованого та функційного програмування. Назва Scala утворена зі слів «scalable» (масштабовна) та «language» (мова), для того щоб задекларувати, що мова може рости разом з вимогами користувачів. Програми мовою Scala виконуються у віртуальній машині Java за умови приєднання до дистрибутиву файлу scala-library.jar. Scala сумісна з існуючими програмами мовою Java, тобто код Scala може викликатися з Java-програм і навпаки. Також компілюється в JavaScript.
  • Kotlin - статично типізована мова програмування, що теж працює поверх JVM і розробляється компанією JetBrains. Також компілюється в JavaScript. Мову названо на честь острова Котлін у Фінській затоці, на якому розміщена частина Кронштадту. Автори ставили перед собою мету створити лаконічнішу та типо-безпечнішу мову, ніж Java, і простішу, ніж Scala. Наслідками спрощення, порівняно з Scala стали також швидша компіляція та краща підтримка IDE.З 7 травня 2019 року є рекомендованою мовою для розробки Android-додатків.

Особливості Java

Основними характерними відмінностями Java є наступні її особливості:

  • С++ подібний синтаксис. Як говорив один з творців мови, Джеймс Гослінг, Java - це мова С++, з якої забрали всі пістолети, ножі та палиці. Іншими словами - це мова С++ глибокої дистиляції.
  • Java - це універсальна мова для створення додатків будь-якого типу та призначення.

Програми Java розповсюджуються у вигляді .class-файлів або jar-пакетів. .class-файли містять проміжний код (або байт-код), який виконується віртуальною машиною Java (JVM), тобто набір даних та інструкції для віртуальної машини.

Відмінності Java від С++

Основні відмінності Java від “батьківської мови” зумовлені прагненням розробників “дистилювати” С++, вилучивши з неї всі потенційно небезпечні конструкції, зокрема:

  • відсутність перевантаження операторів
  • відсутність множинного наслідування
  • автоматичне узгодження типів
  • відсутність адресної арифметики (покажчиків)
  • відсутність деструкторів

Також Java є повністю об’єктно-орієнтованою мовою з максимально простим та зрозумілим кодом, що дозволяє створювати складні програми, та адекватно описувати об’єкти оточуючого світу. Основною перевагою мови є портабельність, тобто можливість виконання програм будь-де, незалежно від апаратної платформи та ОС - потрібна лише віртуальна машина Java. Девіз мови - “написав один раз - виконав де завгодно”!

Основні цілі створення мови:

  • універсальна портабельна мова для використання на будь-яких пристроях, тобто мова для вбудованої, побутової техніки, автомобілів, годинників, телефонів, тошо.
  • усунення недоліків існуючих мов програмування, тобто вилучення потенційно небезпечних та неоднозначних конструкцій
  • об’єктно-орієнтоване програмування в своєму кращому, канонічному вигляді
  • простий та зрозумілий код, який виглядає звично
  • незалежність від ОС та апаратної платформи, що забезпечує істинну портабельність (потрібна лише віртуальна машина!)
  • багатопоточність для створення сучасних застосунків з паралельним виконанням завдань
  • безпечне виконання коду з перевіркою завантажених модулів
  • орієнтація на веб та створення мобільних застосунків

Наступна лекція: