Езикът, който учиш
Проблем
Защо точно Java
Езиците за програмиране са стотици. Всеки става за нещо, но не за всичко еднакво добре. Преди да отделиш месеци на един от тях, честно е да знаеш къде ще го ползваш.
Java е един от най-разпространените езици за програми, които работят дълго и без прекъсване:
- сървърите на банки, онлайн магазини и резервационни системи: частта, която не виждаш, но която пази сметките и поръчките;
- Android: дълго време това беше основният език за приложения за Android. Днес там често се пише на Kotlin, който върви върху същата основа и може да ползва Java код;
- големи системи в компании и институции, които се развиват с години от много хора;
- Minecraft: оригиналната версия на играта (Java Edition) е написана на Java.
Java е от 1995 г. Затова има огромно количество готови библиотеки, документация и отговори на въпроси, на които ще попадаш.
Идеята
От текст до програма
Програмата, която пишеш, е обикновен текст във файл. Ето една цяла програма:
public class Main { public static void main(String[] args) { System.out.println("Поръчка №1024 е приета."); }}Поръчка №1024 е приета.Засега не се спирай на думите в нея. Ще ги разберем в урока „Първата програма“. Важното е друго: процесорът на компютъра не разбира този текст. Нещо трябва да го преведе.
- Ти пишеш изходния код (source code) във файл
Main.java. - Компилаторът
javacпроверява текста за грешки и го превежда в байткод: файлMain.class. Байткодът не е за конкретен процесор. - JVM (Java Virtual Machine) чете байткода и го изпълнява на твоя компютър.
JVM има за Windows, macOS и Linux. Затова един и същ Main.class върви на всички тях без промяна. Това се казва платформена независимост.
public class Main { public static void main(String[] args) { System.out.println("Поръчка №1024 е приета."); }}Стъпка по стъпка, с думи
- Пишеш изходния код: обикновен текст във файла Main.java.
- Компилаторът javac чете текста и проверява за грешки.
- Излиза байткод, файлът Main.class. Той не е за конкретен процесор.
- Същият Main.class отива без промяна на Windows, macOS и Linux.
- JVM на всяка система изпълнява байткода. Изходът е еднакъв.
По-точно, за любопитните
- JVM не превежда цялата програма предварително. Тя превежда части от нея в машинен код, докато програмата работи, и оптимизира по-силно тези, които се изпълняват най-често. Това се казва JIT компилация (just-in-time, „точно навреме“).
- Паметта. Всяка програма заема памет за данните си. В езици като C програмистът сам освобождава паметта, която вече не му трябва, и ако забрави или сбърка, програмата започва да заема все повече памет или да се срива. Java правят това вместо теб: garbage collector („събирачът на боклук“) намира данните, до които програмата вече няма как да стигне, и освобождава паметта им.
Идеята
Какво ще научиш
Курсът върви на модули. Всеки модул ползва само неща от предишните:
- Основи на езика: променливи, вход и изход, сметки, условия, цикли, масиви, текст.
- Методи: код, който пишеш веднъж и викаш много пъти.
- Класове и обекти: твоите собствени типове, например
OrderилиStudent. - Наследяване и полиморфизъм: общото на няколко типа на едно място.
- Грешки и изключения: какво прави програмата, когато нещо се обърка.
- Текст и файлове: работа с низове, шаблони за търсене (regex) и файлове.
- Колекции: списъци, стек, опашка,
HashMap. - Модерна Java: ламбда изрази,
Streamи новите възможности на езика. - Програми в истинския свят: тестове, нишки, мрежа, бази данни.
Встрани от основния път има игри и проекти: цели програми, които правиш стъпка по стъпка.
Двете особености на Java, които често се изтъкват, също са в курса. Нишките (няколко неща, които програмата върши едновременно) са в „Програми в истинския свят“. Reflection (програма, която разглежда собствените си класове, докато работи) идва в последните модули.
Идеята
Как се учи тук
Всеки урок е поредица от карти, по една идея на карта. Обикновено започва с проблем от практиката, после идва какво става всъщност, често с анимация до кода. След това има малка задачка: предвиди изхода, попълни липсващото, намери грешката. Накрая има упражнение, което решаваш в редактора си, и кратък тест.
Напредъкът ти се пази в браузъра: урокът продължава от картата, до която си стигнал.
Картата на целия курс е на началната страница на курса.
Упражненията не ги пропускай. Да четеш код и да пишеш код са различни умения, а второто идва само с писане.
Идеята
Грешките са част от работата
Първите ти програми често няма да се компилират. Ще забравиш точка и запетая, кавичка или скоба, и компилаторът ще откаже.
Това не е оценка за теб. Съобщението за грешка е помощ: то казва на кой ред е проблемът и какъв е. Опитните програмисти също виждат такива съобщения всеки ден. Разликата е, че са се научили да ги четат спокойно. Ще започнем да ги четем още в първия урок с код.
Ако нещо не тръгва дълго време, остави го и се върни след малко. Често грешката се вижда веднага, щом погледнеш наново.
Накратко
Накратко
- Java върви на сървъри, в Android, в големи системи и в Minecraft.
- Изходният код (
Main.java) се компилира отjavacдо байткод (Main.class), а JVM го изпълнява на всяка система. - Паметта се освобождава автоматично от garbage collector.
- Курсът върви на модули, а урокът на карти. Упражненията са в твоя редактор.
- Съобщението за грешка е помощ, не оценка.
Следва подготовката на компютъра: какво да инсталираш, за да пуснеш първата си програма.