2
|
1 |
Working on AWT and Java2D code with NetBeans
|
|
2 |
|
|
3 |
This project includes most of Java2D and AWT-related files,
|
|
4 |
allows easy navigation and builds from within NetBeans.
|
|
5 |
|
|
6 |
Since both AWT and Java2D have lots of native code, this
|
|
7 |
project uses "make" targets for building.
|
|
8 |
|
|
9 |
Unfortunately currently this project doesn't support
|
|
10 |
working with native code. Meaning, there is no navigation, code
|
|
11 |
completion, refactoring, etc.
|
|
12 |
In the future we will provide native code support.
|
|
13 |
|
|
14 |
You can certainly install the C/C++ pack for NetBeans 6.0
|
|
15 |
once it becomes available, or use any other editor for
|
|
16 |
working with C/C++ files.
|
|
17 |
|
|
18 |
In order to use this project from within NetBeans you will have
|
|
19 |
to perform a full jdk build first.
|
|
20 |
|
|
21 |
Here are the steps:
|
|
22 |
1. setup your jdk build environment as described in
|
|
23 |
other documents (see build documentation)
|
|
24 |
|
|
25 |
2. perform a full jdk build (preferably a FASTDEBUG build,
|
|
26 |
as it simplifies the debugging - the classes and object files
|
|
27 |
will be built with the debug information).
|
|
28 |
You only need to build jdk's "all" target:
|
|
29 |
#> cd jdk/make
|
|
30 |
#> make all > build.log 2>&1
|
|
31 |
|
|
32 |
3. set "make" and "make.options" properties in your
|
|
33 |
~/.openjdk/build.properties file (see the main README
|
|
34 |
file for more information on property files)
|
|
35 |
to set up the environment in NetBeans.
|
|
36 |
|
|
37 |
To get a list of variables you most likely will need to override
|
|
38 |
to make the the build work in NetBeans, you can do something like this
|
|
39 |
(on Windows):
|
|
40 |
#>env | grep ALT
|
|
41 |
ALT_JDK_IMPORT_PATH=c:/devtools/java/jdk1.7.0
|
|
42 |
ALT_BOOTDIR=c:/DevTools/java/jdk1.6.0
|
|
43 |
|
|
44 |
If your build is a FASTDEBUG build, don't forget
|
|
45 |
to set FASTDEBUG=true in the property file as well so that what you
|
|
46 |
have built from the terminal matches what will be built from NetBeans.
|
|
47 |
|
|
48 |
Set "make.options" in your build.properties
|
|
49 |
accordingly:
|
|
50 |
make.options=\
|
|
51 |
ALT_JDK_IMPORT_PATH=c:/devtools/java/jdk1.7.0 \
|
|
52 |
ALT_BOOTDIR=c:/DevTools/java/jdk1.6.0 \
|
|
53 |
FASTDEBUG=true
|
|
54 |
make=c:/devtools/cygwin/bin/make
|
|
55 |
|
|
56 |
4. Windows only: make sure you either call vcvars32.bat
|
|
57 |
file which sets the compiler environment
|
|
58 |
(typically located in <YourVisualStudioInstallDir>/VC7/bin)
|
|
59 |
and start NetBeans from the same terminal,
|
|
60 |
or make Visual Studio register its environment
|
|
61 |
variables globally.
|
|
62 |
(When building on 64-bit Windows platform, use setenv.cmd
|
|
63 |
from Platform SDK instead of vcvars32, as described in the
|
|
64 |
build documentation)
|
|
65 |
|
|
66 |
5. Now you can launch NetBeans
|
|
67 |
|
|
68 |
Notes on building the project from NetBeans
|
|
69 |
|
|
70 |
If you work only with Java files, you can compile them
|
|
71 |
with "Compile Single File" target ("F9" by default), the ant build
|
|
72 |
will compile the class files into the correct directory automatically.
|
|
73 |
|
|
74 |
However, if you touched any of C/C++ files,
|
|
75 |
you will need to use "build main project" ("F11") which launches
|
|
76 |
"make" on a set of directories.
|
|
77 |
|
|
78 |
Same goes if you touched a Java file which has native
|
|
79 |
methods. You will need to run the build so that
|
|
80 |
"javah" can generate the JNI header files used by
|
|
81 |
the native code.
|
|
82 |
|
|
83 |
Demos
|
|
84 |
|
|
85 |
The default run target for this project is Font2DTest,
|
|
86 |
which is launched with the runtime you built.
|
|
87 |
|
|
88 |
You can also start other demos by selecting a demo
|
|
89 |
in the Project or Files view and choosing "Run" from
|
|
90 |
the menu.
|
|
91 |
|
|
92 |
In particular, there is a J2DBench demo project,
|
|
93 |
which is a Java2D benchmark. To run it,
|
|
94 |
select java2d.J2DBench/build.xml node in the
|
|
95 |
"Projects" explorer and execute "Run" target.
|
|
96 |
For more information on this benchmark, see
|
|
97 |
the project's README file in the "Files" view.
|
|
98 |
|
|
99 |
Notes on using CND (C/C++ pack) with this project and NetBeans.
|
|
100 |
|
|
101 |
As mentioned above currently a project for working with native code is not
|
|
102 |
provided. However, you can set it up by yourself if you have
|
|
103 |
access to CND pack for NetBeans 6.0.
|
|
104 |
|
|
105 |
First, install CND as described here (this is a page for CND 5.5,
|
|
106 |
there likely will be one for 6.0 as well):
|
|
107 |
http://www.netbeans.org/community/releases/55/cnd-install.html
|
|
108 |
and make sure everyting works it works.
|
|
109 |
|
|
110 |
Then, create a new C/C++ project of "from existing code" type (see page
|
|
111 |
mentioned above for examples). The project should be located in the same
|
|
112 |
directoryas this project is - on the same level. Call it something like
|
|
113 |
"awt2d-native-${platform}-${arch}". So, for example, you may have
|
|
114 |
jdk/make/netbeans/awt2d
|
|
115 |
jdk/make/netbeans/awt2d-native-windows-i586
|
|
116 |
|
|
117 |
Specify the top level Makefile (jdk/make/Makefile), even though
|
|
118 |
you will not be using, as the Java awt2d project is set up
|
|
119 |
for building the workspace (thus make sure it's the default project,
|
|
120 |
so when you hit "Build Project" it's awt2d one that's chosen).
|
|
121 |
|
|
122 |
The most important thing is to specify the directories which will
|
|
123 |
be included into this project, the defines, and the directories for
|
|
124 |
include files.
|
|
125 |
This will enable code completion and limited navigation.
|
|
126 |
|
|
127 |
Using the project wizard, select the source directories you're interested in.
|
|
128 |
|
|
129 |
For example,
|
|
130 |
src/share/native/sun/java2d
|
|
131 |
src/windows/native/sun/java2d
|
|
132 |
....
|
|
133 |
(this will recursively include the subdirectories)
|
|
134 |
|
|
135 |
Then set the list of the includes required by CND to enable code assistance.
|
|
136 |
You can get a complete list of include directories by looking at your
|
|
137 |
build log file and checking what directories are included with "-I" when
|
|
138 |
the files you're interesed in are built (you can probably devise some
|
|
139 |
script to generate the list of include files relative to the native
|
|
140 |
cnd project directory, and the list of defines passed to the compiler)
|
|
141 |
|
|
142 |
For example, on Windows x86, you might have something like this
|
|
143 |
(a somewhat complete list of awt and 2d native directories on windows):
|
|
144 |
|
|
145 |
../../src/share/javavm/export;
|
|
146 |
../../src/share/native/common;
|
|
147 |
../../src/share/native/sun/awt/debug;
|
|
148 |
../../src/share/native/sun/awt/image/cvutils;
|
|
149 |
../../src/share/native/sun/awt/image;
|
|
150 |
../../src/share/native/sun/awt/medialib;
|
|
151 |
../../src/share/native/sun/awt;
|
|
152 |
../../src/share/native/sun/font/bidi;
|
|
153 |
../../src/share/native/sun/font/layout;
|
|
154 |
../../src/share/native/sun/font;
|
|
155 |
../../src/share/native/sun/java2d/cmm/lcms;
|
|
156 |
../../src/share/native/sun/java2d/cmm;
|
|
157 |
../../src/share/native/sun/java2d/loops;
|
|
158 |
../../src/share/native/sun/java2d/opengl;
|
|
159 |
../../src/share/native/sun/java2d/pipe;
|
|
160 |
../../src/share/native/sun/java2d;
|
|
161 |
../../src/windows/javavm/export;
|
|
162 |
../../src/windows/native/common;
|
|
163 |
../../src/windows/native/sun/awt;
|
|
164 |
../../src/windows/native/sun/java2d/d3d;
|
|
165 |
../../src/windows/native/sun/java2d/opengl;
|
|
166 |
../../src/windows/native/sun/java2d/windows;
|
|
167 |
../../src/windows/native/sun/java2d;
|
|
168 |
../../src/windows/native/sun/windows;
|
|
169 |
../../build/windows-i586/tmp/sun/sun.awt/awt/CClassHeaders;
|
|
170 |
../../build/windows-i586/tmp/sun/sun.awt/awt/obj;
|
|
171 |
../../build/windows-i586/tmp/sun/sun.awt/awt/obj_gO;
|
|
172 |
../../build/windows-i586/tmp/sun/sun.awt/jpeg/CClassHeaders;
|
|
173 |
../../build/windows-i586/tmp/sun/sun.awt/splashscreen/CClassHeaders;
|
|
174 |
../../build/windows-i586/tmp/sun/sun.font/fontmanager/CClassHeaders;
|
|
175 |
../../build/windows-i586/tmp/sun/sun.font/t2k/CClassHeaders;
|
|
176 |
C:/devtools/VS2003/SDK/v1.1/include;
|
|
177 |
C:/devtools/VS2003/VC7/ATLMFC/INCLUDE;
|
|
178 |
C:/devtools/VS2003/VC7/INCLUDE;
|
|
179 |
C:/devtools/VS2003/VC7/PlatformSDK/include;
|
|
180 |
C:/devtools/VS2003/VC7/PlatformSDK/include/prerelease;
|
|
181 |
|
|
182 |
(you can format this into a single line with ';' delimiters and paste it
|
|
183 |
into the text field instead of entering them one by one)
|
|
184 |
|
|
185 |
Note that most paths are relative to the native project directory -
|
|
186 |
this helps if you decide to relocate the workspace later. The ones that
|
|
187 |
aren't relative are paths to external include directories, like those
|
19870
|
188 |
of the Platform SDK.
|
2
|
189 |
On Unix platforms these may be directories like /usr/include.
|
|
190 |
|
|
191 |
The parser must know some defines to correctly parse the source files,
|
|
192 |
these can also be obtained from the log file. For example, on Windows
|
|
193 |
x86 with debugging enabled, the defines would be something like this:
|
|
194 |
D3D_OVERLOADS; UNICODE; _UNICODE; WIN32; IAL; _LITTLE_ENDIAN; WIN32; _X86_;
|
|
195 |
x86; WIN32_LEAN_AND_MEAN; INTERNAL_BUILD; JDK_MAJOR_VERSION='"1"';
|
|
196 |
JDK_MINOR_VERSION='"7"'; RELEASE=1.7.0-internal; DEBUG="true"
|
|
197 |
|
|
198 |
(again, format it into a single line with '; ' delimiter - note the
|
|
199 |
space after ';' - and paste into the corresponding text field)
|
|
200 |
|
|
201 |
Note that the list of include directories will be different on different
|
|
202 |
platforms and architectures - consult you build log file.
|
|
203 |
|
|
204 |
After the project is created a loaded, you may want to check the list
|
|
205 |
of include files which weren't found (right-click on the native
|
|
206 |
project root in Projects exprorer, and select "View failed #include Directives"
|
|
207 |
from the popup menu. Update the inlcude directories list accordingly.
|
|
208 |
|
|
209 |
You can later create a different configuration for non-debug build,
|
|
210 |
just make a copy of your current configuration - call it ${arch}-debug
|
|
211 |
(in the native project's Properties dialog) and remove "DEBUG=true" from
|
|
212 |
the list of defines.
|
|
213 |
|
|
214 |
Note that with both Java and native projects opened the default
|
|
215 |
heap size NetBeans starts with might not be sufficient for comfortable work,
|
|
216 |
so you may need to increase it. You can do it either from the command line
|
|
217 |
or by editing your ~/.netbeans/dev/etc/netbeans.conf file and adding
|
|
218 |
something like this:
|
|
219 |
-J-Xms312m -J-Xmx512m -J-XX:PermSize=128m -J-XX:MaxPermSize=200m
|
|
220 |
to netbeans_default_options property.
|