Как работает платформа Java
В языке Java, как и во многих других языках программирования, для создания программы вы пишете исходный код, затем компилируете его; компилятор проверяет соответствие вашего кода синтаксическим правилам языка. Java-платформа добавляет еще один шаг к этому процессу. После компиляции Java-кода получаются байт-коды. Виртуальная машина Java (JVM) затем интерпретирует эти байт-коды во время исполнения — то есть тогда, когда вы запускаете Java-программу.
С точки зрения файловой системы при написании кода вы создаете файл с расширением .java. После компилирования этого файла компилятор Java создает файл с расширением .class, который содержит байт-коды. JVM читает и интерпретирует этот файл во время исполнения, и то, как она делает это, зависит от платформы, на которой вы работаете. Для работы на других платформах вы должны откомпилировать ваш исходный код с библиотеками, специфичными для этой платформы. Как вы понимаете, обещание «Write Once, Run Anywhere» (написать один раз, запускать везде) превращается в высказывание «Write Once, Test Anywhere» (написать один раз, проверить везде). Существуют тонкие (или не такие тонкие) отличия платформ, которые могут вызвать различное выполнение вашего кода на различных платформах.
Сборка мусора
При создании Java-объектов JRE автоматически выделяет оперативную память для этого объекта из кучи, которая представляет собой большой пул памяти, доступный на вашей машине. Система времени исполнения отслеживает эти объекты за вас. Когда ваша программа больше не использует их, JRE избавляется от них. Вам не нужно об этом беспокоиться.
Если вы писали какие-либо программы на языке программирования C++, который тоже является (вероятно) объектно-ориентированным, то знаете, что как программист вы должны распределять и освобождать память для ваших объектов явно при помощи функций malloc() и free() . Для программистов это обременительная задача. Она также и опасна, поскольку может привести к утечкам памяти в ваших программах. Утечка памяти — это ничто иное, как ваша программа, поглощающая оперативную память с угрожающей скоростью, что нагружает процессор машины, на которой работает ваша программа. Java-платформа освобождает вас от каких-либо беспокойств по этому поводу, поскольку она имеет так называемый сборщик мусора .
Сборщик мусора в Java — это фоновый процесс, который занимается удалением неиспользуемых объектов вместо того, чтобы заставлять вас делать это явным образом. Компьютеры прекрасно подходят для слежения за тысячами вещей и для размещения ресурсов. Java-платформа позволяет компьютерам делать это. Она хранит счетчик ссылок для каждого объекта в памяти. Вы можете вручную вызвать сборщик мусора, но я никогда не делал этого на протяжении всей моей карьеры. Он обычно работает сам по себе и определенно будет работать для каждого примера из данного руководства.
IDE против инструментов командной строки
Как мы уже отмечали ранее, Java-платформа поставляется с инструментами командной строки, которые позволяют компилировать ( javac ) и запускать ( java ) Java-программы. Так зачем же тогда использовать такую IDE как Eclipse? Причина этого заключается в том, что использование инструментов командной строки может стать головной болью для работы с программами любой сложности. Они имеются под рукой, когда необходимы, но использование IDE в большинстве ситуаций является более мудрым решением.
Главной причиной использования IDE является управление файлами и путями в самой IDE и наличие мастеров, помогающих вам при необходимости изменить вашу среды времени исполнения. Если я хочу откомпилировать Java-программу при помощи инструмента командной строки javac , то должен заранее побеспокоиться об установке переменной среды CLASSPATH , для того чтобы JRE смог найти мои классы, либо я должен установить эту переменную во время компилирования. В такой IDE как Eclipse все, что я должен сделать — это указать Eclipse, где найти мою JRE. Если мой код использует классы, которые я не написал, все что я должен сделать — это указать Eclipse библиотеки, на которые ссылается мой код, и их месторасположение. Это намного проще, чем использование командной строки для ввода ужасно длинных строк, указывающих classpath.
Если вы хотите или вынуждены использовать инструменты командной строки, то можете найти дополнительную информацию по их использованию на Web-сайте Sun по Java-технологии.