Можно ли просмотреть исходный код OpenJDK в Интернете?

Можно ли просматривать исходный код OpenJDK в Интернете, как я могу это делать с проектами SourceForge? Раньше я никогда не использовал Меркьюри, поэтому чувствовал себя сбитым с толку.

(Примечание: я не хочу загружать исходный код. Я просто хочу просмотреть его в Интернете, чтобы увидеть, как реализованы некоторые методы.)


person Hosam Aly    schedule 04.01.2009    source источник


Ответы (8)


OpenJDK теперь на GitHub: https://git.openjdk.java.net/jdk

Это большой проект, но вы найдете реализации основных классов в jdk / src / java.base / share / classes.

Например, вы можете найти реализацию java.util.List здесь.


Если вам нужно просмотреть более старые версии, вам все равно нужно использовать старый Mercurial interface.

Интерфейс Mercurial довольно запутан, если вы к нему не привыкли, а поскольку это большой проект, может быть сложно найти то, что вы ищете.

Вот пример:

Чтобы найти реализацию JDK6 java.util.List, выберите jdk6, jdk, выберите обзор. Затем перейдите к src / share / classes / java / util / List.java.

Вы должны оказаться на https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/List.java

person Rasmus Faber    schedule 04.01.2009
comment
Большое спасибо. Я пошел туда, пытаясь найти источник java.nio.file.FileRef, но не смог его найти. Не могли бы вы мне помочь? Спасибо. - person Hosam Aly; 04.01.2009
comment
Вы можете найти его здесь: hg.openjdk.java.net/nio/nio/jdk/file/d5e2831c01c4/src/share/ (или, возможно, посмотрите здесь: stackoverflow.com/questions/410705/) - person Rasmus Faber; 04.01.2009
comment
Для тех, кто пытается это сделать, номер ветки по умолчанию изменится. Итак, описанная процедура верна, только не удивляйтесь, если ссылка не сработает. - person Patrick; 10.02.2009
comment
если вам нужна версия JDK7, она здесь: hg.openjdk.java.net/jdk7/jdk7/jdk/file/tip/src/share/classes/. - person user102008; 02.02.2011
comment
@Patrick: если вы замените идентификатор набора изменений на «подсказку», он всегда будет работать. Версия, на которую он указывает, может со временем измениться, но она всегда будет самой последней (в некотором смысле). Я отредактировал сообщение соответствующим образом. - person Tom Anderson; 05.04.2011
comment
Что означает гейт в названии репо? - person finnw; 26.05.2011
comment
@finnw: Очень хороший вопрос. Понятия не имею: подумайте о том, чтобы задать вопрос на высшем уровне по этому поводу. - person Rasmus Faber; 26.05.2011
comment
Теперь, если я хочу увидеть собственный код, реализующий собственные методы, где я могу их найти? - person Ustaman Sangat; 14.12.2011
comment
@Ustaman Sangat: посмотрите в src / windows / native, src / linux / native или src / solaris / native. Например, hg.openjdk.java.net/jdk6/jdk6-gate/jdk/file/tip/src/windows/ - person Rasmus Faber; 14.12.2011
comment
@RasmusFaber Спасибо. Теперь более тупой вопрос, я искал реализацию Object.hashcode (), не могу понять это ни из каких файлов в hg.openjdk.java.net/jdk6/jdk6-gate/jdk/file/6b46f3c7c97c/src/ - person Ustaman Sangat; 14.12.2011
comment
@ Устаман Сангат: Ах, извините. Методы, не зависящие от платформы, находятся в src / share / native. java.lang.Object находится в hg.openjdk.java.net/jdk6/jdk6-gate/jdk/file/tip/src/share/. Вы заметите, что он делегирует hashCode () JVM_IHashCode (), который находится в hg.openjdk.java.net/jdk6/jdk6-gate/hotspot/file/tip/src/share/. Это снова вызывает FastHashCode () в hg.openjdk.java.net/jdk6/jdk6-gate/hotspot/file/tip/src/share/, что приведет к вызову get_next_hash () в том же файле. - person Rasmus Faber; 14.12.2011
comment
Но если нужно клонировать последнее репо jdk7, каков URL-адрес? - person St.Antario; 29.09.2015
comment
К вашему сведению, версия этого примера для Java 8 _ 1_ исходный файл класса. - person Basil Bourque; 01.04.2016


