josmeditor's Diary

Recent diary entries

Hi all,

Due to the planned removal of the JavaScript engine Nashorn from Java, we have to take action. Nashorn was in use for three features of JOSM core:

  1. opening_hours validator based on opening_hours.js
  2. overpass-wizard (in download dialog)
  3. JavaScript API of JOSM configuration XML files

Item 1 has been resolved by migrating to OpeningHoursParser written by Simon Poole for Vespucci.

For item 2, we plan to use a hosted service (likely on the JOSM server) for turning user input into Overpass Queries.

For item 3, we don’t see a viable alternative. We plan to remove this feature with the next JOSM release unless someone steps up with a killer-user-case and migration plan.

Please share your feedback, if any, on the josm-dev mailing list.

Thanks for reading and happy mapping,

Simon (simon04) and Vincent (Don-vip) for the JOSM team

don-vip speaking, originally from JOSM Twitter account:

I read many incorrect statements about the new Java license from Oracle on the German OSM forum mentioned in weeklyOSM 458. Let’s see in detail what all is this about.

First of all, a little bit of history/terminology. Java was created in 1995 by Sun. We call “Java” both the programming language and the platform that runs JOSM (JRE = Java Runtime Environment). Several platforms, from multiple vendors, exist.

The JDK (Java Development Kit) contains the JRE but also developer tools (mainly, the java compiler). In 2006, around the release of Java 6, Sun announced its intention to open-source Java in a new project: OpenJDK.

OpenJDK is badly named, like OpenStreetMap. We don’t only map streets… Well OpenJDK project does not only concern the JDK but the whole Java platform (language, spec, tools, APIs, etc.). @speakjava explains it nicely.

Sun open sourced many things from Java into the OpenJDK project, but not all things. In particular, Windows/Mac installers and deployment technologies like WebStart were not open sourced (we don’t know why).

It means OpenJDK is only a “source code” project. Building it is very complex, and nobody took the pain to distribute free binaries for Windows & Mac. Only Red Hat did it for Linux in the IcedTea project. If you have 100% free Java on Linux, it’s thank to them.

In 2009 Oracle bought Sun. They didn’t change things radically until recently. So even today most of Windows and Mac users are still using proprietary JRE binaries from Oracle, that are built upon open source project OpenJDK.

Oracle made a very good job in releasing Java 8 in 2014, then Java 9 in 2017. We even collaborated with them in mutual good faith. Then, all hell broke loose.

They changed the Java release cycle to to a fixed 6 months schedule (2 versions per year). We are now at Java 12 (which is by the way the most unimpressive version of Java: nothing new in it).

They changed the licence of the Oracle JDK: basically if you are an enterprise and want to use Oracle binaries, you have to pay. They introduced the notion of Long Term Support versions (LTS). Java 8 is an LTS, Java 11 too. For more details about “release train” and licencing, see the excellent blog post by @hendrikEbbers.

And concerning the Java 8 binaries that almost everyone uses on Windows and Mac, they changed the licence to a free for personal desktop use, through at least the end of 2020.

These changes came from nowhere and the Java community was not prepared for it. So it required some time until we can get to a free replacement to the Oracle binaries on Windows and Mac, and that’s why we didn’t advise anyone to switch to something else yet.

But we’re almost there thanks to @adoptopenjdk! This community-based project offers free downloads of OpenJDK on all platforms!

We’re just waiting for the availability of a few enhancements of the AdoptOpenJDK installer before advising everyone to switch.

1) The inclusion of JavaFX (another technology abandoned by Oracle and now maintained by @GluonHQ), which is used by JOSM to play MP3 files, and by some plugins like Microsoft StreetSide.

2) The inclusion of IcedTea-Web (the free implementation of Java WebStart which has also been abandoned by Oracle). We can thank Red Hat (again) for this project, plus also @karakun and AdoptOpenJDK for their work.

3) An auto-update feature to make sure everyone can automatically get security updates.

