Это интересный вопрос.Текущий javac
компилятор из Oracle, который является одним компилятором из многих (1) , на самом деле написан на Java, что означает, что да, вы можете считать его загрузочным, предполагая, что вашопределение означает, что « имеет , был загружен так, что теперь он может скомпилировать себя» (2) .
Сама виртуальная машина записывается в основном на C ++ из памяти, поэтомукомпилятор загружается, сборка JRE требует компилятора C ++.
(1) GCJ - это еще один, и он написан на C, поэтому он зависит от к какому компилятору вы обращаетесь.
(2) Одно слово "bootstapped" в вашем вопросе может быть использовано несколькими способами.Если ваше определение «bootstrapped» означает «должен быть быть bootstrapped, чтобы получить работающий компилятор», то ответ - нет.
Что касается того, как был написан первый компилятор Javaдо начальной загрузки это теряется в глубине веков (или в умах Гослинга и др.).
Учитывая, что компилятор может быть написан относительно легко без какой-либо причудливой концепции ОО, моя догадка было бы так, что они просто написали первый (или несколько) на C или C ++.
Это, кажется, подтверждается этой записью с Wayback Machine :
Усилия команды положили начало разработке нового объектно-ориентированного языка программирования, который Гослинг назвал Oak, после дерева за окном.Основанный на C ++ язык был сокращен до минимума, чтобы быть совместимым с ограниченным пространством, которое предоставляют чипы в портативных устройствах, и был разработан, чтобы позволить программистам легче поддерживать динамическое, изменяемое оборудование.
, а позже:
Артур ван Хофф написал компилятор Oak полностью на Oak, а не на C. Нотон и Джонатан Пэйн создали Oak-ready браузер под названием "WebRunner".Родился первый апплет - герцог, махающий в ответ своим родителям через Интернет.
Кроме того, из эпилога Патрика Нотона в его книге "Справочник по Java" (мои смелые):
Теперь, когда у нас был план записи, чтобы отправить Oak в виде исходного кода в сети, все стало намного продуктивнее.Мы начали сосредотачиваться на исправлении всех слабых мест в языке.Джонатан Пэйн работал над оптимизацией переводчика. Артур ван Хофф переписал компилятор в самом Oak, заменив версию C, которую первоначально написал Джеймс. Это был также хороший тест среды, так как этот компилятор был самой большой из когда-либо написанных программ Oak.Немало сгоревших инженеров использовали это время как оплачиваемый отпуск от Sun, но по большей части основная команда проигнорировала их и вернулась к работе.
Итак, похоже, что оригинальная версиякомпилятора "Java" (Oak) был написан на C, а затем загружен оттуда.