Я хочу начать эту статью с необычного, на первый взгляд, отступления. Позже станет понятно, почему именно.
Итак, представим себе Некто. Этот Некто хочет освоить горные лыжи. И для этого он предпринимает следующие шаги:
- Инструктора, учебники, пособия и т.п. — это всё от лукавого. Лыжи можно освоить самостоятельно. К тому же, в школе он сносно научился ходить на беговых лыжах. Соответственно, все советы более знающих людей игнорируются.
- Снаряжение выбирается самое крутое. Не ниже уровня эксперта. Жесткие ботинки, от которых болят ноги. Жесткие лыжи, чтобы прогнуть которые нужно приложить фантастические усилия, далеко превосходящие уровень физической подготовки Некто. Ну и т. д.
- В качестве пробной трассы выбирается... ну, скажем, трасса, принимающая этап кубка мира по гигантскому слалому. Для учебы это как раз.
- Далее в том же духе.
- Литература соответствующего его знаниям уровня (нулевого уровня, прямо скажем) отметается. На основании легкого знакомства с упомянутыми C++, C# и теорией ООП.
- Берется самая мощная среда программирования. Скажем, Eclipse или NetBeans. Та, которая все делает сама, достаточно нажать одну кнопку.
- В качестве пробного приложения выбирается... ну, скажем, чат. Приложение типа клиент-сервер, клиентская часть в виде апплета, серверная — веб-сервис или, на худой конец, сервлеты. Для учебы в самый раз.
- А как перевести массив из 8 байт в long?
- А почему случается
NoClassDefFoundError
? - А почему я запускаю приложение в Eclipse (
NetBeans/IDEA/JBuilder
), и все в порядке, а без него я набираюjava HelloWorld.class
, а там ошибка? - А почему вылетает
ClassNotFoundException
? - А почему не находится библиотека? Я ее уже в classes.zip положил, а все без толку!
- А почему я создаю массив объектов, а при попытке использования элемента массива получаю
NullPointerException
? - А почему ...?
- А почему ...?
- А почему ...?
- Что такое виртуальная машина и зачем она нужна.
- Что такое класс с точки зрения виртуальной машины.
- Что такое пакет.
- Что такое библиотека.
- Как виртуальная машина ищет и загружает классы; что такое загрузчик классов и как он работает; сколько их по умолчанию; что такое classpath.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