Оглавление:
Спецификация байт-кода является архитектурно-нейтральной, т.е. она не зависит от любой аппаратной архитектуры.
JVM может динамически загружать библиотеки классов из локальной файловой системы или с других машин в сети, когда эти библиотеки понадобятся среде исполнения. Также возможно во время исполнения запрашивать у класса или объекта метаинформацию о его полях и методах.
JIT ведет мониторинг программы во время исполнения с целью идентифицировать критичный для производительности байт-код (называются hotspots). Такой код транслируется в машинный код. Производительность достигается балансом между исполнением машинного кода интерпретацией полностью скриптовых языков.
- Что такое компиляция?
- Элементы Java-приложения
- Компиляция и запуск Java-приложения
- JVM
Что такое компиляция?
Программу, написанную на языке, который компилируется в байт код виртуальной машины, можно скомпилировать однажды и потом запускать на любой платформе, где есть виртуальная машина.
Не каждая программа, написанная на языке с виртуальной машиной, переносима. Т.е. не любая программа, написанная на языке с виртуальной машиной, будет работать везде одинаково.
Термин приложение (application) является синонимом программы, т.е. скомпилированного исходного кода, который может выполняться напрямую. Чтобы создать Java-приложение в программе должен быть класс в котором определен публичный, статический, ничего не возвращающий метод с именем main - точка входа с которой начинается выполнение приложения. При старте приложения Java interpreter также называемый Java Virtual Machine (JVM) запускает метод main().
Пример приложения:
Не каждая программа, написанная на языке с виртуальной машиной, переносима. Т.е. не любая программа, написанная на языке с виртуальной машиной, будет работать везде одинаково.
Элементы Java-приложения
Каждое объявление класса компилируется в отдельный .class файл содержащий Java байт-код. JDK предоставляет инструменты для компиляции и запуска программ. Классы из API для платформы Java SE уже скомпилированы и JDK знает, где их найти.Термин приложение (application) является синонимом программы, т.е. скомпилированного исходного кода, который может выполняться напрямую. Чтобы создать Java-приложение в программе должен быть класс в котором определен публичный, статический, ничего не возвращающий метод с именем main - точка входа с которой начинается выполнение приложения. При старте приложения Java interpreter также называемый Java Virtual Machine (JVM) запускает метод main().
Пример приложения:
// File: CharStack.java public class CharStack { // Instance variables: private char[] stackArray; // The array implementing the stack. private int topOfStack; // The top of the stack. // Static variable private static int counter; // Constructor now increments the counter for each object created. public CharStack(int capacity) { stackArray = new char[capacity]; topOfStack = -1; counter++; } // Instance methods: public void push(char element) { stackArray[++topOfStack] = element; } public char pop() { return stackArray[topOfStack--]; } public char peek() { return stackArray[topOfStack]; } public boolean isEmpty() { return topOfStack == -1; } public boolean isFull() { return topOfStack == stackArray.length - 1; } // Static method public static int getInstanceCount() { return counter; } }
// File: Client.java public class Client { public static void main(String[] args) { // Create a stack. CharStack stack = new CharStack(40); // Create a string to push on the stack: String str = "!no tis ot nuf era skcatS"; System.out.println("Original string: " + str); int length = str.length(); // Push the string char by char onto the stack: for (int i = 0; i < length; i++) { stack.push(str.charAt(i)); } System.out.print("Reversed string: "); // Pop and print each char from the stack: while (!stack.isEmpty()) { // Check if the stack is not empty. System.out.print(stack.pop()); } System.out.println(); } }
Компиляция и запуск Java-приложения
>javac Client.java
Эта команда создает файл Client.class содержащий Java байт-код для класса Client. Класс Client использует класс CharStack, и если файл CharStack.class не существует, то компилятор скомпилирует CharStack.java.
Скомпилированные классы могут быть исполнены Java интерпретатором java, который также является частью JDK.
>java Client
Original string: !no tis ot nuf era skcatS
Reversed string: Stacks are fun to sit on!
Обратите внимание, что указывается только имя, без расширения .class.
Приложение начинает свое выполнение с метода main() и завершается тогда, когда завершается исполнение метода main().
JVM
Java программы компилируются в байт-код, который интерпретируется JVM. Различные технологии оптимизации (например, just-in-time [JIT]) позволяют JVM быть эффективной виртуальной машиной относительно производительности, стабильности и безопасности. Много других языков (Scala, Groovy, и Clojure) теперь тоже компилируются в байт-код и исполняются на JVM.Спецификация байт-кода является архитектурно-нейтральной, т.е. она не зависит от любой аппаратной архитектуры.
JVM может динамически загружать библиотеки классов из локальной файловой системы или с других машин в сети, когда эти библиотеки понадобятся среде исполнения. Также возможно во время исполнения запрашивать у класса или объекта метаинформацию о его полях и методах.
JIT ведет мониторинг программы во время исполнения с целью идентифицировать критичный для производительности байт-код (называются hotspots). Такой код транслируется в машинный код. Производительность достигается балансом между исполнением машинного кода интерпретацией полностью скриптовых языков.
Комментариев нет:
Отправить комментарий