jdk/make/netbeans/README
author mkos
Fri, 21 Feb 2014 17:37:39 +0100
changeset 23962 99b559663ecb
parent 10601 c496d54879f4
permissions -rw-r--r--
8026801: Enhance endpoint addressing Summary: Caching data initialized via TCCL in static context; fix also reviewed by Iaroslav Savytskyi, Alexander Fomin Reviewed-by: ahgross, mgrebac, skoivu
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
Working on OpenJDK using NetBeans
90ce3da70b43 Initial load
duke
parents:
diff changeset
     2
    This note describes how to work on the OpenJDK from NetBeans. We've
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
    provided several NetBeans projects as starting points. Below we'll
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
    describe how to use them, as well as how to create your own.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
Getting Started
90ce3da70b43 Initial load
duke
parents:
diff changeset
     7
    In addition to the source bundle for Open JDK, you'll need to download
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
     8
    and install copies of the JDK and of NetBeans. And if you want to run
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     9
    tests on the JDK (you do want to run tests, right?), you'll need to
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
    install the jtreg test harness.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
    In this note, when pathnames are not fully specified, they should be
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
    interpreted as being relative to the directory containing this README
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
    and the NetBeans projects themselves.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
        The JDK build process is largely make-based, and is not
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
        exceptionally tolerant of pathnames with spaces in them (such as
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
        "Program Files". Please be sure to install everything in a
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
        directories whose paths don't have any spaces!
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
90ce3da70b43 Initial load
duke
parents:
diff changeset
    21
    Downloading the JDK
90ce3da70b43 Initial load
duke
parents:
diff changeset
    22
        You've probably done this a million times. Download and install it
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    23
        from http://www.oracle.com/technetwork/java/javase/overview/index.html
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
    Downloading the OpenJDK sources
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
        Since you're reading this, d you've already downloaded the OpenJDK
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
        source bundle.  Later in this document we'll refer to the location
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
        where you installed the Open JDK sources as *install-dir*.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    30
    Downloading a pre-built, JDK 8
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
        This will be necessary to do builds of some of the projects.  In
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
        general, you want to download and install a pre-built JDK that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
        corresponds to the OpenJDK sources you download.  Building the entire
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
        OpenJDK depends on a few parts of the pre-built JDK.  Get this from
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    35
        http://download.java.net/jdk8/binaries
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    37
        Note: For working on certain projects, like JMX and JConsole, you
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    38
              may find convenient to use a pre-built version of JDK 8 (or
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
              OpenJDK) rather than building your own. This will allow you
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
              to build only that part of the OpenJDK sources which correspond
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    41
              to that project.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    43
    NetBeans 7.0 or later
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    44
        Older versions may also work but are unsupported.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
    jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
        "jtreg" is the test harness for running OpenJDK's regression tests.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
        Get it from http://openjdk.java.net/jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
    Ant
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
       NetBeans comes with ant, but if you use a separately-installed copy
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    52
       please make sure that it is at least version 1.8.1.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
Configuring
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
    Building OpenJDK is hard and complex. No, strike that. While it's not
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
    exactly "easy", we've got it down to *relatively* small set of
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
    properties you need to set.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
    The NetBeans projects provided here share a fair amount of common
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
    structure. They share properties values where it makes sense. Each
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
    project loads properties from these properties files, in this order
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
        ${basedir}/nbproject/private/build.properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
        $HOME/.openjdk/${ant.project.name}-build.properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
        $HOME/.openjdk/build.properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
        ${basedir}/build.properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
    (${basedir} refers to the directory containing a particular NetBeans
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
    project.) The first time a property defined determines value: it is
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
    *not* overridden if it is read from properties files read later. The net
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
    result is that by carefully choosing where to define a property, you can
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
    have it for a specific project, all uses of a specific project (useful
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
    if you work on multiple copies of the OpenJDK sources), all projects, or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
    only projects in a specific sandbox.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
    With that in mind, please set the following properties. Presuming you
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
    want the same values for all your work, set them in
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
    $HOME/.openjdk/build.properties.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
    * bootstrap.jdk
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
        Set to the location where you installed JDK 7.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
    * jtreg.home
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
        Set to the location where you installed jtreg.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
    * make.options
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
        Some of the projects invoke "make", since they compile native code.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
        The make.options property is for passing information about what you
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
        installed where to make.  Change the paths to fit your particular
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
        situation:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
        make.options=\
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    93
            ALT_BOOTDIR=/home/me/bin/jdk1.7.0 \
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
    94
            ALT_JDK_IMPORT_PATH=/home/me/bin/jdk1.8.0 \
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
            OPENJDK=true
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
        The trailing '\' are important, so that make gets the above as a
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
        single set of options.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
        You might want to add additional additional options: see the README
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
        for the project you're using for more information.  And see
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
                 *install-dir*/jdk/make/README-builds.html
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
        to read much more about building the JDK.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
  Windows-specific configuration
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
    First, please note that the entire JDK cannot currently be built on
90ce3da70b43 Initial load
duke
parents:
diff changeset
   107
    Windows platforms.  This will likely limit your ability to build
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
   108
    make-based projects.  See
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
         *install-dir*/jdk/make/README-builds.html
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
    for full information on issues with building on the Windows platform.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
    That said, there are two ways to work with the Windows-required settings
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
    for the Microsoft tools. Either:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
    * Set environment variables values in Windows
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
        Doing so means accessing the System control panel in Windows, and
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
        setting the environment variables there.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   118
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
        By doing so, you can launch NetBeans by double-clicking its icon,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
        and the environment variable values will be available.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
    * Set environment variable values in a shell
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
        Doing so means adding the settings to an init file (e.g. .bashrc,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
        .cshrc, etc.) or a file that you source before running NetBeans. In
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
        this case, you'll have to launch NetBeans from the command line in a
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
        shell in which you've set the environment variables.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
    In either case, the end result should be that the settings are available
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
    to the make-based build process when it runs from within NetBeans.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   130
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
    The make-based builds presumes that you're using cygwin, and expects to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
    find "make" in c:\cygwin\bin\make. If you've installed cygwin elsewhere,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
    set "make" in a properties file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
  Configuring Project Properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
    A note of caution is in order: These are NetBeans *freeform* projects.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
    If you use the NetBeans GUI to examine them, things are likely to not
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
    look "right". Please don't edit them there, please instead use a text
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
    editor.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
  Locale Requirements
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
   142
    To build the OpenJDK sources, be certain that you are using the "C"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
    locale on Unix (R) platforms, or "English (United States)" locale on
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
    Windows.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
90ce3da70b43 Initial load
duke
parents:
diff changeset
   146
Platforms and architectures, oh my!
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
    The Open JDK can be built for a variety of operating system platforms
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
    and hardware architectures. The resulting builds are always placed in a
90ce3da70b43 Initial load
duke
parents:
diff changeset
   149
    directory which contains the platform and architecture as part of the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
    pathname, as in *platform*-*arch*. For example, if you build the jdk
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
    project on a Linux platform running on x86 hardware, the resulting build
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
    will be in:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
    *install-dir*/jdk/build/linux-i586
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
    We've provided support for some platforms and architectures in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
    common/architectures. Add another, if your needs require it.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
Provided NetBeans projects
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
    This section describes the NetBeans projects that help you work on
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
    particular parts of the JDK. While they're largely similar in structure
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
    and should work the way you expect NetBeans projects to work: edit,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
    build, test, etc. But there are some differences. They don't all support
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
    the same targets (e.g., there's nothing to run in jarzip project).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
    Some projects are built by invoking make, since they involve compilation
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
    of native code or other activities that cannot be done by javac. We call
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
    these "make-based", and call all others "ant-based".
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
    They all are configured by way of a build.properties file, which
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
    specifies what subdirectories of the JDK sources they manipulate, what
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
    directories contain their tests, whether they use make or ant, etc.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
    The very first time you open any one of these projects on set of Open
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
    JDK sources, NetBeans will scan the entire set of sources, not just
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
    those for the project you opened. This will take a few minutes, but will
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
    ensure that Go To Type, Go To Source, and so on work as expected. Later,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
    when you open other projects on the same Open JDK sources, there will be
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
    at most a slight delay.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   180
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
    There's a README accompanying each project. Most are text files, which
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
    you can Open in NetBeans, some are HTML files, in which case unless you
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
    enjoy reading raw HTML, you're better off choosing the *View* menu item
90ce3da70b43 Initial load
duke
parents:
diff changeset
   184
    from the context menu, which will display the README in your web
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
    browser.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
    Finally, note that these projects were all created by different people,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
    and are while some attempt has been made to make them look and behave
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
    the same, they are maintained separately and will vary somewhat.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
    The projects currently provided are:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
    jdk (directory "jdk")
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
        A convenient starting point for the other projects, and from which
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
        you can build the entire OpenJDK. Please note that depending on your
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
        hardware, this could take a *very* long time. The results of the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
        build are in *install-dir*/jdk/build/*platform*-*arch*.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
90ce3da70b43 Initial load
duke
parents:
diff changeset
   199
    world (directory "world")
90ce3da70b43 Initial load
duke
parents:
diff changeset
   200
        This project builds both the Hotspot VM and all of JavaSE. Please
90ce3da70b43 Initial load
duke
parents:
diff changeset
   201
        note that pretty much regardless of your hardware, this *will* take
90ce3da70b43 Initial load
duke
parents:
diff changeset
   202
        a long time, and use *lots* of disk space (more than 3GB). The
90ce3da70b43 Initial load
duke
parents:
diff changeset
   203
        results of the build are in
5812
45384c2300ce 6960853: Cleanup makefiles, remove unused vars etc.
ohair
parents: 4341
diff changeset
   204
        *install-dir*/build/*platform*-*arch* and
45384c2300ce 6960853: Cleanup makefiles, remove unused vars etc.
ohair
parents: 4341
diff changeset
   205
        *install-dir*/build/*platform*-*arch*-fastdebug.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   206
90ce3da70b43 Initial load
duke
parents:
diff changeset
   207
        Consult the project's README file for details.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   208
90ce3da70b43 Initial load
duke
parents:
diff changeset
   209
    AWT & Java2d (directory "awt2d")
90ce3da70b43 Initial load
duke
parents:
diff changeset
   210
        For working on AWT and Java2d. Supports running the Font2DTest demo.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   211
90ce3da70b43 Initial load
duke
parents:
diff changeset
   212
        This is a make-based project: In order to build this project, you
90ce3da70b43 Initial load
duke
parents:
diff changeset
   213
        should build the jdk project first, since AWT and Java2d include
90ce3da70b43 Initial load
duke
parents:
diff changeset
   214
        native code.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   215
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
    JConsole (directory "jconsole")
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
        For working on JConsole. Creates ../dist/lib/jconsole.jar. Supports
90ce3da70b43 Initial load
duke
parents:
diff changeset
   218
        running and debugging JConsole.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
        This ant-based project does *not* require that you build the jdk
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
   221
        project first, provided that you use a pre-built version of JDK 7.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
    Java (TM) Management Extensions (JMX(TM)) API (directory "jmx")
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
        For working on JMX source code. Creates ../dist/lib/jmx.jar.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
        This ant-based project does *not* require that you build the jdk
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
   227
        project first, provided that you use a pre-built version of JDK 7.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   228
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
    Jar & Zip (directory "jarzip")
90ce3da70b43 Initial load
duke
parents:
diff changeset
   230
        For working on jar & zip. It builds the zip library (including
90ce3da70b43 Initial load
duke
parents:
diff changeset
   231
        native code), the jar library, and the jar tool. Creates an
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
        executable jar program in ../build/*platform*-*arch*/bin/jar.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   233
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
        This is a make-based project: In order to build this project, you
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
        should build the jdk project first, since AWT and Java2d include
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
        native code.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
    Swing (directory "swing")
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
        For working on Swing. Creates ../dist/lib/swing.jar. Supports
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
        running and debugging the SampleTree demo.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
90ce3da70b43 Initial load
duke
parents:
diff changeset
   242
        This ant-based project does *not* require that you build the jdk
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
   243
        project first, provided that you use a pre-built version of JDK 7.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
    In addition, there are projects for building the compiler, javadoc,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
    and related tools, in the OpenJDK langtools component.  These
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
    projects are separate from those described here, and have their
10601
c496d54879f4 7074264: Switches to packages tree view and adds unit tests to sources
mduigou
parents: 7666
diff changeset
   248
    own set of guidelines and conventions. For more details, see the
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
    README files in make/netbeans in the OpenJDK langtools component.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
Running Tests
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
    We use the jtreg test harness, described more fully at
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
    http://openjdk.java.net/jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
    The OpenJDK tests are in the default Java package, are public classes,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
    and have a "static void main(String[] args)" with which they are
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
    invoked. Some tests are actually shell scripts, which might compile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   258
    code, etc. jtreg is quite flexible.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   259
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
    To run tests for a project, use *Test Project* from NetBeans. From the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   261
    command line, you can invoke "ant jtreg" on any individual project's
90ce3da70b43 Initial load
duke
parents:
diff changeset
   262
    build.xml file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
    In either NetBeans of on the command line, jtreg prints summary output
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
    about the pass/fail nature of each test. An HTML report of the entire
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
    test run is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   267
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
    ../build/*platform*-*arch*/jtreg/*ant-project-name*/JTreport/report.html
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
    In that same JTreport directory are also individual HTML files
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
    summarizing the test environment, test passes and failures, etc.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
    More detail on any individual test is under
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
90ce3da70b43 Initial load
duke
parents:
diff changeset
   275
    ../build/*platform*-*arch*/jtreg/*ant-project-name*/JTwork.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
    For example, details about the awt/Modal/SupportedTest/SupportedTest
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
    test are under the JTwork directory at the same pathname as the test
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
    itself in a ".jtr" file. For example:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
    ../build/*platform*-*arch*/jtreg/*ant-project-name*/JTwork/awt/Modal/SupportedTest/SupportedTest.jtr
90ce3da70b43 Initial load
duke
parents:
diff changeset
   282
90ce3da70b43 Initial load
duke
parents:
diff changeset
   283
    Sometimes you will see that running jtreg has resulted in a failure.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   284
    This does not always mean that a test has an error in it. Jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
   285
    distinguishes between these two cases. There are a number of tests that
90ce3da70b43 Initial load
duke
parents:
diff changeset
   286
    are "ignored", and not run, and these are reported as failures.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   287
90ce3da70b43 Initial load
duke
parents:
diff changeset
   288
    You can run a single test by right clicking on it and choosing *Run
90ce3da70b43 Initial load
duke
parents:
diff changeset
   289
    File* from the context menu. Similarly, you can debug a single test by
90ce3da70b43 Initial load
duke
parents:
diff changeset
   290
    choosing *Debug File*.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   291
90ce3da70b43 Initial load
duke
parents:
diff changeset
   292
Debugging
90ce3da70b43 Initial load
duke
parents:
diff changeset
   293
    Debugging is enabled by default in ant-based projects, as if
90ce3da70b43 Initial load
duke
parents:
diff changeset
   294
    "-g:lines,vars,source" were given. You can alter these settings via
90ce3da70b43 Initial load
duke
parents:
diff changeset
   295
    entries in one of the configuration properties files. For example:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   296
90ce3da70b43 Initial load
duke
parents:
diff changeset
   297
     javac.debug=false
90ce3da70b43 Initial load
duke
parents:
diff changeset
   298
     javac.debuglevel=<debug level options>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   299
90ce3da70b43 Initial load
duke
parents:
diff changeset
   300
    To debug a project or test, use NetBeans in the normal way, with *Debug
90ce3da70b43 Initial load
duke
parents:
diff changeset
   301
    Project* or *Debug File*. Note that not all projects provide a target
90ce3da70b43 Initial load
duke
parents:
diff changeset
   302
    that can be debugged, but tests can be debugged.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   303
90ce3da70b43 Initial load
duke
parents:
diff changeset
   304
Creating Javadoc
90ce3da70b43 Initial load
duke
parents:
diff changeset
   305
    You can create Javadoc for any of the projects: just choose *Generate
90ce3da70b43 Initial load
duke
parents:
diff changeset
   306
    Javadoc for Project* from the NetBeans menu. Your default browser will
90ce3da70b43 Initial load
duke
parents:
diff changeset
   307
    open up, displaying the just-generated javadoc.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   308
90ce3da70b43 Initial load
duke
parents:
diff changeset
   309
    Javadoc gets generated into a separate subdirectory for each project.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   310
    For example, the Jar & Zip project's javadoc gets generated in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   311
90ce3da70b43 Initial load
duke
parents:
diff changeset
   312
    ../build/*platform*-*arch*/jtreg/*ant-project-name*/javadoc/jarzip
90ce3da70b43 Initial load
duke
parents:
diff changeset
   313
90ce3da70b43 Initial load
duke
parents:
diff changeset
   314
Cleaning projects
90ce3da70b43 Initial load
duke
parents:
diff changeset
   315
    Each project can of course be cleaned. Make-based and ant-based projects
90ce3da70b43 Initial load
duke
parents:
diff changeset
   316
    differ a little in what exactly gets cleaned. In both cases, all jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
   317
    results and javadoc are removed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   318
90ce3da70b43 Initial load
duke
parents:
diff changeset
   319
    In ant-based projects, project-specific files as determined by the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   320
    project's build.properties file are removed from the classes and gensrc
90ce3da70b43 Initial load
duke
parents:
diff changeset
   321
    directories that are under ../build/*platform*-*arch*.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   322
90ce3da70b43 Initial load
duke
parents:
diff changeset
   323
    In make-based projects, "make clean" is run in the same directories as
90ce3da70b43 Initial load
duke
parents:
diff changeset
   324
    "make all" is run when building the project.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   325
90ce3da70b43 Initial load
duke
parents:
diff changeset
   326
    Please note that the jdk project is "special" with respect to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   327
    cleaning: in this case, the entire ../build directory is removed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   328
    Similar for the world project.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   329
90ce3da70b43 Initial load
duke
parents:
diff changeset
   330
Creating your own NetBeans project
90ce3da70b43 Initial load
duke
parents:
diff changeset
   331
    The project's we've provided are hopefully a useful starting point, but
90ce3da70b43 Initial load
duke
parents:
diff changeset
   332
    chances are that you want to work on something else. This section will
90ce3da70b43 Initial load
duke
parents:
diff changeset
   333
    describe how to select an existing project, and then adapt it to your
90ce3da70b43 Initial load
duke
parents:
diff changeset
   334
    needs.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   335
90ce3da70b43 Initial load
duke
parents:
diff changeset
   336
  Considerations
90ce3da70b43 Initial load
duke
parents:
diff changeset
   337
    The first consideration is whether or not the code in which you're
90ce3da70b43 Initial load
duke
parents:
diff changeset
   338
    interested needs anything beyond javac and copying of resources to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   339
    build. If so, then you'll need to create a make-based project. If not,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   340
    an ant-based project is possible. See the project descriptions above to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   341
    learn which are make-based, and which are ant-based.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   342
90ce3da70b43 Initial load
duke
parents:
diff changeset
   343
    The second consideration is to consider the files that you'll need. Each
90ce3da70b43 Initial load
duke
parents:
diff changeset
   344
    project is defined by 3 files:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   345
90ce3da70b43 Initial load
duke
parents:
diff changeset
   346
    * build.xml
90ce3da70b43 Initial load
duke
parents:
diff changeset
   347
        This is the ant build script. For a make-based project, they tend to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   348
        have a target for "make clean" and another for "make all", each of
90ce3da70b43 Initial load
duke
parents:
diff changeset
   349
        which invokes "make-run" in the same set of directories. Take a look
90ce3da70b43 Initial load
duke
parents:
diff changeset
   350
        at jarzip/build.xml for an example.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   351
90ce3da70b43 Initial load
duke
parents:
diff changeset
   352
        For an ant-based project, there might be nothing, with all the work
90ce3da70b43 Initial load
duke
parents:
diff changeset
   353
        done via the declaration of properties in the build.properties file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   354
        Take a look at jconsole/build.xml for an example, and notice how it
90ce3da70b43 Initial load
duke
parents:
diff changeset
   355
        overrides the -pre-compile and -post-compile targets that are
90ce3da70b43 Initial load
duke
parents:
diff changeset
   356
        defined in common/shared.xml (where they are defined to do nothing).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   357
90ce3da70b43 Initial load
duke
parents:
diff changeset
   358
    * build.properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
   359
        This file defines the directories (and possibly files) that are
90ce3da70b43 Initial load
duke
parents:
diff changeset
   360
        included in and excluded from. Basically, a file is considered to be
90ce3da70b43 Initial load
duke
parents:
diff changeset
   361
        in a project if it is mentioned in the includes list, or is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   362
        contained under a directory mentioned in that list, *unless* it is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   363
        explicitly excluded or is contained under a directory that is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   364
        excluded. Take a look awt2d/build.properties for an example.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   365
90ce3da70b43 Initial load
duke
parents:
diff changeset
   366
    * nbproject/project.xml
90ce3da70b43 Initial load
duke
parents:
diff changeset
   367
        This file defines a project for NetBeans for a "freeform" project.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   368
        Each declares several entity references, which are used later in the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   369
        project. For an example, see javadoc/nbproject/project.xml, which is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   370
        an ant-based project. Compare that with
90ce3da70b43 Initial load
duke
parents:
diff changeset
   371
        jarzip/nbproject/project.xml, which is make-based. Not much
90ce3da70b43 Initial load
duke
parents:
diff changeset
   372
        difference! That's because while the jarzip project is make-based,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   373
        it does not have any platform-specifc native code. Contrast that
90ce3da70b43 Initial load
duke
parents:
diff changeset
   374
        with awt2d/nbproject/project.xml, which does have native code;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   375
        notice that it uses platform-specific entity references.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   376
90ce3da70b43 Initial load
duke
parents:
diff changeset
   377
    In summary, we recommend exploring the given projects, and choosing one
90ce3da70b43 Initial load
duke
parents:
diff changeset
   378
    that most closely suits our needs.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   379
90ce3da70b43 Initial load
duke
parents:
diff changeset
   380
  Example: A project for working on collections
90ce3da70b43 Initial load
duke
parents:
diff changeset
   381
    Let's create a project to work with on the collections classes. There's no native
90ce3da70b43 Initial load
duke
parents:
diff changeset
   382
    code here, so an ant-based project will do. Therefore, the jconsole
90ce3da70b43 Initial load
duke
parents:
diff changeset
   383
    project is a reasonable project to use as a starting point.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   384
90ce3da70b43 Initial load
duke
parents:
diff changeset
   385
   Clone the existing project
90ce3da70b43 Initial load
duke
parents:
diff changeset
   386
    Make a directory for the collections project next to the existing projects:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   387
90ce3da70b43 Initial load
duke
parents:
diff changeset
   388
        % mkdir -p collections/nbproject
90ce3da70b43 Initial load
duke
parents:
diff changeset
   389
90ce3da70b43 Initial load
duke
parents:
diff changeset
   390
    Copy files from the jconsole project:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   391
90ce3da70b43 Initial load
duke
parents:
diff changeset
   392
        % cp jconsole/build.properties collections
90ce3da70b43 Initial load
duke
parents:
diff changeset
   393
        % cp jconsole/build.xml collections
90ce3da70b43 Initial load
duke
parents:
diff changeset
   394
        % cp jconsole/nbproject/project.xml collections/nbproject
90ce3da70b43 Initial load
duke
parents:
diff changeset
   395
90ce3da70b43 Initial load
duke
parents:
diff changeset
   396
   Change the set of files included in the project
90ce3da70b43 Initial load
duke
parents:
diff changeset
   397
    The collections sources are all under one directory, and we want to include
90ce3da70b43 Initial load
duke
parents:
diff changeset
   398
    them all. The same is true of the tests. So edit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   399
    collections/build.properties so that it contains these lines:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   400
90ce3da70b43 Initial load
duke
parents:
diff changeset
   401
        includes=\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   402
            java/util/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   403
        excludes=\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   404
            java/util/Calendar.java,\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   405
            java/util/jar/,\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   406
            java/util/logging/,\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   407
            java/util/prefs/,\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   408
            java/util/regex/,\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   409
            java/util/spi/,\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   410
            java/util/zip/,\
4341
2af5eacd4b24 6903197: Some java template files need to be renamed to .java.template
ohair
parents: 2
diff changeset
   411
            **/*-XLocales.java.template
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   412
        jtreg.tests=\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   413
            java/util/**/*Collection/ \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   414
            java/util/**/*Map/ \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   415
            java/util/**/*Set/ \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   416
            java/util/**/*List/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   417
90ce3da70b43 Initial load
duke
parents:
diff changeset
   418
    Notice the trailing "/" in some of those pathnames: that tells NetBeans to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   419
    treat the path as a directory and include (or exclude) everything beneath
90ce3da70b43 Initial load
duke
parents:
diff changeset
   420
    it in the hierarchy.  Note also how we include java/util, but then exclude
90ce3da70b43 Initial load
duke
parents:
diff changeset
   421
    several directories under that which are not related to collections.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   422
90ce3da70b43 Initial load
duke
parents:
diff changeset
   423
    The build.xml for collections is about as simple as can be. First, change the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   424
    name of the project:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   425
90ce3da70b43 Initial load
duke
parents:
diff changeset
   426
        <project name="collections" default="build" basedir=".">
90ce3da70b43 Initial load
duke
parents:
diff changeset
   427
90ce3da70b43 Initial load
duke
parents:
diff changeset
   428
    Then remove the -pre-compile target from the build.xml.  Change the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   429
    -post-compile target to create collections.jar without any manifest, and
90ce3da70b43 Initial load
duke
parents:
diff changeset
   430
    to only contain the collections-related classes.  The jar task now looks
90ce3da70b43 Initial load
duke
parents:
diff changeset
   431
    like this:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   432
90ce3da70b43 Initial load
duke
parents:
diff changeset
   433
        <jar destfile="${dist.dir}/lib/collections.jar">
90ce3da70b43 Initial load
duke
parents:
diff changeset
   434
            <fileset dir="${classes.dir}">
90ce3da70b43 Initial load
duke
parents:
diff changeset
   435
                <include name="java/util/*.class"/>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   436
                <exclude name="java/util/Calendar*.class"/>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   437
            </fileset>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   438
        </jar>
90ce3da70b43 Initial load
duke
parents:
diff changeset
   439
90ce3da70b43 Initial load
duke
parents:
diff changeset
   440
    Also, change the clean target to remove collections.jar instead of
90ce3da70b43 Initial load
duke
parents:
diff changeset
   441
    jconsole.jar.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   442
90ce3da70b43 Initial load
duke
parents:
diff changeset
   443
    Now edit project.xml file. NetBeans uses an internal name and a
90ce3da70b43 Initial load
duke
parents:
diff changeset
   444
    user-visible name, both of which should be changed:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   445
90ce3da70b43 Initial load
duke
parents:
diff changeset
   446
        <name>Collections</name> <!-- Customized -->
90ce3da70b43 Initial load
duke
parents:
diff changeset
   447
90ce3da70b43 Initial load
duke
parents:
diff changeset
   448
        <property name="name">collections</property> <!-- Customized -->
90ce3da70b43 Initial load
duke
parents:
diff changeset
   449
90ce3da70b43 Initial load
duke
parents:
diff changeset
   450
    Inside of <ide-actions>, you'll see actions defined for "run" and
90ce3da70b43 Initial load
duke
parents:
diff changeset
   451
    "debug". The Open JDK sources don't include any interesting Collections
90ce3da70b43 Initial load
duke
parents:
diff changeset
   452
    demos, but leave these here for now: Chances are you'll find or create
90ce3da70b43 Initial load
duke
parents:
diff changeset
   453
    some collections app of your own, and want to run and or debug it.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   454
90ce3da70b43 Initial load
duke
parents:
diff changeset
   455
    Now, open the Collections project in NetBeans. You'll find that it operates
90ce3da70b43 Initial load
duke
parents:
diff changeset
   456
    just like all the other projects.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   457
90ce3da70b43 Initial load
duke
parents:
diff changeset
   458
    If/when you want to have this project run a collections demo, change the run
90ce3da70b43 Initial load
duke
parents:
diff changeset
   459
    target in collections/build.xml to invoke it in whatever manner is appropriate
90ce3da70b43 Initial load
duke
parents:
diff changeset
   460
    for the app. From NetBeans, you should be able to run and debug the app,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   461
    including setting breakpoints in collections code.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   462
90ce3da70b43 Initial load
duke
parents:
diff changeset
   463
Appendix 1: Customizations
90ce3da70b43 Initial load
duke
parents:
diff changeset
   464
    There are several ways to customize NetBeans projects. These projects
90ce3da70b43 Initial load
duke
parents:
diff changeset
   465
    share a common structure, based on common/shared.xml and
90ce3da70b43 Initial load
duke
parents:
diff changeset
   466
    common/make.xml. Because of that sharing, some mechanisms described
90ce3da70b43 Initial load
duke
parents:
diff changeset
   467
    below apply to most any project.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   468
90ce3da70b43 Initial load
duke
parents:
diff changeset
   469
    Several properties can be user-defined (and several should not be
90ce3da70b43 Initial load
duke
parents:
diff changeset
   470
    user-defined!). There are different properties files read. Some default
90ce3da70b43 Initial load
duke
parents:
diff changeset
   471
    targets can be overridden.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   472
90ce3da70b43 Initial load
duke
parents:
diff changeset
   473
  Property files
90ce3da70b43 Initial load
duke
parents:
diff changeset
   474
    When projects are started, and when when ant runs (whether from NetBeans
90ce3da70b43 Initial load
duke
parents:
diff changeset
   475
    or the command line), these properties files are loaded in the order
90ce3da70b43 Initial load
duke
parents:
diff changeset
   476
    shown:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   477
90ce3da70b43 Initial load
duke
parents:
diff changeset
   478
        ${basedir}/nbproject/private/build.properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
   479
        $HOME/.openjdk/${ant.project.name}-build.properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
   480
        $HOME/.openjdk/build.properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
   481
        ${basedir}/build.properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
   482
90ce3da70b43 Initial load
duke
parents:
diff changeset
   483
    Recall that with ant, once a property is defined, its value cannot be
90ce3da70b43 Initial load
duke
parents:
diff changeset
   484
    changed, so it's "first one wins".
90ce3da70b43 Initial load
duke
parents:
diff changeset
   485
90ce3da70b43 Initial load
duke
parents:
diff changeset
   486
    To set or change a property for all your projects, put the change into
90ce3da70b43 Initial load
duke
parents:
diff changeset
   487
    $HOME/.openjdk/build.properties. This will affect all projects,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   488
    regardless of how many copies of the Open JDK sources you have
90ce3da70b43 Initial load
duke
parents:
diff changeset
   489
    installed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   490
90ce3da70b43 Initial load
duke
parents:
diff changeset
   491
    Let's say you have 2 copies of the Open JDK sources installed on your
90ce3da70b43 Initial load
duke
parents:
diff changeset
   492
    machine. To set or change a property for only the jconsole projects, but
90ce3da70b43 Initial load
duke
parents:
diff changeset
   493
    for both of them, make the change in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   494
    $HOME/.openjdk/${ant.project.name}-build.properties. If you wanted to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   495
    make the change for only one of them, do it in that project's
90ce3da70b43 Initial load
duke
parents:
diff changeset
   496
    ${basedir}/build.properties or
90ce3da70b43 Initial load
duke
parents:
diff changeset
   497
    ${basedir}/nbproject/private/build.properties.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   498
90ce3da70b43 Initial load
duke
parents:
diff changeset
   499
    Note that the ${basedir}/build.properties file is provided as part of
90ce3da70b43 Initial load
duke
parents:
diff changeset
   500
    the Open JDK sources. If you want to make a change for a particular
90ce3da70b43 Initial load
duke
parents:
diff changeset
   501
    project, you can do so there. To be sure that you don't ever
90ce3da70b43 Initial load
duke
parents:
diff changeset
   502
    accidentally check it in to the Open JDK sources, you might prefer to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   503
    change it in ${basedir}/nbproject/private/build.properties.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   504
90ce3da70b43 Initial load
duke
parents:
diff changeset
   505
  User-definable Properties
90ce3da70b43 Initial load
duke
parents:
diff changeset
   506
    You can provide your own definitions for the properties listed below. We
90ce3da70b43 Initial load
duke
parents:
diff changeset
   507
    don't recommend overriding the definitions of other properties.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   508
90ce3da70b43 Initial load
duke
parents:
diff changeset
   509
    The following two properties should be set before you try to use the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   510
    projects with NetBeans or ant:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   511
90ce3da70b43 Initial load
duke
parents:
diff changeset
   512
    * bootstrap.jdk
90ce3da70b43 Initial load
duke
parents:
diff changeset
   513
        Default: None. Please set this, normally in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   514
        $HOME/.openjdk/build.properties.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   515
90ce3da70b43 Initial load
duke
parents:
diff changeset
   516
    * jtreg.home
90ce3da70b43 Initial load
duke
parents:
diff changeset
   517
        Default: None. Please set this, normally in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   518
        $HOME/.openjdk/build.properties.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   519
90ce3da70b43 Initial load
duke
parents:
diff changeset
   520
    These options are for configuring the behavior of make:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   521
90ce3da70b43 Initial load
duke
parents:
diff changeset
   522
    * use.make
90ce3da70b43 Initial load
duke
parents:
diff changeset
   523
        Default: Not set. Set this, normally in ${basedir}/build.properties,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   524
        for a project which is make-based.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   525
90ce3da70b43 Initial load
duke
parents:
diff changeset
   526
    * make
90ce3da70b43 Initial load
duke
parents:
diff changeset
   527
        Default: The right make for the platform, at the normal location, set
90ce3da70b43 Initial load
duke
parents:
diff changeset
   528
        in *install-dir*/jdk/make/netbeans/common/make.xml
90ce3da70b43 Initial load
duke
parents:
diff changeset
   529
90ce3da70b43 Initial load
duke
parents:
diff changeset
   530
    * make.options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   531
        Default: Empty string. Set this to any options you want to pass to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   532
        make, normally in ${basedir}/build.properties.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   533
90ce3da70b43 Initial load
duke
parents:
diff changeset
   534
    The remaining options are for use at your discretion:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   535
90ce3da70b43 Initial load
duke
parents:
diff changeset
   536
    * javac.options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   537
        Default: -Xlint
90ce3da70b43 Initial load
duke
parents:
diff changeset
   538
90ce3da70b43 Initial load
duke
parents:
diff changeset
   539
    * javac.debug
90ce3da70b43 Initial load
duke
parents:
diff changeset
   540
        Default: true
90ce3da70b43 Initial load
duke
parents:
diff changeset
   541
90ce3da70b43 Initial load
duke
parents:
diff changeset
   542
    * javac.debuglevel
90ce3da70b43 Initial load
duke
parents:
diff changeset
   543
        Default: lines,vars,source
90ce3da70b43 Initial load
duke
parents:
diff changeset
   544
90ce3da70b43 Initial load
duke
parents:
diff changeset
   545
    * javadoc.options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   546
        Default: Empty string.  Some projects will need to set this to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   547
        increase the heap for running javadoc.  For example, see the jconsole
90ce3da70b43 Initial load
duke
parents:
diff changeset
   548
        project.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   549
90ce3da70b43 Initial load
duke
parents:
diff changeset
   550
    * javadoc.packagenames
90ce3da70b43 Initial load
duke
parents:
diff changeset
   551
        Default: "none".  Set this only if your project has packages that
90ce3da70b43 Initial load
duke
parents:
diff changeset
   552
        should be javadoc'd which are outside of those listed in the javadoc
90ce3da70b43 Initial load
duke
parents:
diff changeset
   553
        target's packageset.  See the jconsole project for an example.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   554
90ce3da70b43 Initial load
duke
parents:
diff changeset
   555
    * jtreg.tests
90ce3da70b43 Initial load
duke
parents:
diff changeset
   556
        Default: None. Set this to a list of tests and/or directories
90ce3da70b43 Initial load
duke
parents:
diff changeset
   557
        containing regression tests, normally in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   558
        ${basedir}/build.properties.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   559
90ce3da70b43 Initial load
duke
parents:
diff changeset
   560
    * jtreg.options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   561
        Default: Empty string. See http://openjdk.java.net/jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
   562
90ce3da70b43 Initial load
duke
parents:
diff changeset
   563
    * jtreg.vm.options
90ce3da70b43 Initial load
duke
parents:
diff changeset
   564
        Default: Empty string. See http://openjdk.java.net/jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
   565
90ce3da70b43 Initial load
duke
parents:
diff changeset
   566
    * jtreg.samevm
90ce3da70b43 Initial load
duke
parents:
diff changeset
   567
        Default: false. See http://openjdk.java.net/jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
   568
90ce3da70b43 Initial load
duke
parents:
diff changeset
   569
  User-overridable Targets
90ce3da70b43 Initial load
duke
parents:
diff changeset
   570
    The following targets are provided for your convenience in customizing
90ce3da70b43 Initial load
duke
parents:
diff changeset
   571
    various standard actions of the build process. The default action for
90ce3da70b43 Initial load
duke
parents:
diff changeset
   572
    each one is to do nothing.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   573
90ce3da70b43 Initial load
duke
parents:
diff changeset
   574
    These come in pairs, allowing your scripts to take some action before or
90ce3da70b43 Initial load
duke
parents:
diff changeset
   575
    after a standard action.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   576
90ce3da70b43 Initial load
duke
parents:
diff changeset
   577
    * -pre-init
90ce3da70b43 Initial load
duke
parents:
diff changeset
   578
        Runs before any other initialization has been done.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   579
90ce3da70b43 Initial load
duke
parents:
diff changeset
   580
    * -post-init
90ce3da70b43 Initial load
duke
parents:
diff changeset
   581
        Runs before after all other initialization has been done.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   582
90ce3da70b43 Initial load
duke
parents:
diff changeset
   583
    * -pre-compile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   584
        Runs before compilation, whether via ant or make. Note that in the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   585
        case of make, it is before the -build-make target has run, not after
90ce3da70b43 Initial load
duke
parents:
diff changeset
   586
        each individual make-run has run.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   587
90ce3da70b43 Initial load
duke
parents:
diff changeset
   588
    * -post-compile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   589
        Runs after compilation, whether via ant or make.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   590
90ce3da70b43 Initial load
duke
parents:
diff changeset
   591
    * -pre-jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
   592
        Runs before regression tests are run.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   593
90ce3da70b43 Initial load
duke
parents:
diff changeset
   594
    * -post-jtreg
90ce3da70b43 Initial load
duke
parents:
diff changeset
   595
        Runs before after regression tests are run.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   596
90ce3da70b43 Initial load
duke
parents:
diff changeset
   597
    In a make-based project, you should override these targets to do the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   598
    build and clean actions required of your project.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   599
90ce3da70b43 Initial load
duke
parents:
diff changeset
   600
    * -build-make
90ce3da70b43 Initial load
duke
parents:
diff changeset
   601
    * -clean-make
90ce3da70b43 Initial load
duke
parents:
diff changeset
   602
90ce3da70b43 Initial load
duke
parents:
diff changeset
   603
Known Issues
90ce3da70b43 Initial load
duke
parents:
diff changeset
   604
90ce3da70b43 Initial load
duke
parents:
diff changeset
   605
  Can't run nor debug a single test in the JConsole test
90ce3da70b43 Initial load
duke
parents:
diff changeset
   606
    In most projects, you can run a single test by opening it in the editor,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   607
    and choosing Run File from the context menu.  If you try this with the a
90ce3da70b43 Initial load
duke
parents:
diff changeset
   608
    JConsole test, instead you'll see that *all* tests from *all* projects
90ce3da70b43 Initial load
duke
parents:
diff changeset
   609
    are run.  The workaround is to not try to run a single JConsole test.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   610
    Debugging is similarly problematic (both running and debugging use the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   611
    same underlying infrastructure).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   612
90ce3da70b43 Initial load
duke
parents:
diff changeset
   613
    If you do Run File a JConsole tests, you can always stop them by pressing
90ce3da70b43 Initial load
duke
parents:
diff changeset
   614
    the stop button in the NetBeans output window.  But you'll be surprised to
90ce3da70b43 Initial load
duke
parents:
diff changeset
   615
    learn that they are actually still running in the background.  The only
90ce3da70b43 Initial load
duke
parents:
diff changeset
   616
    way out of this situation is to exit NetBeans.  A few more tests will run,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   617
    but after restarting NetBeans things will be OK.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   618
90ce3da70b43 Initial load
duke
parents:
diff changeset
   619
Attribution
90ce3da70b43 Initial load
duke
parents:
diff changeset
   620
    UNIX is a registered trademark in the United States and other countries,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   621
    exclusively licensed through X/Open Company, Ltd.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   622