Java Core
Любая программа это набор инструкций, которые выполняет процессор или его микропрограмма. Эти инструкции называются машинным кодом. Они показывают процессору откуда взять данные, что с ними сделать и куда поожить результат. Hello world на машинном языке выглядел бы как набор цифр и букв, набор инструкций зависит от реализации конкретного процессора и унифицируется на уровне операционных систем(созданием виртуального процесора с универсальным набором инструкций).
Чтобы было проще запоминать машинные коды для каждого кода придумали мнемоники. Так появился язык Asembler и код стал немного понятнее.
Затем появились языки высокого уровня которые оперируют простыми словами, а специальные программы - компеляторы и интерпретаторы приводили их в машинный код.
Следующим этапом развития стало компиляция языка программирования не напрямую в машинный код, а сначала в промежуточный байт-код, по этому пути пошли разработчики java и dotNet'a.
Разработчики Java создали концепцию JVM - java virtual machine - виртуальная машина, которая может исполнять bytecode скомпелированный из java кода. Создав реализацию такой виртуальной машины для разных платформ, мы получили возможность писать на джаве для любой платформы.
Разработчики из дотнета пошли другим путем и создали clr - common language runtime если разработчики джава были сосредоточены только на языке джава, то clr был создан для возможности писать на разных языках в пределах одного решения но при этом все ставки делались только на windows.
В настоящее время обе команды пересмотрели свою концепцию: в jvm появилась поддержка в том числе и других языков, а для дот нета почвилась платформа Mono которая позволяет запускать C# практически на любом устройстве.
JVM состоит из:
Различают 3 вида:
JVM + java библиотеки
JRE + инструменты разработчика + компилятор