Вот основной шаг для получения последней или любой выпущенной версии Openjdk 8 (или любой существующей версии Java) исходного кода и использования их в Eclipse.

Шаги:

  • [просмотреть источник]
  • Откройте URL-адрес для jdk, например http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/
  • нажмите tags
  • выберите правильный тег, например jdk8u73-b02
  • затем щелкните browse,
  • затем перейдите в папку src/share/classes,
  • [источник загрузки]
  • затем щелкните один из bz2 / zip / gz, чтобы загрузить исходный код в соответствующем сжатом формате (например, для jdk8u73-b02 в формате zip URL-адрес будет: http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/archive/2ab13901d6f1.zip/src/share/classes/)
  • [использовать в затмении]
  • распаковать это,
  • заархивируйте папку "classes /", сделайте "classes /" корневым каталогом ZIP-файла (например, сначала cd jdk-2ab13901d6f1/src/share/, затем zip -r openjdk_8u73_b2_src.zip classes/)
  • переместите созданный zip-файл в нужное место, он останется там некоторое время (например, mv openjdk_8u73_b2_src.zip /media/Eric/software/java/jdk/openjdk/openjdk8u73-b02/source/)
  • в eclipse укажите исходный файл для jar-файлов установленной jre, можно указать исходное вложение для каждого jar-файла установленной jre соответственно, наиболее распространенным jar-файлом, вероятно, является rt.jar,
  • при желании может потребоваться обновить проект, чтобы он полностью вступил в силу, не уверен, что это необходимо,
  • протестируйте это: в eclipse, ctrl + shift + t, затем введите Cancellable, выберите sun.nio.fs.Cancellable соответствующей установленной jre, если исходный код доступен, то это хорошо, потому что этот источник недоступен в jdk_home/src.zip, он должен быть из дополнительного источника openjdk,
  • переключить источник обратно: можно вернуться к использованию "jdk_home / src.zip", если не хотите использовать внешний источник openjdk,
  • ok
person user218867    schedule 18.03.2016

Вот способ просматривать репозитории и выбирать только те фрагменты, которые вам нужны. http://hg.openjdk.java.net/ Это то, о чем вы спрашиваете?

person jwpfox    schedule 04.01.2009
comment
Не совсем. Я пошел туда раньше, чем попросил, но не смог разобраться в интерфейсе Mercurial. :( - person Hosam Aly; 04.01.2009
comment
Извините, я действительно зашел на openjdk.java.net/projects/nio и попытался найти свой путь оттуда. Я проверю эту ссылку еще раз. Спасибо. - person Hosam Aly; 04.01.2009

Добавьте «/ file» к корневым URL-адресам, чтобы просматривать браузер следующим образом:

person Ashwin Jayaprakash    schedule 12.09.2013

Grepcode.com отлично подходит для подобных вещей - не только для исходников OpenJDK, с поиском в классах / методах и связями между классами непосредственно в выделенном коде:

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/8-b132/java/net/Socket.java

person Honza    schedule 16.09.2014

Как упоминалось в других ответах, репозиторий исходного кода находится по адресу https://hg.openjdk.java.net

Однако команда OpenJDK отражает некоторые проекты на GitHub: https://github.com/openjdk

Включая проект последней версии Java (https://hg.openjdk.java.net/jdk/jdk): https://github.com/openjdk/jdk.

person Marcono1234    schedule 20.04.2019

Конечно, http://hg.openjdk.java.net - хороший вариант. Другой не менее хороший источник - zGrepCode https://zgrepcode.com/java/openjdk/. У него есть как Java-версии Open JDK, так и Oracle.

person Arry    schedule 27.07.2018