1 | Supplemental information for JOSM -- the Java OpenStreetMap Editor
|
---|
2 |
|
---|
3 | =============================================================================
|
---|
4 | I. Install & Launch
|
---|
5 | =============================================================================
|
---|
6 |
|
---|
7 | Installation notes
|
---|
8 | ------------------
|
---|
9 | To run JOSM, you need:
|
---|
10 |
|
---|
11 | * The JOSM .jar file, e.g., josm-tested.jar or josm-latest.jar
|
---|
12 | * Java Runtime Environment (JRE) 8, or later.
|
---|
13 |
|
---|
14 |
|
---|
15 | How to get Java Runtime Environment
|
---|
16 | -----------------------------------
|
---|
17 | You need JRE Version 8, or later.
|
---|
18 |
|
---|
19 | Microsoft Windows and Apple Mac OS X users should visit https://www.java.com
|
---|
20 | and download the latest Java executable for their system.
|
---|
21 |
|
---|
22 | Linux users should visit http://www.oracle.com/technetwork/java/index.html
|
---|
23 | There is a Linux binary installer, which you must execute from a console, or
|
---|
24 | use the mechanism of your distribution's packaging system.
|
---|
25 |
|
---|
26 |
|
---|
27 | How to launch
|
---|
28 | -------------
|
---|
29 | Microsoft Windows users launch by double-clicking on the .jar file.
|
---|
30 | If this does not work, open a command shell and type
|
---|
31 | "java -jar josm-latest.jar" in the directory that holds the file. (Please
|
---|
32 | replace josm-latest.jar with the name of your .jar file, if you aren't using
|
---|
33 | the latest version.)
|
---|
34 |
|
---|
35 | Under Linux, open a shell, go to the file directory and type
|
---|
36 | "java -jar josm-latest.jar" to launch. If this does not work, try to set
|
---|
37 | your JAVA_HOME variable to the java executable location (the root location,
|
---|
38 | not the bin).
|
---|
39 |
|
---|
40 | MacOS X users just click on the .jar file icon.
|
---|
41 |
|
---|
42 | =============================================================================
|
---|
43 | II. Development
|
---|
44 | =============================================================================
|
---|
45 |
|
---|
46 | How to get the source code
|
---|
47 | --------------------------
|
---|
48 | Download it directly from the subversion at
|
---|
49 | https://josm.openstreetmap.de/svn/trunk. To use the command line subversion
|
---|
50 | client, type
|
---|
51 |
|
---|
52 | svn co https://josm.openstreetmap.de/svn/trunk josm
|
---|
53 |
|
---|
54 |
|
---|
55 | Files & directories
|
---|
56 | -------------------
|
---|
57 | This is an overview of the files and directories in the JOSM code repository:
|
---|
58 | - build.xml ant build file (standard way to create a JOSM binary)
|
---|
59 | - CONTRIBUTION list of major code contributors
|
---|
60 | - data/ data files that will be included in the JOSM jar file
|
---|
61 | - fonts/ font files used for map rendering
|
---|
62 | - gpx/ different color gradients for gpx drawing
|
---|
63 | - projection/ projection files
|
---|
64 | - custom-epsg list of projection definitions, auto-generated file created by ant task 'epsg'
|
---|
65 | - security/*.pem certificates that we like to accept for TLS connections, but are missing in the
|
---|
66 | default Java certificate store
|
---|
67 | - validator/ data files used by the JOSM validator
|
---|
68 | - *.cfg files designed for the old tagchecker, still in use
|
---|
69 | - *.mapcss default validation rules for the MapCSS-based tagchecker
|
---|
70 | - opening_hours.js Javascript code to validate opening hours tag
|
---|
71 | (external library, see https://github.com/opening-hours/opening_hours.js)
|
---|
72 | - boundaries.osm OSM file containing boundary data for the states of the earth, including
|
---|
73 | data for right and left-hand traffic
|
---|
74 | - defaultpresets.xml data file for the core tagging presets
|
---|
75 | - help-browser.css CSS file for the help sites (HTML content is downloaded from the website
|
---|
76 | on demand, but displayed inside the programm in a Java web browser component.)
|
---|
77 | - overpass-wizard.js Javascript code to provide a wizard-GUI for creating Overpass requests
|
---|
78 | (external library, see https://github.com/tyrasd/overpass-wizard)
|
---|
79 | - *.lang translation data
|
---|
80 | - *.xsd xml schema files for validation of configuration files
|
---|
81 | - data_nodist/ data files that are useful for development, but not distributed
|
---|
82 | - exif-direction-example.jpg
|
---|
83 | sample image, that contains direction information in the EXIF header
|
---|
84 | (keys: Exif.GPSInfo.GPSImgDirectionRef, Exif.GPSInfo.GPSImgDirection)
|
---|
85 | - filterTests.osm used for unit testing of the filter feature
|
---|
86 | (see test/unit/org/openstreetmap/josm/data/osm/FilterTest.java)
|
---|
87 | - Join_Areas_Tests.osm some examples to test the 'join areas' feature
|
---|
88 | - *.* various other data files used for unit testing and as reference file
|
---|
89 | - projection/ projection files
|
---|
90 | - *.gsb NTv2 grid files for projection support, downloaded by the
|
---|
91 | client on demand (see CONTRIBUTION)
|
---|
92 | - CHENyx06-Distribution.pdf
|
---|
93 | archive of terms of use for the CHENyx06.gsb file
|
---|
94 | - epsg EPSG data file, taken from the proj.4 project
|
---|
95 | (see https://github.com/OSGeo/proj.4/blob/master/nad/epsg)
|
---|
96 | - josm-epsg customizations to the epsg file, used together with the epsg file
|
---|
97 | to generate data/projection/custom-epsg
|
---|
98 |
|
---|
99 | - projection-reference-data.csv
|
---|
100 | reference data for projection tests
|
---|
101 | (see test/unit/org/openstreetmap/josm/data/projection/ProjectionRefTest.java)
|
---|
102 | - projection-regression-test-data.csv
|
---|
103 | regression data for projection tests
|
---|
104 | (see test/unit/org/openstreetmap/josm/data/projection/ProjectionRegressionTest.java)
|
---|
105 | - trans/*.lang translation data for files that are not distributed, but used
|
---|
106 | by the server for localization of the services;
|
---|
107 | currently contains plugin descriptions in order to include translations
|
---|
108 | in the downloaded plugin list
|
---|
109 | - gpl-2.0.txt, gpl-3.0.txt full text of the GNU General Public License
|
---|
110 | - images/ images distributed with the JOSM binary
|
---|
111 | - icons images for the Potlatch 2 style
|
---|
112 | - presets images for the main mappaint style and the internal presets
|
---|
113 | - images_nodist/ images, which are not for distribution, but may be useful later (e.g. high
|
---|
114 | resolution and vector versions)
|
---|
115 | - josm.jnlp Java Web Start launcher file (used on the website for the tested version)
|
---|
116 | - josm-latest.jnlp Java Web Start launcher file (used on the website for the latest version)
|
---|
117 | - LICENSE the JOSM license terms
|
---|
118 | - linux/ files useful for Linux distributions, including Appdata files, .desktop
|
---|
119 | files, Debian/Ubuntu scripts, man pages, icons, etc.
|
---|
120 | - macosx/ files needed to create the MacOS X package
|
---|
121 | - netbeans/ preconfigured Netbeans project
|
---|
122 | - patches/ patches for external libraries used in JOSM (see below)
|
---|
123 | - README this file
|
---|
124 | - resources/ resource files that will be included in the JOSM jar file
|
---|
125 | - scripts/ various scripts used by JOSM developers
|
---|
126 | - BuildProjectionDefinitions.java
|
---|
127 | called from the ant build file to combine the files epsg and josm-epsg
|
---|
128 | to create the custom-epsg file for distribution
|
---|
129 | - geticons.pl tool to find all used icons and allows deleting unused icons
|
---|
130 | searches also for images with incompatible svg code
|
---|
131 | - optimize-images short script to decrease size of PNG images
|
---|
132 | - presets_lang.pl helper script to update language links in presets file
|
---|
133 | - since_xxx.py developer tool to replace "@since xxx" in Javadoc by the upcoming revision number
|
---|
134 | - SyncEditorLayerIndex.groovy
|
---|
135 | script to compare and analyse the differences of the editor layer index and the
|
---|
136 | JOSM imagery list (see https://josm.openstreetmap.de/wiki/ImageryCompare)
|
---|
137 | - TagInfoExtract.groovy extracts tag information for the taginfo project
|
---|
138 | - src/ the source code of the application
|
---|
139 | - start.html HTML page to run the applet version of JOSM
|
---|
140 | - styles/ map styles included in JOSM
|
---|
141 | - sytles_nodist/ files needed for map style maintenance
|
---|
142 | - potlatch2/README infos on how to update the Potlatch 2 style from upstream sources
|
---|
143 | - test/ automated software tests
|
---|
144 | - data/ resources used for some tests
|
---|
145 | - functional/ functional tests (source code)
|
---|
146 | - lib/ libraries needed for (some of) the tests, including JUnit
|
---|
147 | - performance/ performance tests (source code)
|
---|
148 | - unit/ unit tests (source code)
|
---|
149 | - tools/ libraries and tools that help in the development process
|
---|
150 | - animal-sniffer-ant-tasks.jar
|
---|
151 | used to build and check code signatures to ensure plugins binary compatibility
|
---|
152 | - appbundler-1.0ea.jar used to build Mac OS X package
|
---|
153 | - checkstyle/ libs and config files for checkstyle (automatically detects code style
|
---|
154 | problems in source code); can be launched as an ant target in build.xml
|
---|
155 | - commons-cli-1.3.1.jar dependency of Groovy Ant task
|
---|
156 | - error_prone_ant.jar used to detect code errors during compilation
|
---|
157 | - spotbugs/ libs and config files for spotbugs (automatically detects common bugs and potential
|
---|
158 | problems in source code); can be launched as an ant target in build.xml
|
---|
159 | - groovy-all.jar used for some unit tests and various scripts
|
---|
160 | - jacocoant.jar used to include coverage data into JUnit test reports
|
---|
161 | - japicc/ used to generate a compatibility report between optimized jar and normal one
|
---|
162 | - javacc.jar used in the build process to generate some .java files from a javacc source file
|
---|
163 | (src/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSParser.jj)
|
---|
164 | - proguard.jar optimize final binary jar - see build.xml (not used in production so far)
|
---|
165 | - xmltask.jar used to edit XML files from Ant for the OSX package
|
---|
166 | - windows/ files needed to create the Windows installer
|
---|
167 |
|
---|
168 | The 'patches' directory
|
---|
169 | -----------------------
|
---|
170 | Some libraries that JOSM depends on, are patched for various reasons. The
|
---|
171 | files in the patches directory can be used to roll back these customizations.
|
---|
172 | This is useful in order to
|
---|
173 | * inspect the changes
|
---|
174 | * update to a newer version of the library but keep the modifications
|
---|
175 |
|
---|
176 | You can use 'quilt' to manage the patches. E.g. the following command applies all of them:
|
---|
177 |
|
---|
178 | $ quilt push -a
|
---|
179 |
|
---|
180 | Of course, it is also possible to apply the patch files manually one by one.
|
---|
181 |
|
---|
182 | Third party libraries
|
---|
183 | ---------------------
|
---|
184 | There are some third party libraries which are directly included in the source code tree, in particular:
|
---|
185 |
|
---|
186 | * jmapviewer: Java component to browse a TMS map
|
---|
187 | src/org/openstreetmap/gui (svn external)
|
---|
188 | -> http://svn.openstreetmap.org/applications/viewer/jmapviewer/
|
---|
189 | * Apache commons compress: Support for bzip2 compression when opening files
|
---|
190 | src/org/apache/commons/compress/compressors (svn external)
|
---|
191 | -> https://github.com/apache/commons-compress
|
---|
192 | * Apache commons validator: Improved validator routines
|
---|
193 | src/org/openstreetmap/josm/data/validation/routines
|
---|
194 | -> http://commons.apache.org/proper/commons-validator
|
---|
195 | * SVG Salamander: Support for SVG image format
|
---|
196 | src/com/kitfox/svg
|
---|
197 | -> https://github.com/blackears/svgSalamander
|
---|
198 | * Metadata Extractor: Read EXIF Metadata of photos
|
---|
199 | src/com/drew
|
---|
200 | -> https://github.com/drewnoakes/metadata-extractor
|
---|
201 | * Signpost: OAuth library
|
---|
202 | src/oauth, src/com/google
|
---|
203 | -> https://github.com/mttkay/signpost
|
---|
204 | * GNU getopt Java port: Command line argument processing library
|
---|
205 | src/gnu/getopt
|
---|
206 | -> https://github.com/arenn/java-getopt
|
---|
207 | * MultiSplitPane: Small lib for GUI layout management
|
---|
208 | src/org/openstreetmap/josm/gui/MultiSplitLayout.java, MultiSplitPane.java
|
---|
209 | -> https://github.com/floscher/multi-split
|
---|
210 | -> https://community.oracle.com/docs/DOC-983539
|
---|
211 | * swinghelper: Class CheckThreadViolationRepaintManager to find classpath violations
|
---|
212 | src/org/jdesktop/swinghelper/debug/CheckThreadViolationRepaintManager.java
|
---|
213 | -> https://github.com/floscher/swinghelper
|
---|
214 | * xz extractor
|
---|
215 | src/org/tukaani
|
---|
216 | -> https://tukaani.org/xz/java.html
|
---|