yFiles for Java Release Notes

yFiles for Java 3.0 is the newest major release available. The latest release is version 3.0.0.4. (See also the entire yFiles for Java 3.0 change log.)

Technical Requirements

  • To develop yFiles for Java 3.0-based applications, a Java 8 (or greater) Java Development Kit (JDK) is required.
  • To run yFiles for Java 3.0-based applications, a Java 8 (or greater) Java Runtime Environment (JRE) is required.

yFiles for Java 3.0 - Major Changes Compared to the 2.x Line

General

  • The Java language level has been risen from Java 1.3 to Java 8 and therefore the full power of features like enums, generics, lambda expressions, default methods, and stream support is used.
  • A more concise package structure and naming convention is used throughout the API.
  • Revised GraphML format similar to the one used in other yFiles libraries (e.g. yFiles for JavaFX, yFiles for HTML, and yFiles WPF/yFiles.NET).
  • More flexible GraphML mechanism that automatically writes shared data only once and simplifies writing of custom data objects.

Model

  • Instead of using realizers for all non-structural information there is now a clean separation of geometry and rendering. The layout (i.e., the bounds) of graph elements is part of the model while the rendering is handled by so-called styles and style renderers.
  • Labels, ports, and bends are no properties of the realizer of their owning node or edge anymore, but elements of the graph structure.
  • IGraph has integrated support for grouping, which is now always enabled.
  • A more powerful folding mechanism is used. The idea behind is having a so-called master graph which represents the entire graph where all group nodes are open and using one or more managed "views" which themselves maintain a managed copy of the master graph where the group nodes may be collapsed.

Viewer

  • A flexible viewer architecture with a scene graph is used which maintains the render order of all visual objects including background, selection, user-defined decorations, and the graph items themselves, and is also used for hit-testing of elements.
  • User interaction isn't handled for graph elements only anymore and offers detailed, easy-to-use configuration options.
  • Typical user actions like cut/copy/paste are represented by Command implementations which may be conveniently bound to keyboard shortcuts or Swing controls as well as executed programmatically.

Layout

  • Type-safe enum values replace the integer values defined in constants of the various layout algorithm classes.
  • A new LayoutData mechanism simplifies layout configuration, without the need to manually register DataProvider on the graph.