Once all these issues are resolved (hopefully long before end of 2020) we’ll ask everyone to switch to AdoptOpenJDK. Until now, even if we despise Oracle for all of this, we still advise to keep the current Oracle JRE, at least for the automatic security updates.

This is also why we still target Java 8 as a minimum. Once everyone is able to run JOSM using AdopOpenJDK binaries, we’ll likely switch to Java 11! Which is by the way now maintained by Red Hat and not by Oracle :)

JOSM 13996 released

Posted by josmeditor on 1 July 2018 in English (English).

The 18.06 version (13996) is out!

Notable changes in this release:

For more details about the other changes and bugfixes, see the summarized changelog.

Happy mapping!

We recently added Korean translation thanks to the precious work of Korean contributors, making JOSM available in 36 languages! But does it mean JOSM supports all major languages of the world? Clearly not: For large regions (Middle-East, North Africa, Balkans…), JOSM has not been translated yet in any official language.

If we check the top 20 languages by the number of native speakers, only 11 are supported: This makes Hindi, Arabic and Bengali the most important languages to add.

We need help for this! You can contribute to translations on Launchpad, or share the news!

We’re very proud to announce that JOSM 13791 is now available in Korean!

JOSM in Korean

Want to help to translate your favorite editor into your native language? The procedure is explained here and the translation is done on Launchpad.

Thanks a lot to everyone contributing to the JOSM translations!

Today we reached the 10,000th commit in JOSM source code repository, suddenly adding a 5th digit to our version number!

This symbolic milestone occurs a few weeks after the 10th birthday of JOSM 1.0, which was released on January 22nd, 2006 (yep, back in time, JOSM used real version numbers. The current versioning scheme was introduced in early 2008 for practical reasons). If you’re curious about how many versions of JOSM have been released since, check out the release log.

To celebrate these two events, we have “rebuilt” JOSM development history by using a nice open source tool (SonarQube). You can check the results here.

This allows to see how JOSM evolved over time. For example, how the source code increased: Lines of code Lines of code

Each dot represents a tested version.

It does not only compute code volumetry, we use it mainly to measure code quality. Here are some interesting charts showing how JOSM evolves behind the scene, as we constantly improve code quality and unit test coverage:

Duplicated lines Duplicated lines (%)

Code coverage Code coverage (%)

Public documented API (%) Public documented API (%)

Technical Debt (days) Technical Debt (days), as computed by SonarQube

Unit tests Number of unit tests

As you can see, we’re putting a lot of effort to increase unit tests coverage lately. JOSM is tested automatically after each modification by our continuous integration system (powered by another great open source software: Jenkins). We’re testing several Java versions (JDK 7, 8, and early access snapshots of JDK 9).

Remember we will soon drop support for Java 7 and begin to use new features of Java 8, that will be the next big step in JOSM development!

February release delayed

Posted by josmeditor on 24 February 2015 in English (English).

The February release is delayed a few days until we clarify a certificate problem with OpenStreetMap Foundation.

What could help us: if you are a StartSSL customer (or know one), please ask them when they intend to be included in Java list of Root Certificate Authorities.

The goal is to be able to keep HTTPS access to the OSM API and website, for old and new versions of JOSM.

JOSM 7995 released

Posted by josmeditor on 2 February 2015 in English (English).

The January version of JOSM is now available as version 7995 :)

This version is mainly a bugfix release, here are the release notes for visible enhancements:

Notable changes

major enhancements

  • Show photo direction arrow for thumbnail

