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