Я хочу розпочати цю статтю з незвичайного, на перший погляд, відступу. Пізніше стане зрозумілим, чому саме.
Отже, уявімо собі Хтось. Цей хтось хоче освоїти гірські лижі. І для цього він робить наступні кроки:
- Інструктори, підручники, посібники тощо. - Це все від лукавого. Лижі можна освоїти самостійно. До того ж, у школі він непогано навчився ходити на бігових лижах. Відповідно, всі поради знаючих людей ігноруються.
- Спорядження вибирається найкрутіше. Не нижче за рівень експерта. Жорсткі черевики, від яких болять ноги. Жорсткі лижі, щоб прогнути які потрібно докласти фантастичні зусилля, що далеко перевершують рівень фізичної підготовки. Ну і т.д.
- Як пробна траса вибирається... ну, скажімо, траса, яка приймає етап кубка світу за гігантським слаломом. Для навчання це якраз.
- Далі так само.
- Література відповідного його знанням рівня (нульового рівня, прямо скажемо) відкидається. На підставі легкого знайомства зі згаданими C++, C# та теорією ООП.
- Береться найпотужніша середовище програмування. Скажімо, Eclipse чи NetBeans. Та, яка все робить сама, достатньо натиснути одну кнопку.
- Як пробний додаток вибирається... ну, скажімо, чат. Додаток типу клієнт-сервер, клієнтська частина у вигляді аплету, серверна — веб-сервіс або, на крайній край, сервлети. Для навчання якраз.
- А як перевести масив із 8 байт у long?
- А чому трапляється
NoClassDefFoundError
? - А чому я запускаю додаток в Eclipse (
NetBeans/IDEA/JBuilder
), і все гаразд, а без нього я набираюjava HelloWorld.class
, а там помилка? - А чому вилітає
ClassNotFoundException
? - А чому не знаходиться бібліотека? Я її вже в classes.zip поклав, а все без толку!
- А чому я створюю масив об'єктів, а при спробі використання елемента масиву отримую
NullPointerException
? - А чому ...?
- А чому ...?
- А чому ...?
- Що таке віртуальна машина і навіщо вона потрібна?
- Що таке клас із погляду віртуальної машини.
- Що таке пакунок.
- Що таке бібліотека |
- Як віртуальна машина шукає та завантажує класи; що таке завантажувач класів та як він працює; скільки їх за замовчуванням; що таке classpath.