minor enhancements

  • Presets/Map styles/Validator:
    • complete review across the whole preset menu, to make icons and supported geometries of preset/mappaint/validator/wiki more consistent
    • add to preset note, fixme and description, construction, bicycle_repair_station, highway=escape, brand=Eni,Socar
    • fix validator for motorcycle_parking, sport withbuilding, aeroway=terminal, conifer, natural=peak + sport=climbing, place_of_worship without religion, noname=yes, multipolygons and boundaries, levels, unnamed roundabout
    • fix aerialway, route, facilities, place, natural, associated street relations, shop, man_made, historic and bridge, power, highway=traffic_signal + crossing=no, farm_auxiliary, barn and farm, protect_class, water, transport, pharmacy
  • Size check for source comments
  • Proper selection state in selection dialog
  • Usability for history dialog

Summarized changelog

Complete changelog

Milestone view (need login)

Happy mapping,

The JOSM team

JOSM 7906 released

Posted by josmeditor on 29 December 2014 in English (English).

The December version of JOSM is now available as version 7906 :)

This version contains a lot of bugfixes, here are the release notes for visible enhancements:

Notable changes

major enhancements

  • Two new languages: Asturian and Khmer
  • Experimental new TMS tile cache structure, to enable with advanced property tms.newcache=true
  • JOSM directories:
    • Java system properties josm.pref, josm.cache and josm.userdata to set preferences, cache, and user data (including plugins) directories
    • Windows: change cache folder to %LOCALAPPDATA%/JOSM on Windows Vista and later
    • OS X: change cache folder to ~/Library/Caches/JOSM, preferences to ~/Library/Preferences/JOSM, user data to ~/Library/JOSM

minor enhancements

  • Presets/Map styles:
    • Changed color of highway=track from green to brown for better visibility on aerial imagery background (in forests) and distinction from paths and steps
    • Added advertising=column/billboard, highway=traffic_mirror, leisure=picnic_table
    • Updated shop=bicycle
    • Refined icons for combinations of highway=traffic_signals and crossing=*
    • Drop mappaint support of building=entrance, amenity=emergency_phone, highway=unsurfaced
    • Icon and geometry consistency between default presets and map paint style for barrier=*, highway waypoints
  • Validator:
    • Added warnings for tags on isolated nodes, which should be part of a way
    • Added warnings for footway
    • Added warnings for addr:street together with highway, noname=yes together with name, alternative name without name, destination on a non oneway, amenity=yes, place=yes, levels, place_name, non integer lanes
  • Notes
    • Add note sorting options
    • Display note IDs
  • Ability to copy path of selected geotagged image

Summarized changelog

Complete changelog

Milestone view (need login)

Happy mapping and happy new year,

The JOSM team

The November version of JOSM is now available (a bit late) as version 7777 :)

You probably have already seen that we have now a great new logo! It has been designed by Ilya Palikov (Diamond00744), who won our logo contest (see results here).

Thanks again to everyone who participated to this contest, it has been a very difficult choice for us, especially during the final phase where we had to choose between two brilliant designs.

It took us several iterations before reaching the final winning design, Ilya has made a nice “making-of” on DeviantArt: Apart of the new logo, here are the release notes:

Notable changes

major enhancements

  • New logo
  • Ability to download/upload Notes

minor enhancements

  • Menu icons reduced to 16x16 pixels by default
  • Autocomplete: remember user input and prefer recently entered strings
  • Removed history toggle dialog in favour of a new history button in selection toggle dialog
  • Display changeset discussions (comments) in changeset dialog
  • Presets/Map styles/Validator:
    • Added man_made=bridge/bunker_silo, power=pole with transformer, shop=music/funeral_director/wine/art/tatoo/farm, sidewalk, boundary=protected_area, width, monitoring:groundwater
    • New icons for man_made=breakwater, barrier=spikes, landuse=orchard
    • Updated style and validator warning for parking
    • Icon unification (same icon for preset and map paint style) for some sport, generator:source, landuse, natural and amenity=drinking_water icons
    • Drop support of restriction, landuse and some natural on nodes
  • Remember recently used tags across sessions by default
  • Allow to sum all numeric values as conflict resolution of capacity, capacity:* and step_count

Summarized changelog

Complete changelog

Milestone view (need login)


The JOSM team