|
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_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 |
|
70 Notes 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 |
|
85 Demos |
|
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 |
|
101 Notes 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. |