531a6d85b0
Reviewed-by: erikj
166 lines
8.3 KiB
HTML
166 lines
8.3 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<meta name="generator" content="pandoc" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
<title>IDE support in the JDK</title>
|
|
<style>
|
|
code{white-space: pre-wrap;}
|
|
span.smallcaps{font-variant: small-caps;}
|
|
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
|
div.column{flex: auto; overflow-x: auto;}
|
|
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
ul.task-list{list-style: none;}
|
|
ul.task-list li input[type="checkbox"] {
|
|
width: 0.8em;
|
|
margin: 0 0.8em 0.2em -1.6em;
|
|
vertical-align: middle;
|
|
}
|
|
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
|
</style>
|
|
<link rel="stylesheet" href="../make/data/docs-resources/resources/jdk-default.css" />
|
|
<!--[if lt IE 9]>
|
|
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
|
<![endif]-->
|
|
</head>
|
|
<body>
|
|
<header id="title-block-header">
|
|
<h1 class="title">IDE support in the JDK</h1>
|
|
</header>
|
|
<nav id="TOC" role="doc-toc">
|
|
<ul>
|
|
<li><a href="#introduction" id="toc-introduction">Introduction</a>
|
|
<ul>
|
|
<li><a href="#ide-support-for-native-code"
|
|
id="toc-ide-support-for-native-code">IDE support for native
|
|
code</a></li>
|
|
<li><a href="#ide-support-for-java-code"
|
|
id="toc-ide-support-for-java-code">IDE support for Java code</a></li>
|
|
</ul></li>
|
|
</ul>
|
|
</nav>
|
|
<h2 id="introduction">Introduction</h2>
|
|
<p>When you are familiar with building and testing the JDK, you may want
|
|
to configure an IDE to work with the source code. The instructions
|
|
differ a bit depending on whether you are interested in working with the
|
|
native (C/C++) or the Java code.</p>
|
|
<h3 id="ide-support-for-native-code">IDE support for native code</h3>
|
|
<p>There are a few ways to generate IDE configuration for the native
|
|
sources, depending on which IDE to use.</p>
|
|
<h4 id="visual-studio-code">Visual Studio Code</h4>
|
|
<p>The make system can generate a <a
|
|
href="https://code.visualstudio.com">Visual Studio Code</a> workspace
|
|
that has C/C++ source indexing configured correctly, as well as launcher
|
|
targets for tests and the Java launcher. After configuring, a workspace
|
|
for the configuration can be generated using:</p>
|
|
<pre class="shell"><code>make vscode-project</code></pre>
|
|
<p>This creates a file called <code>jdk.code-workspace</code> in the
|
|
build output folder. The full location will be printed after the
|
|
workspace has been generated. To use it, choose
|
|
<code>File -> Open Workspace...</code> in Visual Studio Code.</p>
|
|
<h5 id="alternative-indexers">Alternative indexers</h5>
|
|
<p>The main <code>vscode-project</code> target configures the default
|
|
C++ support in Visual Studio Code. There are also other source indexers
|
|
that can be installed, that may provide additional features. It's
|
|
currently possible to generate configuration for three such indexers, <a
|
|
href="https://clang.llvm.org/extra/clangd/">clangd</a>, <a
|
|
href="https://github.com/MaskRay/ccls/wiki/Visual-Studio-Code">ccls</a>
|
|
and <a href="https://github.com/Andersbakken/rtags">rtags</a>. These can
|
|
be configured by appending the name of the indexer to the make target,
|
|
such as:</p>
|
|
<pre class="shell"><code>make vscode-project-clangd</code></pre>
|
|
<p>Additional instructions for configuring the given indexer will be
|
|
displayed after the workspace has been generated.</p>
|
|
<h4 id="visual-studio">Visual Studio</h4>
|
|
<p>The make system can generate a Visual Studio project for the Hotspot
|
|
native source. After configuring, the project is generated using:</p>
|
|
<pre class="shell"><code>make hotspot-ide-project</code></pre>
|
|
<p>This creates a file named <code>jvm.vcxproj</code> in
|
|
<code>ide\hotspot-visualstudio</code> subfolder of the build output
|
|
folder. The file can be opened in Visual Studio via
|
|
<code>File -> Open -> Project/Solution</code>.</p>
|
|
<h4 id="eclipse-cdt">Eclipse CDT</h4>
|
|
<p>The make system can generate an Eclipse CDT Workspace that enables
|
|
Eclipse indexing for the C and C++ sources throughout the entire
|
|
codebase, as well as registering all common make targets to be runnable
|
|
from the Eclipse explorer. This can be done after configuring by
|
|
running:</p>
|
|
<pre><code>make eclipse-native-env</code></pre>
|
|
<p>After this is run, simply open and import the workspace in Eclipse
|
|
through
|
|
<code>File -> Import -> Projects from Folder or Archive</code> and
|
|
at <code>Import source</code> click on the directory
|
|
<code>ide\eclipse</code>, which can be found in the build output
|
|
folder.</p>
|
|
<p>If this doesn't work, you can also try
|
|
<code>File -> Import -> Existing Projects into Workspace</code>
|
|
instead.</p>
|
|
<p>Setting up an Eclipse Workspace is relatively lightweight compared to
|
|
other supported IDEs, but requires that your CDT installation has Cross
|
|
GCC support enabled at the moment, even if you aren't cross compiling.
|
|
The Visual C++ compiler is, at present, not supported as an indexer.</p>
|
|
<p>If desired, you can instead request make to only include indexing
|
|
support for just the Java Virtual Machine instead of the entire native
|
|
codebase, by running:</p>
|
|
<pre><code>make eclipse-hotspot-env</code></pre>
|
|
<p>If you think your particular Eclipse installation can handle the
|
|
strain, the make system also supports generating a combined Java and
|
|
C/C++ Workspace for Eclipse which can then conveniently switch between
|
|
Java and C/C++ natures during development by running:</p>
|
|
<pre><code>make eclipse-mixed-env</code></pre>
|
|
<p>Do note that this generates all features that come with both Java and
|
|
C/C++ natures.</p>
|
|
<p>Eclipse support in the JDK is relatively new, so do keep in mind that
|
|
not everything may work at the moment. As such, the resulting Workspace
|
|
also has compilation database parsing support enabled, so you can pass
|
|
Eclipse the compile commands file (see below) if all else fails.</p>
|
|
<h4 id="compilation-database">Compilation Database</h4>
|
|
<p>The make system can generate generic native code indexing support in
|
|
the form of a <a
|
|
href="https://clang.llvm.org/docs/JSONCompilationDatabase.html">Compilation
|
|
Database</a> that can be used by many different IDEs and source code
|
|
indexers.</p>
|
|
<pre class="shell"><code>make compile-commands</code></pre>
|
|
<p>It's also possible to generate the Compilation Database for the
|
|
HotSpot source code only, which is a bit faster as it includes less
|
|
information.</p>
|
|
<pre class="shell"><code>make compile-commands-hotspot</code></pre>
|
|
<h3 id="ide-support-for-java-code">IDE support for Java code</h3>
|
|
<h4 id="intellij-idea">IntelliJ IDEA</h4>
|
|
<p>The JDK project has a script that can be used for indexing the
|
|
project with IntelliJ. After configuring and building the JDK, an
|
|
IntelliJ workspace can be generated by running the following command in
|
|
the top-level folder of the cloned repository:</p>
|
|
<pre class="shell"><code>bash bin/idea.sh</code></pre>
|
|
<p>To use it, choose <code>File -> Open...</code> in IntelliJ and
|
|
select the folder where you ran the above script.</p>
|
|
<p>Next, configure the project SDK in IntelliJ. Open
|
|
<code>File -> Project Structure -> Project</code> and select
|
|
<code>build/<config>/images/jdk</code> as the SDK to use.</p>
|
|
<p>In order to run the tests from the IDE, you can use the JTReg plugin.
|
|
Instructions for building and using the plugin can be found <a
|
|
href="https://github.com/openjdk/jtreg/tree/master/plugins/idea">here</a>.</p>
|
|
<h4 id="eclipse">Eclipse</h4>
|
|
<p>Eclipse JDT is a widely used Java IDE and has been for a very long
|
|
time, being a popular choice alongside IntelliJ IDEA for Java
|
|
development. Likewise, the JDK now includes support for developing its
|
|
Java sources with Eclipse, which can be achieved by setting up a Java
|
|
Workspace by running:</p>
|
|
<pre><code>make eclipse-java-env</code></pre>
|
|
<p>After the workspace has been generated you can import it in the same
|
|
way as you would with Eclipse CDT:</p>
|
|
<p>Follow
|
|
<code>File -> Import -> Projects from Folder or Archive</code> and
|
|
select the <code>ide\eclipse</code> directory in the build output folder
|
|
to import the newly created Java Workspace.</p>
|
|
<p>If doing so results in an error, you can also import the JDK via
|
|
<code>File -> Import -> Existing Projects into Workspace</code> as
|
|
a last resort.</p>
|
|
<p>As mentioned above for Eclipse CDT, you can create a combined Java
|
|
and C/C++ Workspace which can conveniently switch between Java and C/C++
|
|
natures during development by running:</p>
|
|
<pre><code>make eclipse-mixed-env</code></pre>
|
|
</body>
|
|
</html>
|