Основи Java. З чого складається курс «JAVA з нуля

💖 Подобається?Поділися з друзями посиланням

Java - так називають не тільки саму мову, а й платформу для створення додатків рівня підприємств на основі даної мови.

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

Основні особливості мови

Останнім релізом є версія 1.6, в якій було здійснено покращення системи безпеки, покращення підтримки скриптової мови Mozilla Rhino (англ.), покращено інтеграцію з робочим столом, додано деякі нові можливості у створенні графічних інтерфейсів.

Java та Microsoft

Наступні компанії в основному фокусуються на Java (J2EE) технологіях, а не на .NET, хоча мають справу також і з останніми: IBM, Oracle. Зокрема, СУБД Oracle включає JVM як свою складову частину, що забезпечує можливість безпосереднього програмування СУБД мовою Java, включаючи, наприклад, процедури, що зберігаються .

Основні можливості

Приклад програми

Програма, що виводить Hello, World!

Public class HelloWorld ( Public static void main ( String args ) ( System .out .println ( " Hello , World ! " ) ; ) )

Приклад використання шаблонів:

Import java.util.*; public class Sample ( public static void main(String args) ( // Створення об'єкта за шаблоном. List strings = new LinkedList (); strings.add ("Hello"); strings.add ("world"); strings.add ("!"); for (String s: strings) ( System .out .print (s) ; System .out .print (" " ) ; ) ) )

Основні ідеї

Примітивні типи

У мові Java тільки 8 скалярних типів: boolean, byte, char, short, int, long, float, double.

Класи-обертки примітивних типів

Довжини та діапазони значень примітивних типів визначаються стандартом, а не реалізацією та наведені в таблиці. Тип char зробили двобайтовим для зручності локалізації (один із ідеологічних принципів Java): коли складався стандарт, вже існував Unicode-16, але не Unicode-32. Оскільки в результаті не лишилося однобайтового типу, додали новий тип byte. Типи float і double можуть мати спеціальні значення і «не число» (

Тип Довжина (в байтах) Діапазон або набір значень
boolean НЕ визначено true, false
byte 1 −128..127
char 2 0..2 16 -1, або 0..65535
short 2 −2 15 ..2 15 -1, або −32768..32767
int 4 −2 31 ..2 31 -1, або −2147483648..2147483647
long 8 −2 63 ..2 63 -1, або приблизно −9.2·10 18 ..9.2·10 18
float 4 -(2-2 -23)·2 127 ..(2-2 -23)·2 127 , або приблизно −3.4·10 38 ..3.4·10 38 , а також , , NaN
double 8 -(2-2 -52)·2 1023 ..(2-2 -52)·2 1023 , або приблизно −1.8·10 308 ..1.8·10 308 , а також , , NaN

Така жорстка стандартизація була необхідна, щоб зробити мову платформно-незалежною, що є однією з ідеологічних вимог до Java та однією з причин її успіху. Проте одна невелика проблема з платформною незалежністю все ж таки залишилася. Деякі процесори використовують для проміжного зберігання результатів 10-байтові регістри або іншими способами покращують точність обчислень. Для того, щоб зробити Java максимально сумісною між різними системами, ранніх версіяхбудь-які способи підвищення точності обчислень були заборонені. Однак це призводило до зниження швидкодії. З'ясувалося, що погіршення точності заради платформної незалежності мало кому потрібне, тим більше якщо за це доводиться платити уповільненням роботи програм. Після численних протестів цю заборону скасували, але додали ключове слово strictfp, що забороняє підвищення точності.

Перетворення при математичних операціях

У мові Java діють такі правила:

  1. Якщо один операнд має тип double, інший теж перетворюється на тип double.
  2. Інакше, якщо один операнд має тип float, інший теж перетворюється на тип float.
  3. Інакше, якщо один операнд має тип long, інший теж перетворюється на тип long.
  4. Інакше обидва операнди перетворюється до типу int.

Останнє правило відрізняє Java від старих реалізацій та C++ і робить код безпечнішим. Так, наприклад, у мові Java після виконання коду

Short x = 50, y = 1000; int z = x * y;

змінної z надається значення 50000, а чи не −15536, як у більшості безнадійно застарілих реалізацій C і C++. У програмі, скомпільованій MS VC++, починаючи з версії 7, а також багатьма іншими сучасними компіляторами (gcc, Intel C++, Borland C++, Comeau і т. д.), значення також дорівнює 50000.

Об'єктні змінні, об'єкти, посилання та покажчики

У мові Java є лише об'єкти, що динамічно створюються. Причому змінні об'єктного типу та об'єкти в Java - зовсім різні сутності. Змінні об'єктного типу є посиланнями , тобто неявними покажчиками на об'єкти, що динамічно створюються. Це підкреслюється синтаксисом опису змінних. Так, у Java не можна писати:

Double a [10] [20]; Foo b (30);

Double a = new double [10] [20]; Foo b = New Foo (30);

При присвоюваннях, передачі у підпрограми та порівняннях об'єктні змінні поводяться як покажчики, тобто присвоюються, копіюються та порівнюються адреси об'єктів. А при доступі за допомогою об'єктної змінної до полів даних або методів об'єкта не потрібно ніяких спеціальних операцій розіменовування - цей доступ здійснюється так, якби об'єктна змінна була об'єктом.

Об'єктними є змінні будь-якого типу, крім звичайних числових типів. Явних покажчиків Java немає. На відміну від покажчиків C, C++ та інших мов програмування, посилання Java високою мірою безпечні завдяки жорстким обмеженням на їх використання, зокрема:

  • Не можна перетворювати об'єкт типу int або будь-якого іншого примітивного типу на покажчик чи посилання і навпаки.
  • Над посиланнями заборонено виконувати операції ++, −−, +, − чи будь-які інші арифметичні операції.
  • Перетворення типів між посиланнями жорстко регламентовано. За винятком посилань на масиви, дозволено перетворювати посилання тільки між спадковим типом та його спадкоємцем, причому перетворення наслідуваного типу на спадкоємець має бути явно задано і під час виконання проводиться перевірка його свідомості. Перетворення посилань на масиви дозволено лише тоді, коли дозволено перетворення їх базових типів, і навіть немає конфліктів размерности.
  • У Java немає операцій взяття адреси (&) або взяття об'єкта за адресою (*). Зірочка в Java означає множення, і тільки. Амперсанд (&) означає лише «побітове і» (подвійний амперсанд - «логічне і»).

Завдяки таким спеціально введеним обмеженням Java неможливо пряме маніпулювання пам'яттю на рівні фізичних адрес (хоча посилання, що не вказують ні на що, є: значення такого посилання позначається null).

Дублювання посилань та клонування

Через те, що об'єктні змінні є посилальними, при присвоєнні немає копіювання об'єкта. Так, якщо написати

Foo foo, bar; … bar = foo;

то відбудеться копіювання адреси зі змінної foo в змінну bar. Тобто foo і bar будуть вказувати на ту саму область пам'яті, тобто на один і той же об'єкт; спроба змінити поля об'єкта, який посилається змінна foo , буде змінювати об'єкт, з яким пов'язана змінна bar , і навпаки. Якщо ж потрібно отримати саме ще одну копіювихідного об'єкта, користуються або методом (функцією-членом, у термінології C++) clone() , що створює копію об'єкта, або копіюючим конструктором .

Метод clone() вимагає, щоб клас реалізовував інтерфейс Cloneable (про інтерфейси див. нижче). Якщо клас реалізує інтерфейс Cloneable , clone() за замовчуванням копіює всі поля ( дрібна копія). Якщо потрібно не копіювати, а клонувати поля (а також їх поля тощо), треба перевизначати метод clone() . Визначення та використання методу clone() часто є нетривіальним завданням.

Складання сміття

У мові Java неможливо явне видалення об'єкта з пам'яті - натомість реалізовано складання сміття. Традиційним прийомом, що дає збирачеві сміття «натяк» на звільнення пам'яті, є надання змінної порожнього значення null. Це, проте, значить, що об'єкт, замінений значенням null , буде неодмінно і негайно видалено. Даний прийомлише усуває посилання об'єкт, тобто відв'язує покажчик від об'єкта у пам'яті. При цьому слід враховувати, що об'єкт не буде видалений збирачем сміття, поки на нього вказує хоча б одне посилання зі змінних або об'єктів, що використовуються. Існують також методи для ініціації примусового складання сміття, але не гарантується, що вони будуть викликані виконуючим середовищем, і їх не рекомендується використовувати для нормальної роботи.

Класи та функції

Java не є процедурною мовою: будь-яка функція може існувати лише всередині класу. Це підкреслює термінологія мови Java, де немає понять «функція» чи «функція-член» (англ. member function), а тільки метод. На методи перетворилися й стандартні функції. Наприклад, Java немає функції sin() , а є метод Math.sin() класу Math (що містить, крім sin() , методи cos() , exp() , sqrt() , abs() і багато інших).

Статичні методи та поля

Для того, щоб не треба було створювати об'єкт класу Math (та інших аналогічних класів) щоразу, коли треба викликати sin() (та інші подібні функції), введено поняття статичних методів(англ. static method; іноді у російській мові вони називаються статичними). Статичний метод (який відзначається ключовим словом static в описі) можна викликати, не створюючи об'єкта його класу. Тому можна писати

Double x = Math. sin (1);

Math m = new Math (); double x = m.sin(1);

Обмеження, що накладається на статичні методи, полягає в тому, що в цьому об'єкті вони можуть звертатися тільки до статичних полів і методів.

Статичні поля мають той самий сенс, що й у C++: кожне існує лише у єдиному екземплярі.

Фінальність

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

Абстрактність

Java методи, не оголошені явно як final або private , є віртуальними в термінології C++: при виклику методу, по-різному визначеного в базовому і спадковому класах, завжди проводиться перевірка часу виконання.

Абстрактним методом (описувач abstract) в Java називається метод, для якого задані параметри і тип значення, що повертається, але не тіло. Абстрактний метод визначається класах-спадкоємцях. У C++ те саме називається суто віртуальною функцією. Для того, щоб у класі можна було описувати абстрактні методи, сам клас теж повинен бути описаний як абстрактний. Об'єкти абстрактного класу створювати не можна.

У цій статті я постараюся максимально просто та зрозуміло викласти основи програмування мовою Delphi

Java для чайників Урок 1. Програма Hello World!

Спочатку я розповім, що може Java. По-перше, цією мовою можна написати аплети - програми, що впроваджуються в web-сторінку сайту. Наприклад, це може бути гра, система бізнес графіки та багато іншого. По-друге, на Java можна писати і повноцінні програми, не обов'язково пов'язані з Web. А можна і сервлети – програми, які на відміну від аплетів, виконуються не на стороні клієнта, а на стороні сервера.

Почнемо з самих основ. Віддамо данину традиції та напишемо найпростішу програму, яка виводить на екран вітання Hello World. Якщо у вас немає Java, то її можна завантажити з офіційного сайту http://www.java.com/ru. Потім установіть його.

Якщо Java у вас встановлений, то наберіть в якомусь редакторі ось такий текст:

{

Public static void main ( String args ) {

System . out . print ( "Hellow, world!" );

}

}

І обов'язково збережіть його під ім'ям HellowWorld. java - Ім'я класу, що виконується, повинно збігатися з ім'ям файлу. Для компіляції використовуйте програму javac.exe , що входить до стандартного пакету Java. Ось як може виглядати батник компіляціїцього java файлу:

"c:\Program Files\Java\jdk1.7.0\bin\javac" HellowWorld.java

pause

Якщо при компіляції жодних помилок не вискочило:


швидше за все, компіляція пройшла успішно і у вас у тому ж каталозі, де лежав HellowWorld. java з'явився ще й HellowWorld.class:

Тепер запустимо інший батник, який викличе інтерпретатор Java разом із нашим скомпільованим файлом:

"c:\Program Files\Java\jdk1.7.0\bin\java" HellowWorld

pause

Якщо все зроблено правильно, то у вас повинен вийти такий результат:


Якщо ви його отримали, то можу привітати вас - ви написали свою першу програму на Java. Надалі ми навчимося писати Java-аплети, і багато іншого. А зараз кілька слів про саму програму. Як ви помітили, вона починається зі слова public. Це модифікатор, який означає, що ми оголошуємо, чи загальнодоступне: клас, метод класу або змінну. Бувають інші модифікатори, наприклад: private, protected, friendly, final, abstract, static.Деякі їх можна комбінувати між собою. Наприклад, private означає, що змінна, яку ми хочемо оголосити, закрита для інших класів. Але до модифікатора ми ще дістанемося. Нині ж розглянемо таке ключове слово class. Воно означає, що оголошуємо клас. У java все будуватиметься на класах. Один із класів обов'язково є базовим. І базовий клас обов'язково має бути public. У цьому прикладі це класу HelloWord. Поки що він у нас єдиний.

Тепер спробую пояснити простими словами, що ж таке класі що таке об'єкт.

Згадаймо шкільний курс зоології. Як класифікується живий світ? Спочатку запроваджується поняття «царство».

1. Царство одноклітинних,

2. Царство рослини

3. Царство тварин.

Візьмемо тварин. Їх можна поділити за типами. Наприклад:

1. Тип кишковопорожнинні.

2. Тип плоских хробаків.

3. Тип молюски.

4. Тип хордовий.

Останні поділяються на ссавців, плазунів, земноводних, птахів тощо. буд. Можна ще далі заглибитися в класифікацію, але зараз ми цього робити не будемо, а перейдемо безпосередньо до програмування.

У мові Java можна, подібно до класифікації живого світу, класифікувати об'єкти (шматки програми та даних). Для цього у ньому є класи.

Стоп стоп! - Скажете Ви, - а навіщо класифікувати ці об'єкти?

Уявити собі, що Ви, подібно до деміурга (творця, бога), створюєте життя на Землі. Спочатку Ви розробили найпростіші органічні сполуки. Так, заради експерименту, що ж вийде. Потім об'єднали їх у складні молекули, з яких, як із цеглинок, зібрали найпростіші мікроорганізми. Але ваша кінцева мета – створення розумного життя. Тому ви не зупинилися на досягнутому, А створили багатоклітинні організми. Потім стали покращувати їх, розвивати. Деякі види виявилися життєздатними, деякі вимерли (динозаври). І ось нарешті мети досягнуто – з'явився Homo Sapiens – людина розумна.

А тепер опустимося з небес на землю і представимо програмування як творіння, де ви свою програму змушуєте еволюціонувати до якогось певного стану, коли її можна використовувати, а потім і далі, поступово нарощуючи та покращуючи функціонал.

А тепер уявімо, що атом – це найпростіша командапрограми або одиниця інформації (що один від одного, погодьтеся, не відокремлені, бо програма працює з чим - правильно, з інформацією).

Тоді молекула – це підпрограма. Або об'єкт.

Ось ми створили у своїй програмі купу об'єктів. Треба ж їх якось класифікувати, щоб не заплутатися. Ось для цього Java і передбачені класи (class ). З їхньою допомогою ми описуємо клас об'єктів (загальне поняття, наприклад птиці), та був, маючи описаний клас можемо створити об'єкт – екземпляр цього. Тобто, клас – це саме слово Птахи, а об'єкт – це якийсь конкретний птах, якщо продовжувати нашу аналогію.

Далі, птахи бувають різних видів. Але всі вони мають якісь загальні ознаки, успадковані від поняття «Птахи». Так і в Java від класу можна створити інший клас, який успадковує його властивості і методи (ознаки). Це називається успадкування.

У різних птахів різне забарвлення пір'я, форма дзьоба та крил. Так і в класів при створенні нового класу успадковані ознаки можна змінювати. Це називається поліморфізм.

Так, із основними поняттями Java розібралися. Тепер пройдемося за програмою.

Ось таким чином ми оголошуємо клас:

public class HellowWorld {

В даному випадку в нашій програмі клас єдиний, і це базовий клас, тобто клас, відповідальний за запуск програми. Саме тому його ім'я має збігатися з ім'ям файлу, щоб інтерпретатор "знав", з чого почати виконання програми.

Базовий клас (HelloWorld) має базовий метод: main. Він у нас оголошений як public та static. Перший означає, що це метод загальнодоступний. Якби це було не так, то програма у нас просто не запустилася б. Бувають ще й методи не загальнодоступні, але вони поговоримо в наступних уроках, поки просто запам'ятайте, що базовий метод (який у нас запускається при старті програми) має бути public. І його ім'я має бути головним, щоб інтерпретатор знав, з чого почати виконання програми.

Тепер, що таке static. Це модифікатор, який показує, що статичний метод. Тобто він працює навіть тоді, коли екземпляр класу (об'єкт) не створений. Взагалі поля та методи з модифікатором static є спільними для всіх об'єктів класу. Про це також поговоримо надалі.

Кожен метод може мати або не мати значення, що повертається. Якщо має, це функція. Тип значення, що повертається так само ставиться в оголошенні методу. Якщо ні, то ставитися void (як у нашому прикладі).

Звернення до полів та методів об'єкта йде через точку. Є також вбудовані об'єкти, наприклад, System, який ми і використовуємо в нашому прикладі:

System . out . print ( "Hellow, world!" );

в даному випадку ми звертаємося до поля out, яке теж є об'єктом, призначеним для виведення даних і викликаємо його метод print, який виводитиме текст на екран (як у старому доброму Бейсіку команда PRINT).

(С) Шуравін Олександр

Java (тобто Ява) - це острів в Індонезії, сорт кави та мова програмування. Три зовсім різних значенняі всі вони по-своєму важливі. Втім, більшість програмістів інтерес представляє саме мову програмування Java. Останні кілька років (починаючи з кінця 1995 р.) Java зміг завоювати співтовариство розробників. Її феноменальний успіх зробив Java мовою програмування, що найбільш швидко розвивається, за всю історію. Навколо мови та її можливостей створився досить великий галас. І багато програмістів, а також кінцеві користувачі, не до кінця розуміють, що ж є і які можливості надає мову Java.

Java - це революційна мова програмування

Якості, які роблять Java настільки привабливим, є й іншими мовами програмування. Багато мов ідеально підходять для певних типів програм. Навіть більше, ніж Java. Але Java зібрала всі ці якості разом, в одній мові. Для індустрії розробки програмного забезпечення – це революційний стрибок уперед.

Погляньмо на деякі з властивостей цієї мови:

  • об'єктно-орієнтованість
  • переносимість
  • підтримка багатопоточності
  • автоматичне «складання сміття»
  • надійність
  • підтримка роботи з мережею та «Інтернетом»
  • простота та легкість у використанні

Об'єктно-орієнтованість

Багато мов, що виникли до Java, такі як C і Pascal, були процедурнимимовами. Процедури (або функції) – це блоки коду, які були частиною модуля або програми. У процедури передавалися параметри (примітивні типи даних: цілі числа, символи, рядки та числа з плаваючою комою). Код оброблявся окремо від даних. Вам доводилося передавати структури даних, а процедури могли легко змінювати їх вміст. Через це виникало багато проблем, оскільки використання одних частин програми в інших частинах могло давати непередбачувані результати. На пошуки несправної процедури йшло величезна кількість часу та зусиль. Особливо коли справа стосувалася великих програм.

Деякі з процедурних мов дозволяли навіть отримати адресу даних у пам'яті. Знаючи цю адресу, можна було зчитувати або дописувати дані через деякий час або випадково записати нову інформацію поверх старої.

Java - це об'єктно-орієнтованиймова. Об'єктно-орієнтована мова працює з об'єктами. Об'єкти містять дані (поля) та код (методи). Кожен об'єкт належить певному класу, що є «кресленням», що описує поля та методи, які пропонує об'єкт. У Java практично будь-яка змінна є об'єктом того чи іншого виду навіть рядки. Об'єктно-орієнтоване програмування вимагає іншого типу мислення, але такий спосіб розробки програмного забезпечення краще, ніж процедурне програмування.

На сьогоднішній день існує безліч популярних об'єктно-орієнтованих мов. Деякі з них були спочатку розроблені як об'єктно-орієнтовані, наприклад, Java та Smalltalk. Інші, такі як C++, є частково об'єктно-орієнтованими та частково процедурними. У С++ ви, як і раніше, можете перезаписати вміст структур даних та об'єктів, що призведе до збою програми. На щастя, Java забороняє прямий доступ до вмісту пам'яті, створюючи тим самим більш надійну систему.

Переносність

Більшість мов програмування спроектовано під конкретну операційну систему та процесор. При компіляції вихідний код(Інструкції, з яких будується програма) перетворюється на машинний кодякий може бути виконаний тільки на пристроях певного типу. Цей процес породжує "внутрішній код", що працює неймовірно швидко.

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

Java бере від обох технік найкраще. Код Java компілюється у платформо-незалежний машинний код, який називається Java-байткод. Спеціальний інтерпретатор, Віртуальна машина Java або Java Virtual Machine (JVM) зчитує і обробляє байткод. Рис. 1 представлена ​​схема невеликої програми Java. Байткод, позначений стрілкою, представлений у текстовому вигляді, але за компіляції задля економії місця він представляється як байтів.



Мал. 1 — Розбирання байткоду для HelloWorld

Підхід, який використовує Java, надає кілька значних переваг над мовами, що інтерпретуються. По-перше, вихідний код захищений від перегляду та зміни - користувачам доступний тільки байткод. По-друге, механізми захисту можуть просканувати байткод на ознаки зміни чи наявності шкідливого коду, доповнюючи інші захисні механізми Java Втім, найголовніше це те, що код Java можна скомпілювати всього один раз, і після цього запускати на будь-якому пристрої або операційній системі, що підтримує Java Virtual Machine (JVM). Код Java можна запускати у системах Unix, Windows, Macintosh і навіть Palm Pilot. Java можна запускати навіть у веб-браузері або веб-сервері. Переносність дозволяє написати програму всього один раз, а потім запускати його на множині різних пристроїв. Це дозволяє заощадити багато часу та коштів.

Багатопоточність

Якщо ви коли-небудь писали складні програми на C або PERL, то, швидше за все, ви вже стикалися з концепцією декількох процесів. Програма може ділити себе на окремі копії, що працюють паралельно. Кожна копія дублює код та дані, що веде до збільшення споживання пам'яті. Змусити ці копії взаємодіяти досить складно. Створення кожного процесу вимагає звернення до операційної системи, що вкотре витрачає час роботи ЦПУ.

Набагато найкращим методомє використання кількох виконуваних потоків, скорочено званих просто потоками. Потоки можуть мати загальні дані та код, що спрощує передачу даних між екземплярами потоку. Крім того, вони використовують менше пам'яті та ресурсів ЦПУ. Деякі мови, наприклад, C++, підтримують потоки, але реалізувати їх дуже складно. У Java підтримка багатопотокового виконання є вбудованою. Потоки вимагають трохи іншого способу мислення, але їх легко зрозуміти. Підтримка потоків в Java дуже проста у використанні, і вони часто застосовуються в додатках і аплетах.

Автоматична «складання сміття»

Ні, мова не про винесення сміття з дому (хоча було б непогано мати комп'ютер, який справлявся б із завданнями такого роду). Термін «складання сміття» відноситься до утилізації ділянок пам'яті, що не використовуються. Коли програми створюють об'єкти, JVM виділяє області пам'яті для їх зберігання. Якщо об'єкт більше не потрібний (на нього немає посилань), ця область пам'ять згодом може бути використана ще раз.

Такі мови, як C++, вимагають від програмістів вручну виділяти та очищати пам'ять для даних та об'єктів. Це ускладнює програму та веде до виникнення іншої проблеми – витоків пам'яті. Коли програмісти забувають очищати пам'ять, кількість вільної пам'яті, доступної використання, зменшується. Програми, в яких об'єкти часто створюються та знищуються, можуть згодом заповнити всю доступну пам'ять. У Java програмістуне потрібно дбати про такі речі, оскільки JVM проводить автоматичне «складання сміття» для об'єктів.

Надійність

Безпека грає у Java дуже важливу роль. Оскільки аплети Javaзавантажуються віддалено та виконуються у браузері, безпеці приділяється багато уваги. Ми б не хотіли, щоб аплети отримували доступ до наших особистих документів, могли видаляти наші файли або завдавати шкоди. На рівні API існують суворі обмеження безпеки, коли йдеться про доступ аплетів до файлів і до мережі. Крім того, для перевірки цілісності коду, що завантажується, є підтримка цифрових підписів. На рівні байткод перевіряються очевидні зломи, такі як маніпуляція стеком або неправильний байткод. Потужні механізми безпеки в Java допомагають захиститися від ненавмисних або навмисних порушень безпеки, але важливо не забувати, що ідеальних систем не буває. Найслабшою ланкою в цьому ланцюгу є Java Virtual Machine, в якій все і працює - JVM може бути схильна до атак, оскільки у неї є відомі слабкі сторони. Варто відзначити, що хоча в JVM і було знайдено кілька вразливостей, таке відбувається дуже рідко і швидко виправляється.

Підтримка роботи з мережею та «Інтернетом»

Java створювався з огляду на «Internet» та підтримку мережного програмування. API Java надає велику підтримку мережевих функцій, від сокетів та IP-адрес до URL і HTTP. Немає нічого простіше, ніж написати на Java мережевий додаток. При цьому код, що вийшов, можна буде перенести на будь-яку платформу. У таких мовах як C/C++ код, що працює з мережею, потрібно переписувати заново кожної операційної системи, і зазвичай має більш складну структуру. Підтримка роботи з мережею Java дозволяє заощадити багато часу і сил.

Java підтримує і більш екзотичні види мережного програмування, наприклад, віддалений виклик методів (RMI), узагальнену архітектуру обробника об'єктних запитів (CORBA) та архітектуру розподілених систем Jini. Ці технології розподілених систем роблять Java привабливою для масштабних проектів.

Простота та легкість у використанні

Мова Java своїм корінням сягає мови C++. C++ дуже популярний і поширений. І, тим не менш, він вважається складною мовою, що має такі функції, як множинне спадкування, шаблони та покажчики, які є контрпродуктивними. У свою чергу, Java - це скоріше "чисто" об'єкт-орієнтована мова. Тут немає доступу до покажчиків пам'яті, а замість них використовуються посилання на об'єкти. Підтримку множинного спадкування теж прибрали. Це дозволило досягти більш зрозумілих і простих схемкласів. Бібліотеки введення/виведення та роботи з мережею дуже прості у використанні. API Java надає розробникам велику кількість коду для економії часу (функції роботи з мережею і структури даних). Попрацювавши з Java деякий час, більшість розробників неохоче повертаються до інших мов через простоту та елегантність Java.

Висновок

Java дає розробникам безліч переваг. Незважаючи на те, що багато хто з них є й іншими мовами, в мові Java вони зібрані разом. Швидке зростання Java стало воістину феноменальним, і він, як і раніше, не збирається знижувати обертів. У наступній статті ми поговоримо про серце Java - Java Virtual Machine.


Привіт, любий читачу. Давно хотів написати подібну статтю, але або не вистачало часу, або заважала зрадлива лінь. Але, як би там не було, все-таки мені вдалося зібратися з думками, щоб написати те, що принесе вам, я сподіваюся, якусь користь. З радістю поділюся своїми знаннями та досвідом, у відповідь з вас належить час та увага. На мою думку, дана публікація добре підійде для тих, хто готовий визначитися у своїх інтересах і хоче пов'язати своє життя з IT – тим чи іншим чином. Тож поїхали!

Вибір мови програмування

Публікація починає виглядати як багато подібних матеріалів. За законом жанру я повинен написати назву пари трійки мов програмування, назвати парочку плюсів та мінусів і, в результаті, так і не відповівши на запитання, перейти до наступної частини. Почасти в цьому є частка правди, адже кожен вибирає для себе ту мову, яка йому ближче, виходячи з того, розробкою якого виду продуктів хоче займатися в майбутньому. Більшість із вас вивчали в школі Turbo Pascal і навряд чи для вас буде новиною, що цією мовою зараз уже практично нічого не пишуть. Так і в даному випадку, вибирати мову треба грамотно, хоча багато знань ніколи не буває, але якщо ви хочете за короткий проміжок часу ефективно влитися до лав програмістів, до вибору мови треба підходити з розумом. На самому початку запам'ятайте: хороший програміст ніколи не залишиться голодним, а в більшості випадків зможе купити собі багато ікри(Це визначення підійде для будь-якої спеціальності, але жодна спеціальність не дасть вам такої свободи вибору місця роботи, як у плані компаній, так і країн - програміст і в Індії програміст).

Логічно, що чим популярніша мова та затребуваність, тим більше шансів буде знайти роботу в майбутньому, при цьому мова має бути нескладною в освоєнні. Тому що хоча на C++ і пишуть велику кількість ігор і отримують за це хороші гроші, новачкові, тим більше не знайомому з ООП (об'єктно-орієнтоване програмування), краще відкласти на деякий час цю мову кудись подалі. Далі за посиланням надано список найпопулярніших мов програмування 2014 року, і, як видно, на першому місці стоїть Java, далі йдуть C мови, потім Phyton, JavaScript, PHP, Ruby і т.д. Якщо самим пошукати подібні статистики, ви побачите, що у різних джерелах місця зайняті по-різному, але загалом перші 10 місць за змістом скрізь збігатимуться.

Якщо ж звернутися до іншого, в основі якого аналіз викладених у Twitter вакансій, ви побачите дуже схожу ситуацію з першим прикладом. І так, обидві статті англійською, звикайте до цього, якщо хочете стати програмістом, запам'ятайте, що практично всі документації та джерела корисної інформаціїнаписані англійською, так що якщо ваші знання в цій мові слабкі, додайте собі до списку справ на завтра і на найближче майбутнє вивчати та практикувати англійську. Думаю, я навіть напишу окрему статтю, присвячену вивченню іноземної мови.

Виходячи з цих двох джерел, ми вже можемо собі уявити, які мови програмування зараз «в моді». Як бачимо за назвою, автор статті вибрав для себе Java. Хоча я вважаю його найкращим для вивчення ОВП, знайдеться багато людей, які не погодяться зі мною, і це логічно – скільки людей, стільки й думок. Тут ми встаємо на невелике роздоріжжя доріг: вибирати Java, С# (дуже схожий на Java), Phyton, якщо ми хочемо працювати з начинками програм і додатків (back-end) або PHP, JavaScript, HTML, якщо хочемо займатися веб-розробкою (Front-end). У першому випадку я б свій вибір зупинив на Java, а в другому - на PHP, хоча знову ж таки, тут більше до смаку, треба вже самому шукати інформацію про різні мови і взагалі розуміти, чим ти хочеш займатися. Для роздумів ось добірка мов, які використовуються у найбільших інтернет компаніях світу.

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


Навчання

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

Взагалі, у мене є своя теорія, неодноразово підтверджена мною на практиці: Усьому можна навчитися за 1 рік.. Повірте мені, це правда, комусь навіть знадобиться менше часу, але якщо людина не перестає здаватися і протягом року з розумом підходить до навчання, то практично неможливо, щоб вона не навчилася. Це не тільки в програмуванні, абсолютно в будь-якій сфері: хочеш грати на гітарі - без проблем (у мене це зайняло не так багато часу і сил), навчитися аргентинському танго, кататися на серфі - на все це вистачить одного року. Головне – вчіться!

В даному випадку я розглядатиму мову Java, так як він мені все-таки ближче. Благо в інтернеті повно людей, які безоплатно допомагають іншим в навчання, тому знайти потрібний для вас матеріал не складе труднощів. , які можна з пером та папером переглядати у стінах своєї затишної квартири (поки що тільки російською мовою). Для тих, хто звик вчитуватися в прохідний матеріал, знову ж таки інтернет надає великі можливості і це лише один із усіляких сайтів з уроками з Java. Теорії хоч греблю гати, але не можу сказати про такий навчальний сайт, як Coursera.org, де ви зможете знайти навчальні курси різними мовами та по різних областях, у тому числі і програмування - знову ж таки все абсолютно безкоштовно. Таких сайтів не один і не два, варто лише пошукати.

Але як би не була пізнавальною теорія, програмування без практики не обійтися. Але навіть тут за нас вже зробили підлогу справи і не треба шукати різних завдань, щоб покращувати свої навички, такий сервіс, як JavaRush, дуже в цьому допоможе. В цілому цей сайт пропонує як теорію, так і практику, починаючи просто з дублювання коду з екрану і закінчуючи комплексними завданнями, а в перервах навіть пропонує розслабитися і подивитися відомий мультсеріал. Як запевняють автори, 20 рівня в сервісі матимуть достатні знання, щоб вже влаштовуватися в IT компанію. .

Допомога у практиці

Як згадувалося, практика - це невід'ємна частина у будь-якому навчання, особливо у програмуванні. Тут вам доведеться кодити та кодити, аж до м'язової пам'яті пальців. Це, звичайно, трохи перебільшено, але спочатку доведеться дійсно багато бити по клавішах, щоб запам'ятовувати значення різних конструкцій, щоб в майбутньому використовувати практично на автоматі.

У багатьох програмістів-початківців спочатку виникає велика кількість питань, особливо коли потрібно виконувати самостійне завдання. Це нормально. Але в таких ситуаціях треба розуміти, що практично на будь-яке питання, що виникло у вас, можна знайти відповідь в інтернеті. Навряд чи ви перший, хто з нею стикається, тому не поспішайте одразу ж ставити питання на різні форуми програмістів (про які я напишу трохи пізніше). Посидьте хвилинку, правильно сформулюйте проблему у себе в голові і сміливо шукайте її в пошуковій системі. Напевно більшість шукатимуть російською мовою, але не забувайте, що мова програмістів - це англійська, тому, якщо ви не знайшли відповідь великою і могутньою, варто пошукати мовою, яку в школі начебто все вчили, але так і не вивчили. Але якщо навіть і в цьому випадку виявилося, що на ваше запитання ніде немає відповіді, в бій вступають найкращі форуми інтернету:
документацією мови, якою вони пишуть. Там описуються, як працюють ті чи інші класи та інтерфейси, часом документація є єдиним джерелом, яке може допомогти у вирішенні питань, адже це тільки на початковому етапіу всіх схожі питання і без проблем можна знайти готові рішенняАле чим далі ви забираєтесь в нетрі, тим складніше і складніше знаходити відповіді, тому доводиться сподіватися на свою, я сподіваюся, вже розумну голову.

Компілюємо код

Досить багато я вже написав, звичайно, складно охопити таку велику тему в рамках однієї статті, але, гадаю, перші кроки вже зроблено і викликати у вас відповідні думки вони мають. Думаю, це тільки перша стаття із серії «Як стати програмістом» і, відповідно «навіщо?», якщо ви стоїте на роздоріжжі дорог і поки не знаєте, який вибрати шлях. Наступного разу я торкнуся цікавіших у матеріальному плані речей, адже не секрет, що програмісти люди не бідні, а вже де і скільки вони отримують, подивимося наступного разу.

Нарешті, для тих, хто хоче стати програмістом, бажаю взяти бика за роги, зібрати всю волю в кулак і робити те, що вам подобається. До мене вже тисячі разів говорили, але я повторюся, головне – бажання та праця. Тоді все у вас вийде. Запам'ятайте найголовніше: сприймайте вивчення мов програмування та різних технологій не як ціль, а як ЗАСІБ.Тільки уявіть, які здібності перед вами розкриваються. Можливо, саме ви станете одним із тих, хто змінює світ у режимі реального часу. Так що удачі і дякую за увагу!

Відео-бонус

Теги: Додати теги

Від автора:цією мовою програмування працює приблизно 3 мільярди смартфонів, 125 мільйонів телевізорів і всі до єдиного Blu-Ray програвачі у світі. Ця мова регулярно займає призові місця в рейтингах розробників ПЗ і є найбільш затребуваною серед найбільших IT-компаній. Він є технічним феноменом і працює абсолютно на будь-якому пристрої, що відповідає його принципу "написав один раз - запускай скрізь" (WORA - write once, run anywhere). Хто здогадався, підніміть руки! Звичайно, це мова Java. І сьогодні я розкрию вам усі карти та розповім усю правду про те, як стати Java програмістом з нуля! Влаштовуйтесь зручніше!

Декілька фактів про Java

Щоб не втомлювати вас довгими теоретичними проповідями, я згрупував деякі відомості про Java в списочок, після прочитання якого ви отримаєте осяяння розуміння того, що це за мова така, і яка його роль у дикій природіпрограмування:

Java - це «модна» і кросплатформна мова програмування. Він працює на будь-якому пристрої з будь-якою операційною системою. На ньому написані всі Google та Android-додатки. По жодній іншій мові ви не знайдете стільки інформації та навчальних матеріалів;

офіційна дата випуску мови - 23 травня 1995 р. Спочатку він замислювався для інтерактивного кабельного телебачення, Але «не зрослося». Винахідником Java є компанія Sun Microsystems, яку у 2010 р. викупила Oracle;

багато хто плутає Java і JavaScript. Якщо ви хочете займатися (веб-сайти, веб-застосунки), то вибирайте другий варіант. Java – це back-end, тобто розробка начинки додатків;

Сучасні технології веб-розробки

AngularJS, Webpack, NodeJS, ReactJS, TypeScript, Gulp, Git, Github...
Дізнайтесь все про сучасних технологіяху веб-розробці

це об'єктно-орієнтована мова програмування, код якої виконується спеціальною віртуальною java-машиною(JVM). У США приблизно на 9 з 10 комп'ютерів встановлена ​​ця JVM;

свою назву мову одержав від марки кави - ось чому на офіційній емблемі зображена чашка, що надихає.

Ви все ще тут чи побігли зробити собі чашку ароматної кави? Тоді продовжимо розмову про те, як стати програмістом Java.

Встановлення програмного середовища

Як не дивно, у деяких виникають проблеми вже на етапі встановлення програмного середовища Java. Для цього потрібно перейти на офіційний сайт компанії-розробника – Oracle. Посилання на актуальну версію ви побачите у самому верху сайту. Вам потрібні Java SE (Standard Edition) та Java Development Kit – набір інструментів для розробки. Зверніть увагу, що існують різні дистрибутиви під різні Операційні системи.

Допустимо, у нас Windows. Заходимо до «Властивостей системи» і дивимося, яка у нас система – 32-розрядна або 64-розрядна. Завантажуємо файл, який підходить нам за розрядністю. Якщо виберете неправильний дистрибутив, при компіляції коду отримаєте помилку. Після підтвердження Accept License Agreement натискаємо кнопку скачування.

Яким є інструментарій Java-розробника?

Більшість програміст проводить в IDE (IntelliJ IDEA, Eclipse, WebStorm, NetBeans). IDE – це інтегроване середовище розробки, спеціальний інтерфейс для програмування. Він не тільки допомагає під час написання коду, але й спрощує використання інших інструментів програмування. Деякі радять тим, хто хоче стати Java програмістом з нуля, перші свої програми писати у звичайному блокноті чи Notepad++.

Може, елементарні програми й варто писати у редакторі. Але надалі настійно рекомендую використовувати IDE. У неї є функції автодоповнення коду, контролю синтаксису, переходу до визначення методу та багато інших. А інтелектуальні підказки позбавлять вас необхідності пам'ятати всі назви функцій та їх параметри, що просто фізично неможливо.

При командної роботиКоли над однією програмою працює відразу кілька людей, потрібно обов'язково використовувати так звану систему контролю версій (Perforce, Git, Subversion і т. д.). Втім, системи контролю версій дуже зручні і під час роботи поодинці.

Зразковий алгоритм вивчення Java

Вивчення основ мови Java. Перший крок - це розвиток у собі навичок логічного мислення та вивчення фундаментальних понять синтаксису мови програмування. Озброївшись книгою, статтею або навчальним відео, навчитеся створювати з допомогою IDEабо текстового редактора прості Java-об'єкти, в яких закладено різні варіантиповедінки залежно від вхідних даних.

Розбір розширених можливостей мови Java. На цьому етапі вивчіть синтаксис, бібліотеки та фреймворки, які стануть вам у нагоді при створенні більш складних програм з практичним ухилом. Хороший програміст не тільки вміє користуватись різними бібліотеками, але й знає, як вони влаштовані всередині. Крім цього, такі поняття, як операції введення/виводу, успадкування та абстракції, серіалізація, родові типи, Регулярні вирази, не повинні бути для вас пустим звуком.

Тонкощі програмування. У жодному разі не гидуйте ретельним вивченням документації та жаргону Java-програмування. На цьому етапі ви вже маєте «мутувати» у зрілого програміста. Спілкуйтеся з Java-гуру, яких ви знайдете у тематичних форумах та інших середовищах, де збираються програмісти. Показуйте їм свій код, радьтеся та радьте іншим – «накопичуйте карму». Можете навіть завести свій блог, публікувати на ньому уривки власного коду та дивитися, що говорять про нього досвідченіші програмісти.

Як розпочати програмування?

Для тих, хто має намір стати Java-програмістом з повного нуля, я розповім, як написати свою першу програму.
Отже, відкриваємо будь-який текстовий редакторта записуємо:

Class HelloWorld ( public static void main(String args) ( System.out.println("Hello World!"); ) )

Зберігаємо файл під назвою HelloWorld.java. Звертаю вашу увагу, що Java чутлива до регістру, тому слова helloworld і HelloWorld є різними. Якщо назви файлу та класу в коді відрізнятимуться, то програма просто не запуститься. Крім цього, важливо, щоб кодування було ANSI.

Тепер ми повинні компілювати програму, використовуючи компілятор javac з JDK. Поки ми не встановили середовище розробки, компілюватимемо за допомогою командного рядка cmd, викликавши її з меню Пуск. У вікні набираємо cmd і тиснемо Enter.

Якщо ми зберегли HelloWorld.java в папку Prog на диску C, то вписуємо команду:

Cd C:\Progа

та натискаємо Enter. Таким чином, ми змінили каталог на той, де розташована наша програма. Потім вводимо:

Javac HelloWorld.java

Знову натискаємо на Enter. Якщо система не видала помилку, компіляція пройшла успішно, і в папці Progа ви виявите файл HelloWorld.class. Поясню, навіщо він потрібний. Файл з расширением.java - це лише «малюнок» коду, який містить «технічну частину», яка впливає не так на функції, але в запуск програми. А файл.class містить байт-коди, що дозволяють виконати написаний код через Java-інтерпретатор.

Якщо ви все зробили правильно, то на екрані побачите своє творіння, електронний розум, що зароджується, який привітає вас: «Hello World!»


От і все на сьогодні, дорогі друзі. Сподіваюся, ви зрозуміли для себе, як можна стати програмістом Java з нуля. У наступній статті я розповім про те, як заробити Java програмісту. Тож залишайтеся з нами, а ще краще, підписуйтесь на оновлення нашого блогу. Бувайте усі!



Розповісти друзям