yFiles for Java
Release Notes

Hide Description
Open in yEd LiveDownload

Next-generation yFiles for Java (Swing)

Java 8
or higher

Beginning with version 3.0, the yFiles for Java (Swing) diagramming library features a brand-new, modern API which requires Java 8. This API is mature and provides many new features that are not available out-of-the-box in the 2.x line. It also provides the functionality of the ySVG, yExport and yBPMN package as source code application, therefore the extension packages are no longer required.

We recommend to start development with the next-generation yFiles for Java in new Java Swing projects.
Especially in projects that don't need to support legacy Java versions before Java 8, this is the recommended way to realize your application's diagram visualization part.

Release Notes

yFiles for Java version 2.18 is the newest major release available in the yFiles for Java 2.x technology line. It contains many exciting new features compared to older versions and is almost completely API compatible with the 2.17 series.
(See also the entire yFiles for Java change log.)

Technical Requirements

  • Oracle J2SDK 1.4 or higher is needed for software development with yFiles.
  • Oracle J2RE 1.4 or higher is needed to execute programs using yFiles.
  • A browser to view the HTML documentation.

yFiles 2.18 - Changes Since 2.17

yFiles for Java 2.18 Release Notes

New layout support for node types

yFiles for Java 2.18 Release Notes

New support for rerouting of edge paths

New Features

Layout

  • Added new scope SCOPE_MAINLY_SUBSET_GEOMETRIC for the organic layout algorithm. In addition to the actual subset nodes, this scope may to some degree move nodes that are geometrically close to one of the nodes in the actual subset. The existing scope SCOPE_MAINLY_SUBSET is similar, but it does determine the closeness of other nodes by using the graph structure and not the current geometry (i.e. location).
  • The SmartOrganicLayouter has a new clustering policy property, which allows to specify the clustering algorithm that is applied (if any). Three clustering algorithms, namely louvain modularity, edge betweenness and label propagation are offered. See setClusteringPolicy. Previously, the automatic clustering was always based on edge betweenness. By default, the automatic clustering is disabled (CLUSTERING_POLICY_NONE).
  • The SmartOrganicLayouter now allows to define node types that control the detection of substructures (e.g. stars, parallel structures). When types are defined, only nodes of the same type can form a substructure. To define types, register a data provider with the graph with key NODE_TYPE_DPKEY. For star-like and parallel substructures, it is also possible to have a single substructure with nodes of different types, see properties setParallelSubstructureTypeSeparationEnabled and setStarSubstructureTypeSeparationEnabled. The algorithm still tries to highlight the different types by, e.g., placing nodes of the same type closer together or on the same circle.
  • The OrthogonalLayouter and DirectedOrthogonalLayouter now allow to define node types that control the detection of substructures (i.e. trees, chains, cycles). When types are defined, only nodes of the same type can form a substructure. To define types, register a data provider with the graph with key NODE_TYPE_DPKEY.
  • The GenericTreeLayouter and TreeLayouter now support node types. The types influence the ordering of child nodes and the subtrees rooted at them such that nodes of the same type are preferably placed next to each other. Node types are a weak criterion, i.e., if the ordering is given by other constraints, these are prioritized. To define types, register a data provider with the graph with key NODE_TYPE_DPKEY.
  • The IncrementalHierarchicLayouter now supports node types. The types influence the ordering of nodes within their layers as a subordinate optimization criteria. More precisely, nodes of the same type are more likely to be placed next to each other if this does not violate with other constraints.
  • Added NodeTypeAwareSequencer that can be specified for the SingleCycleLayouter and ensures that the nodes of a circle are separated by type.
  • The ComponentLayouter now supports node types. The types influence the arrangement and ordering of the the components such that components consisting mostly of nodes of the same type are put close to other components consisting of nodes of that type. To define types, register a data provider with the graph with key NODE_TYPE_DPKEY.
  • EdgeRouter, BusRouter and ChannelEdgeRouter: Added a feature that automatically determines whether or not a new path should be calculated for a certain edge. The feature is controlled via the new routing policy properties, see EdgeLayoutDescriptor.setRoutingPolicy, BusDescriptor.setRoutingPolicy and ChannelEdgeRouter.setRoutingPolicy respectively. The decision is based on the quality of the existing routes - edges with strict violations of the routing style or that intersect other elements will be selected for routing.
  • EdgeRouter: Added the new penalty property setSketchViolationPenalty, which defines the cost for a deviation from the original edge path if the new routing policy is set to ROUTING_POLICY_SEGMENTS_AS_NEEDED.
  • PartialLayouter: Added new property setMovingFixedElementsAllowed that specifies whether or not the algorithm may move fixed elements. This often yields a better layout quality even though the preservation of the mental map declines because the fixed elements can change their position.

Algorithms

Improvements

Layout

Bugfixes

Layout

Viewer

  • DropSupport: Fixed drag and drop behavior when using one DropSupport instance for multiple Graph2DView instances. When dragging data over one view into another view, all drag and drop events were incorrectly delivered to the first view in this case.
  • MoveLabelMode: Fixed NullPointerException that occurs when dragging a label whose model does not have any candidates.

Incompatible Changes

API Changes

Behavior Changes

Why, how, what? —
Just ask the diagramming experts!

Our team is happy to advise you – no strings attached. Let's talk about your project and find the perfect solution for your needs!

E-mail: hello@yworks.com

The data you enter will only be used to contact you regarding your request.
Learn more in our privacy policy.